Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
HLSL-funktioner deklareras med följande syntax.
[StorageClass] [clipplanes()] [exakt] Return_Value Name ( [ArgumentList] ) ) [: Semantic] { [StatementBlock] };
Parametrar
-
StorageClass
-
Modifierare som omdefinierar en funktionsdeklaration. infogade är för närvarande det enda modifierarvärdet. Modifierarvärdet måste vara infogat eftersom det också är standardvärdet. Därför är en funktion infogad oavsett om du anger infogadoch alla funktioner i HLSL är infogade. En infogad funktion genererar en kopia av funktionstexten (vid kompilering) för varje funktionsanrop. Detta görs för att minska omkostnaderna för att anropa funktionen.
-
Clipplanes
-
Valfri lista över klippplan, som är upp till 6 användardefinierade klippplan. Det här är en alternativ mekanism för SV_ClipDistance som fungerar på funktionsnivå 9_x och högre.
-
namn
-
En ASCII-sträng som unikt identifierar namnet på skuggningsfunktionen.
-
ArgumentList
-
Valfri argumentlista, som är en kommaavgränsad lista över argument skickas till en funktion.
-
semantisk
-
Valfri sträng som identifierar den avsedda användningen av returdata (se Semantik (DirectX HLSL)).
-
StatementBlock
-
Valfria -instruktioner som utgör funktionens brödtext. En funktion som definieras utan en brödtext kallas för en funktionsprototyp. brödtexten för en prototypfunktion måste definieras någon annanstans innan funktionen kan anropas.
Returvärde
Returtypen kan vara någon av dessa HLSL-typer.
Anmärkningar
Syntaxen på den här sidan beskriver nästan alla typer av HLSL-funktioner, detta inkluderar hörnskuggor, pixelskuggor och hjälpfunktioner. Även om en geometriskuggning också implementeras med en funktion är dess syntax lite mer komplicerad, så det finns en separat sida som definierar en geometrisk skuggningsfunktionsdeklaration (se Geometry-Shader Object (DirectX HLSL)).
En funktion kan överbelastas så länge den ges en unik kombination av parametertyper och/eller parameterordning. HLSL implementerar också ett antal inbyggda eller inbyggda funktioner.
Du kan ange användarspecifika klippplan med urklippsplan attribut. Windows tillämpar dessa klippplan på alla primitiver som ritas. Det clipplanes-attributet fungerar som SV_ClipDistance men fungerar på all maskinvara funktionsnivå 9_x och högre. Mer information finns i Användarklippplan på funktionsnivå 9 maskinvara.
Exempel
Det här exemplet kommer från BasicHLSL10.fx från BasicHLSL10 Sample.
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;
}
Det här exemplet från AdvancedParticles.fx från AdvancedParticles Sample, illustrerar hur du använder en semantisk för returtypen.
//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{
return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}
Relaterade ämnen