Freigeben über


Syntax der Fragmentdeklaration (Direct3D 9 HLSL)

Jede Microsoft High Level Shader Language (HLSL)-Funktion kann mit der Hinzufügung einer Fragmentdeklaration in ein Shaderfragment konvertiert werden.

Syntax

fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();

wo:

Wert Beschreibung
fragmentKeyword Erforderliches Schlüsselwort. Pixel-Fragment oder Vertex-Fragment.
FragmentName Eine ASCII-Textzeichenfolge, die den kompilierten Fragmentnamen angibt.
Fragment kompilieren Erforderliches Schlüsselwort.
shaderProfile Das Shadermodell, mit dem kompiliert werden soll. Ein beliebiges gültiges Vertex-Shaderprofil (siehe D3DXGetVertexShaderProfile) oder Pixelshaderprofil (siehe D3DXGetPixelShaderProfile).
FunctionName() Der Name der Shaderfunktion, gefolgt von Klammern.

 

Freigegebene Fragmentparameter werden gekennzeichnet, indem ihrer Semantik ein Präfix „r_“ hinzugefügt wird.

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 diese beiden Parameter gemeinsame Parameter unter anderen Fragmenten sind.

Anmerkung

Fragmentlinker 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 August 2009 im DirectX SDK nicht mehr unterstützt. Fragmentlinker wurde nie auf Microsoft Direct3D 10, Microsoft Direct3D 10.1 oder Microsoft Direct3D 11 angewendet.

 

Shader Model 3 (DirectX HLSL)