Синтаксис функции effect (Direct3D 10)
Функция эффекта написана на языке HLSL и объявлена с помощью следующего синтаксиса.
Синтаксис
ReturnTypeFunctionName ( [ ArgumentList ] )
{
- \[ *Statements* \]
};
Имя | Описание |
---|---|
ReturnType | Любой тип HLSL |
FunctionName | Строка ASCII, однозначно идентифицирующая имя функции шейдера. |
ArgumentList | Один или несколько аргументов, разделенных запятыми (см. раздел Аргументы функции (DirectX HLSL)). |
Операторы | Один или несколько операторов (см. инструкции (DirectX HLSL)), составляющие тело функции. Если функция определена без тела, она считается прототипом; и должны быть переопределены с текстом перед использованием. |
Функция эффекта может быть шейдером или просто функцией, вызываемой шейдером. Функция однозначно идентифицируется по имени, типам ее параметров и целевой платформе; Таким образом, функции могут быть перегружены. Любая допустимая функция HLSL должна соответствовать этому формату; Более подробный список синтаксиса функций HLSL см. в разделе Функции (DirectX HLSL).
Пример
В примере BasicHLSL10 используется как пиксельный шейдер, так и вершинный шейдер. Функция шейдера пикселей называется RenderScenePS и показана ниже.
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;
}
Связанные темы