6.1 高级着色语言HLSL简介
2024-06-26
30
0
HLSL:High LevelvShading Language,即高级着色语言。
Direct3D11管道的核心是其各种可编程着色器阶段。这个阶段是绝大多数渲染任务进行的地方,也是CPU的能力和灵活性可供用户使用的手段。虽然各种API函数可以操纵着色器程序将被执行的状态,但着色器功能和行为的实际创作并不是用这些API完成的。相反,着色器程序(也称为简单的着色器)是使用一种称为高级着色语言特殊设计的编程语言编写的。
高级着色语言(通常缩写为HLSL)主要是一种具有简化特征集的C/C++派生语言。行终止的分号、语句块的大括号以及C风格的函数和结构声明等使C或C++程序员立即熟悉该语言。主要的区别是不支持指针类型和操作,以及C++风格的模板。此外,该语言不支持像在C或C++中一样的动态内存分配。程序是通过编写一个作为入口点的函数来编写的。此代码在运行时执行,并一直运行到函数结束。应该注意的是,在D3D11中,在着色器绑定到管道之前,总是提前编译该语言,而不是像脚本语言那样进行动态解释。为了支持静态编译,编译器具有C风格的预处理器。预处理器支持常见用途,如宏定义、条件编译和include语句。
D3D11中HLSL的一个关键功能是使用相同的语言为所有着色器阶段编写着色器程序。这为所有阶段提供了一组一致的标准功能,允许在为管道的每个阶段编写的着色器程序之间共享公共代码。使用高级语言编写还可以抽象底层图形硬件的许多低级细节,从而允许着色器程序从各种图形硬件中提取性能。