Freigeben über


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.

 

Shadermodell 3 (DirectX HLSL)