HLSL 帮助程序
为了帮助效果作者编写可链接像素着色器,d2d1effecthelpers.hlsli 以帮助程序方法和宏的形式定义一组 HLSL 语言扩展。
若要向项目添加 d2d1effecthelpers.hlsli,请在 HLSL 文件中添加 #include 语句。 d2d1effecthelpers.hlsli 与其他 Direct2D 标头(如 d2d1.h)位于同一位置;可以通过将宏 $(WindowsSDK_IncludePath) 添加到“其他包含目录”属性,从 HLSL 文件的属性页中引用它。 请注意,#include 语句必须在定义任何预处理器指令(如D2D_INPUT_COUNT)之后。
#include <d2d1effecthelpers.hlsli>
Direct2D 不支持链接计算或顶点着色器。 但是,如果效果同时使用顶点着色器和像素着色器,仍可链接像素着色器的输出。
预处理器指令
预处理器指令是传达有关效果的信息所必需的。 这包括每个输入的输入数和采样类型。 应在相关着色器入口点上方的效果着色器代码中定义以下值(如果适用)。
-
D2D_INPUT_COUNT <N>
:声明效果的纹理输入数。 如果效果具有可变数量的输入,则必须将此值适当限定为每个着色器入口点。 定义此值是必需的。 -
D2D_INPUT<N>_SIMPLE
:声明第 N 个输入以使用简单采样。 如果未定义,则第 N 个输入默认为复杂。 定义此值是可选的。 -
D2D_INPUT<N>_COMPLEX
:声明第 N 个输入以使用复杂采样。 如果未定义,则第 N 个输入默认为复杂。 定义此值是可选的。 -
D2D_REQUIRES_SCENE_POSITION
:指示着色器函数调用使用场景位置值的帮助程序方法(即 D2DGetScenePosition helper 函数)。 仅在必要时才应包含此参数,因为每个链接着色器只能使用一个函数。 定义此值是可选的。 -
D2D_CUSTOM_ENTRY
:指示像素着色器函数使用自定义顶点着色器的输出,因此将声明其输入参数。 所有自定义顶点着色器输入都使用复杂采样,并且不能使用另一个着色器函数的输出(即它们仅可链接后)。 定义此值是可选的。
例如:
#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
帮助程序函数
帮助程序函数用作某些本机 HLSL 内部函数的替代函数。 在编译时,Direct2D 会将这些帮助程序函数重新定义为适当的版本,具体取决于编译目标类型(完全着色器或导出函数)。
帮助程序函数:
D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY
相关主题