Partilhar via


Sintaxe da declaração de função

As funções HLSL são declaradas com a sintaxe a seguir.

[StorageClass] [clipplanes()] [preciso] Return_Value Nome ( [ArgumentList] ) [: Semantic] { [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 embutida e todas as funções em 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.

Clipplanes

Lista opcional de planos de clipe, que é de até 6 planos de clipe especificados pelo usuário. Este é um mecanismo alternativo para SV_ClipDistance que funciona em nível de recurso 9_x e superior.

Nome

Uma cadeia de caracteres ASCII que identifica exclusivamente o nome da função de sombreador.

ArgumentList

Lista de argumentos opcional, 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 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 protótipo deve ser definido em outro lugar antes que a função possa ser chamada.

Valor de retorno

O tipo de retorno pode ser qualquer um desses tipos HLSL.

Comentários

A sintaxe nesta página descreve quase todos os tipos de função HLSL, isso inclui 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 de geometria (consulte Geometry-Shader Object (DirectX HLSL)).

Uma função pode ser sobrecarregada desde que lhe seja dada uma combinação única de tipos de parâmetros e/ou ordem de parâmetros. O HLSL também implementa uma série de funções incorporadas ou intrínsecas.

Você pode especificar planos de clipe específicos do usuário com o atributo clipplanes. O Windows aplica esses planos de clipe a todas as primitivas desenhadas. O clipplanes atributo funciona como SV_ClipDistance mas funciona em todos os 9_x de nível de recurso de hardware e superior. Para saber mais, veja Planos de clipe do usuário node hardware de nível 9 do recurso .

Exemplos

Este exemplo é de BasicHLSL10.fx do BasicHLSL10 Sample.

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 AdvancedParticles Sample, 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;
}

funções (DirectX HLSL)