Sintaxis de declaración de fragmento (Direct3D 9 HLSL)
Cada función de Lenguaje de sombreador de alto nivel (HLSL) de Microsoft se puede convertir en un fragmento de sombreador con la adición de una declaración de fragmento.
Sintaxis
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
donde:
Value | Descripción |
---|---|
fragmentKeyword | Palabra clave requerida. Pixelfragment o vertexfragment. |
FragmentName | Cadena de texto ASCII que especifica el nombre del fragmento compilado. |
compile_fragment | Palabra clave requerida. |
shaderProfile | Modelo de sombreador con el que se va a compilar. Cualquier perfil de sombreador de vértices válido (vea D3DXGetVertexShaderProfile) o perfil de sombreador de píxeles (vea D3DXGetPixelShaderProfile). |
FunctionName() | Nombre de la función de sombreador, seguido de paréntesis. |
Los parámetros de fragmento compartido se marcan agregando un prefijo "r_" a su semántica.
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();
En este ejemplo, el r_PosWorld y r_NormalWorld semántica identifican que estos dos parámetros son parámetros compartidos entre otros fragmentos.
Nota
El enlazador de fragmentos era una tecnología de Microsoft Direct3D 9 en D3DX 9. El enlazador de fragmentos era una herramienta (Flink.exe), una API D3DX 9 y una mejora de HLSL. El enlazador de fragmentos se quitó a partir de la versión del SDK de DirectX de agosto de 2009. El enlazador de fragmentos nunca se aplicó a Microsoft Direct3D 10, Microsoft Direct3D 10.1 o Microsoft Direct3D 11.
Temas relacionados