Megosztás a következőn keresztül:


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

Functions (DirectX HLSL)