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