Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As funções HLSL são declaradas com a sintaxe a seguir.
[StorageClass] [clipplanes()] [preciso] Return_Value Name ( [ArgumentList] ) [: semântico ] { [StatementBlock] };
Parâmetros
-
StorageClass
-
Modificador que redefine uma declaração de função. embutido atualmente é o único valor modificador. O valor do modificador deve ser embutido porque também é o valor padrão. Portanto, uma função está embutida independentemente de você especificar embutido e todas as funções no HLSL estão embutidas. Uma função embutida gera uma cópia do corpo da função (ao compilar) para cada chamada de função. Isso é feito para diminuir a sobrecarga de chamar a função.
-
de Recortes
-
Lista opcional de planos de clipe, que é de até 6 planos de clipe especificados pelo usuário. Esse é um mecanismo alternativo para SV_ClipDistance que funciona em nível de recurso 9_x e superior.
-
Name
-
Uma cadeia de caracteres ASCII que identifica exclusivamente o nome da função de sombreador.
-
ArgumentList
-
Lista de argumentos opcionais, que é uma lista separada por vírgulas de argumentos passados para uma função.
-
semântica
-
Cadeia de caracteres opcional que identifica o uso pretendido dos dados de retorno (consulte de Semântica (DirectX HLSL).
-
StatementBlock
-
Instruções opcionais que compõem o corpo da função. Uma função definida sem um corpo é chamada de protótipo de função; o corpo de uma função de protótipo deve ser definido em outro lugar antes que a função possa ser chamada.
Valor retornado
O tipo de retorno pode ser qualquer um desses tipos de HLSL .
Observações
A sintaxe nesta página descreve quase todos os tipos de função HLSL, incluindo sombreadores de vértice, sombreadores de pixel e funções auxiliares. Embora um sombreador de geometria também seja implementado com uma função, sua sintaxe é um pouco mais complicada, portanto, há uma página separada que define uma declaração de função de sombreador geometry (consulte Geometry-Shader Object (DirectX HLSL)).
Uma função pode ser sobrecarregada desde que seja dada uma combinação exclusiva de tipos de parâmetro e/ou ordem de parâmetro. O HLSL também implementa uma série de funções internas ou intrínsecas.
Você pode especificar planos de clipe específicos do usuário com o atributo de recortes. O Windows aplica esses planos de clipe a todos os primitivos desenhados. O atributo de recortes funciona como SV_ClipDistance, mas funciona em todos os de hardware 9_x de recursos e superiores. Para obter mais informações, consulte Planos de clipe de usuário emde hardware de nível 9 do recurso.
Exemplos
Este exemplo é de BasicHLSL10.fx do de exemplo BasicHLSL10.
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Diffuse : COLOR0;
float2 TextureUV : TEXCOORD0;
};
VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
VS_OUTPUT Output;
...
return Output;
}
Este exemplo de AdvancedParticles.fx do de exemploAdvancedParticles ilustra o uso de uma semântica para o tipo de retorno.
//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{
return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}
Tópicos relacionados
-
do Functions (DirectX HLSL)