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


Синтаксис функции Effect (Direct3D 11)

Функция эффекта написана на языке HLSL и объявляется с помощью синтаксиса, описанного в этом разделе.

Синтаксис

ReturnTypeFunctionName ( [ ArgumentList ] )

{

\[ *Statements* \]

};

Имя Описание
ReturnType Любой тип HLSL
FunctionName Строка ASCII, однозначно идентифицирующая имя функции шейдера.
ArgumentList Один или несколько аргументов, разделенных запятыми (см. раздел Аргументы функций (DirectX HLSL)).
Операторы Один или несколько операторов (см. Инструкции (DirectX HLSL)), которые составляют тело функции. Если функция определена без текста, она считается прототипом; и должны быть переопределены с текстом перед использованием.

 

Функция эффекта может быть шейдером или просто функцией, вызываемой шейдером. Функция уникально идентифицируется по имени, типам ее параметров и целевой платформе; поэтому функции могут быть перегружены. Любая допустимая функция HLSL должна соответствовать этому формату; Более подробный список синтаксиса функций HLSL см. в разделе Функции (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;
}

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