Sdílet prostřednictvím


Argumenty funkce

Funkce přebírá jeden nebo více vstupních argumentů; Pomocí následující syntaxe deklarujte jednotlivé argumenty.

[InputModifier] Název typu [: Sémantic] [InterpolationModifier] [= Initializers]

[Modifikátor] Název typu [: Sémantický] [: Modifikátor interpolace] [= Inicializátory]]

Pokud existuje více argumentů funkce, jsou oddělené čárkami.

Parametry

Položka Popis
InputModifier
Volitelný termín, který identifikuje argument jako vstup, výstup nebo obojí.
Hodnota Popis
v destinaci Pouze vstup
inout Vstup a výstup
Pouze výstup
uniformní Zadávání pouze konstantních dat

Parametry se vždy předávají podle hodnoty. indikuje, že hodnota parametru by měla být zkopírována z volající aplikace před zahájením funkce. out označuje, že poslední hodnota parametru by měla být zkopírována a vrácena volající aplikaci při vrácení funkce. inout je zkratka pro určení obou.

Jednotná hodnota pochází z konstantního registru; každé vyvolání shaderu vrcholů nebo pixelového shaderu uvidí stejnou počáteční hodnotu pro jednotnou proměnnou. Globální proměnné se považují za deklarované jednotně. Pro funkce jiné než nejvyšší úrovně je uniforma synonymem v. Pokud není zadáno žádné použití parametru, předpokládá se, že použití parametru je v.

typ

Typ argumentu; může být libovolný platný typ HLSL typ.

názvu

Řetězec ASCII, který jednoznačně identifikuje název funkce shaderu.

sémantické

Volitelný řetězec, který identifikuje zamýšlené použití dat (viz sémantika (DirectX HLSL)).

InterpolationModifier

Volitelný modifikátor interpolace , který umožňuje shaderu určit metodu interpolace. Modifikátor interpolace argumentu funkce se vztahuje pouze na argument použitý jako vstup pro funkci shaderu pixelů.

inicializátory

Volitelné hodnoty pro inicializaci; k inicializaci datových typů s více komponentou se vyžaduje více hodnot.

Poznámky

Argumenty funkce jsou uvedeny v seznamu argumentů oddělených čárkami v deklaraci funkce. Stejně jako ve funkcích jazyka C musí mít každý argument deklarovaný název parametru a typ; Argument funkce HLSL může volitelně obsahovat sémantickou, počáteční hodnotu a vstup shaderu pixelů může obsahovat interpolační typ.

Typ argumentu funkce může být struktura, která může obsahovat modifikátor interpolace jednotlivých členů. Pokud má argument funkce také modifikátor interpolace, modifikátor argumentu funkce přepíše modifikátory interpolace deklarované v rámci typu.

Příklady

Tento příklad (z ukázky BasicHLSL10) znázorňuje jednotné a ne uniformní vstupy do funkce shaderu vrcholů.

VS_OUTPUT RenderSceneVS( 
  float4 vPos : POSITION,
  float3 vNormal : NORMAL,
  float2 vTexCoord0 : TEXCOORD,
  uniform int nNumLights,
  uniform bool bTexture,
  uniform bool bAnimate )
{
  ...
}

Tento příklad (z ContentStreaming Sample) používá vstupní strukturu k předání argumentů funkci shaderu pixelů.

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

funkcí (DirectX HLSL)