Поделиться через


Синтаксис функции 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;
}

Формат эффекта