Függvénydeklaráció szintaxisa
A HLSL-függvények a következő szintaxissal vannak deklarálva.
[StorageClass] [clipplanes()] [pontos] Return_Value Name ( [ArgumentList] ) [: Szemantikai] { [StatementBlock] };
Paraméterek
-
StorageClass
-
Módosító, amely újradefiniálja a függvénydeklarációt. beágyazott jelenleg az egyetlen módosító érték. A módosító értéknek beágyazott kell lennie, mert ez is az alapértelmezett érték. Ezért a függvények beágyazottak, függetlenül attól, hogy megadja-e beágyazott, és a HLSL összes függvénye beágyazott. A beágyazott függvények minden függvényhíváshoz létrehoznak egy másolatot a függvény törzséről (összeállításkor). Ez a függvény meghívásának többletterhelésének csökkentése érdekében történik.
-
clipplanes
-
Nem kötelező a vágósíkok listája, amely legfeljebb 6 felhasználó által megadott vágósík. Ez az SV_ClipDistance alternatív mechanizmusa, amely funkciószinten 9_x és magasabb szinten működik.
-
név
-
ASCII-sztring, amely egyedileg azonosítja az árnyékolófüggvény nevét.
-
Argumentumlista
-
Nem kötelező argumentumlista, amely argumentumok vesszővel tagolt listája, függvénybe továbbítva.
-
szemantikai
-
Nem kötelező sztring, amely azonosítja a visszatérési adatok tervezett használatát (lásd Szemantika (DirectX HLSL)).
-
StatementBlock
-
Nem kötelező utasítások, amelyek a függvény törzsét alkotják. A törzs nélkül definiált függvényeket függvény prototípusának nevezzük; a prototípusfüggvény törzsét máshol kell meghatározni, mielőtt a függvény meghívható lenne.
Visszaadott érték
A visszatérési típus az alábbi HLSL-típusok bármelyike lehet.
Megjegyzések
Az ezen a lapon található szintaxis a HLSL függvény szinte minden típusát ismerteti, beleértve a csúcsok árnyékolóit, a képpontárnyékolókat és a segédfüggvényeket. Bár a geometriai árnyékolót egy függvénnyel is implementálják, a szintaxisa kissé bonyolultabb, ezért van egy külön oldal, amely egy geometriai árnyékolófüggvény-deklarációt határoz meg (lásd Geometry-Shader Objektum (DirectX HLSL)).
A függvények túlterhelhetők mindaddig, amíg a paramétertípusok és/vagy paramétersorrendek egyedi kombinációját kapják. A HLSL számos beépített függvényt is implementál, vagy belső függvényeket.
A clipplanes attribútummal megadhatja a felhasználóspecifikus vágósíkokat. A Windows ezeket a vágósíkokat az összes rajzolt primitívre alkalmazza. A clipplanes attribútum a SV_ClipDistance hasonlóan működik, de minden hardveres funkciószinten 9_x és magasabb szinten működik. További információ: Felhasználói klipsíkok a 9. szintű hardveres.
Példák
Ez a példa a BasicHLSL10.fx BasicHLSL10 minta.
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Diffuse : COLOR0;
float2 TextureUV : TEXCOORD0;
};
VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
VS_OUTPUT Output;
...
return Output;
}
Az AdvancedParticles.fx AdvancedParticles Mintacímű példája a visszatérési típus szemantikai használatával szemlélteti.
//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{
return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}
Kapcsolódó témakörök