Sintaxe de declaração de fragmento (Direct3D 9 HLSL)
Cada função HLSL (Linguagem de Sombreador de Alto Nível) da Microsoft pode ser convertida em um fragmento de sombreador com a adição de uma declaração de fragmento.
Sintaxe
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
em que:
Valor | Descrição |
---|---|
fragmentKeyword | Palavra-chave necessária. Pixelfragment ou vérticefragment. |
FragmentName | Uma cadeia de caracteres de texto ASCII que especifica o nome do fragmento compilado. |
compile_fragment | Palavra-chave necessária. |
shaderProfile | O modelo de sombreador no qual compilar. Qualquer perfil de sombreador de vértice válido (consulte D3DXGetVertexShaderProfile) ou perfil de sombreador de pixel (consulte D3DXGetPixelShaderProfile). |
FunctionName() | O nome da função de sombreador, seguido por parênteses. |
Os parâmetros de fragmento compartilhados são marcados pela adição de um prefixo 'r_' à 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();
Neste exemplo, a semântica r_PosWorld e r_NormalWorld identificam que esses dois parâmetros são parâmetros compartilhados entre outros fragmentos.
Observação
O vinculador de fragmento era uma tecnologia do Microsoft Direct3D 9 no D3DX 9. O vinculador de fragmento era uma ferramenta (Flink.exe), uma API D3DX 9 e um aprimoramento de HLSL. O vinculador de fragmento foi removido a partir da versão do SDK do DirectX de agosto de 2009. O vinculador de fragmento nunca se aplicou ao Microsoft Direct3D 10, Microsoft Direct3D 10.1 ou Microsoft Direct3D 11.
Tópicos relacionados