Condividi tramite


Sintassi della funzione effect (Direct3D 11)

Una funzione di effetto viene scritta in HLSL ed è dichiarata con la sintassi descritta in questa sezione.

Sintassi

ReturnTypeFunctionName ( [ ArgumentList ] )

{

\[ *Statements* \]

};

Nome Descrizione
ReturnType Qualsiasi tipo HLSL
FunctionName Stringa ASCII che identifica in modo univoco il nome della funzione shader.
ArgumentList Uno o più argomenti separati da virgole (vedere Argomenti della funzione (DirectX HLSL)).
Istruzioni Una o più istruzioni (vedere Istruzioni (DirectX HLSL)) che costituiscono il corpo della funzione. Se una funzione viene definita senza un corpo, viene considerata un prototipo; e devono essere ridefiniti con un corpo prima dell'uso.

 

Una funzione di effetto può essere uno shader oppure può essere semplicemente una funzione chiamata da uno shader. Una funzione viene identificata in modo univoco dal nome, dai tipi dei relativi parametri e dalla piattaforma di destinazione; pertanto, le funzioni possono essere sottoposte a overload. Qualsiasi funzione HLSL valida deve adattarsi a questo formato; per un elenco più dettagliato della sintassi per le funzioni HLSL, vedere Funzioni (DirectX HLSL).

Esempio

Di seguito è riportato un esempio di funzione pixel shader.

       
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;
}

Formato effetto