Funktionsargument
En funktion tar ett eller flera indataargument. använd följande syntax för att deklarera varje argument.
[InputModifier] Type Name [: Semantic] [InterpolationModifier] [= Initializers] |
[Modifierare] Typnamn [: Semantisk] [: Interpolationsmodifierare] [= Initializer(s)]
Om det finns flera funktionsargument avgränsas de med kommatecken.
Parametrar
Sak | Beskrivning | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
InputModifier |
Valfri term som identifierar ett argument som indata, utdata eller båda.
Parametrar skickas alltid efter värde. i anger att värdet för parametern ska kopieras från det anropande programmet innan funktionen börjar. out anger att det sista värdet för parametern ska kopieras ut och returneras till det anropande programmet när funktionen returneras. inout är en förkortning för att ange båda. Ett enhetligt värde kommer från ett konstant register. varje hörnskuggning eller pixelskuggningsanrop ser samma initiala värde för en enhetlig variabel. Globala variabler behandlas som om de deklareras som enhetliga. För icke-toppnivåfunktioner är uniform synonymt med i. Om ingen parameteranvändning anges antas parameteranvändningen vara i. |
||||||||||
typ |
Argumenttypen; kan vara valfri giltig HLSL-typ. |
||||||||||
namn |
En ASCII-sträng som unikt identifierar namnet på skuggningsfunktionen. |
||||||||||
semantisk |
Valfri sträng som identifierar den avsedda användningen av data (se Semantik (DirectX HLSL)). |
||||||||||
InterpolationModifier |
Valfritt interpoleringsmodifierare som gör att en skuggning kan fastställa interpoleringsmetoden. En interpoleringsmodifierare för ett funktionsargument gäller endast för ett argument som används som indata till en pixelskuggfunktion. |
||||||||||
initierare |
Valfria värden för initiering. flera värden krävs för att initiera datatyper med flera komponenter. |
Anmärkningar
Funktionsargument visas i en kommaavgränsad argumentlista i en funktionsdeklaration. Precis som i C-funktioner måste varje argument ha ett parameternamn och en deklarerad typ. Ett argument till en HLSL-funktion kan eventuellt innehålla en semantik, ett initialt värde och en pixelskuggningsindata kan innehålla en interpolationstyp.
typ för ett funktionsargument kan vara en struktur, som kan innehålla en interpoleringsmodifierare per medlem. Om funktionsargumentet också har en interpoleringsmodifierare åsidosätter funktionsargumentmodifieraren interpoleringsmodifierare som deklarerats i typen .
Exempel
Det här exemplet (från BasicHLSL10 Sample) illustrerar enhetliga och icke-enhetliga indata till en hörnskuggfunktion.
VS_OUTPUT RenderSceneVS(
float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
...
}
I det här exemplet (från ContentStreaming Sample) används en indatastruktur för att skicka argument till en pixelskuggningsfunktion.
VSBasicIn input
struct VSBasicIn
{
float4 Pos : POSITION;
float3 Norm : NORMAL;
float2 Tex : TEXCOORD0;
};
PSBasicIn VSBasic(VSBasicIn input)
{
...
}