效果函数语法 (Direct3D 11)

效果函数以 HLSL 编写,并使用本节中所述的语法进行声明。

语法

ReturnTypeFunctionName ( [ ArgumentList ] )

{

\[ *Statements* \]

};

名称 说明
ReturnType 任何 HLSL 类型
FunctionName 唯一标识着色器函数名称的 ASCII 字符串。
ArgumentList 一个或多个参数,用逗号分隔, (请参阅 函数参数 (DirectX HLSL) )
语句 一个或多个语句 (请参阅构成函数主体 的语句 (DirectX HLSL) ) 。 如果函数是在没有主体的情况下定义的,则它被视为原型;在使用之前,必须使用正文重新定义 和 。

 

效果函数可以是着色器,也可以只是着色器调用的函数。 函数由其名称、参数类型和目标平台唯一标识;因此,函数可以重载。 任何有效的 HLSL 函数都应符合此格式;有关 HLSL 函数语法的更详细列表,请参阅 Functions (DirectX HLSL)

示例

下面是像素着色器函数的示例。

       
PS_OUTPUT RenderScenePS( VS_OUTPUT In,
                         uniform bool bTexture ) 
{ 
    PS_OUTPUT Output;

    // Lookup mesh texture and modulate it with diffuse
    if( bTexture )
        Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) *  
                              In.Diffuse;
    else
        Output.RGBColor = In.Diffuse;

    return Output;
}

效果格式