Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Verwandte Themen