Syntax der Fragmentdeklaration (Direct3D 9 HLSL)
Jede HlSL-Funktion (Microsoft High Level Shader Language) kann in ein Shaderfragment konvertiert werden, wobei eine Fragmentdeklaration hinzugefügt wird.
Syntax
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
Dabei gilt:
Wert | BESCHREIBUNG |
---|---|
fragmentKeyword | Erforderliche Schlüsselwort (keyword). Pixelfragmentierung oder Vertexfragment. |
FragmentName | Eine ASCII-Textzeichenfolge, die den kompilierten Fragmentnamen angibt. |
compile_fragment | Erforderliche Schlüsselwort (keyword). |
shaderProfile | Das Shadermodell, für das kompiliert werden soll. Beliebiges gültiges Vertexshaderprofil (siehe D3DXGetVertexShaderProfile) oder Pixelshaderprofil (siehe D3DXGetPixelShaderProfile). |
FunctionName() | Der Name der Shaderfunktion, gefolgt von Klammern. |
Freigegebene Fragmentparameter werden gekennzeichnet, indem sie ihrer Semantik ein präfix "r_" hinzufügen.
void AmbientDiffuse( float3 vPosWorld: r_PosWorld,
float3 vNormalWorld: r_NormalWorld,
out float4 vColor: COLOR0 )
{
// Compute the light vector
float3 vLight = normalize( g_vLightPosition - vPosWorld );
// Compute the ambient and diffuse components of illumination
vColor = g_vLightColor * g_vMaterialAmbient;
vColor += g_vLightColor * g_vMaterialDiffuse * saturate( dot( vLight, vNormalWorld ) );
}
vertexfragment AmbientDiffuseFragment = compile_fragment vs_1_1 AmbientDiffuse();
In diesem Beispiel identifizieren die r_PosWorld und r_NormalWorld Semantik, dass es sich bei diesen beiden Parametern um freigegebene Parameter unter anderen Fragmenten handelt.
Hinweis
Fragment Linker war eine Microsoft Direct3D 9-Technologie in D3DX 9. Fragmentlinker war ein Tool (Flink.exe), eine D3DX 9-API und eine HLSL-Erweiterung. Der Fragmentlinker wurde ab dem DirectX SDK-Release vom August 2009 gelöscht. Fragmentlinker wurde nie auf Microsoft Direct3D 10, Microsoft Direct3D 10.1 oder Microsoft Direct3D 11 angewendet.
Zugehörige Themen