Argumentos de função

Uma função usa um ou mais argumentos de entrada; use a sintaxe a seguir para declarar cada argumento.

[InputModifier] Nome do Tipo [: Semântico] [InterpolationModifier] [= Inicializadores]

[Modificador] Nome do Tipo [: Semântico] [: Modificador de Interpolação] [= Inicializador(s)]

Se houver vários argumentos de função, eles serão separados por vírgulas.

Parâmetros

Item Descrição
InputModifier
Termo opcional que identifica um argumento como uma entrada, uma saída ou ambos.
Valor Descrição
Em Somente entrada
Inout Entrada e uma saída
out Somente saída
Uniforme Dados constantes somente de entrada

Os parâmetros são sempre passados por valor. in indica que o valor do parâmetro deve ser copiado do aplicativo de chamada antes do início da função. out indica que o último valor do parâmetro deve ser copiado e retornado para o aplicativo de chamada quando a função retorna. inout é uma abreviação para especificar ambos.

Um valor uniforme vem de um registro constante; cada sombreador de vértice ou invocação de sombreador de pixel vê o mesmo valor inicial para uma variável uniforme. As variáveis globais são tratadas como se fossem declaradas uniformes. Para funções de nível não superior, uniforme é sinônimo de em. Se nenhum uso de parâmetro for especificado, o uso do parâmetro será considerado.

Tipo

O tipo de argumento; pode ser qualquer tipo HLSL válido.

Nome

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

Semântica

Cadeia de caracteres opcional que identifica o uso pretendido dos dados (consulte Semântica (DirectX HLSL)).

InterpolationModifier

Modificador de interpolação opcional que permite que um sombreador determine o método de interpolação. Um modificador de interpolação em um argumento de função só se aplica a um argumento usado como entrada para uma função de sombreador de pixel.

Inicializadores

Valores opcionais para inicialização; vários valores são necessários para inicializar tipos de dados de vários componentes.

Comentários

Os argumentos de função são listados em uma lista de argumentos separados por vírgulas em uma declaração de função. Como nas funções C, cada argumento deve ter um nome de parâmetro e um tipo declarados; opcionalmente, um argumento para uma função HLSL pode incluir uma semântica, um valor inicial e uma entrada de sombreador de pixel pode incluir um tipo de interpolação.

O tipo de um argumento de função pode ser uma estrutura, que pode incluir um modificador de interpolação por membro. Se o argumento de função também tiver um modificador de interpolação, o modificador de argumento de função substituirá os modificadores de interpolação declarados dentro do Tipo.

Exemplos

Este exemplo (do Exemplo BasicHLSL10) ilustra entradas uniformes e não uniformes para uma função de sombreador de vértice.

VS_OUTPUT RenderSceneVS( 
  float4 vPos : POSITION,
  float3 vNormal : NORMAL,
  float2 vTexCoord0 : TEXCOORD,
  uniform int nNumLights,
  uniform bool bTexture,
  uniform bool bAnimate )
{
  ...
}

Este exemplo (do ContentStreaming Sample) usa uma estrutura de entrada para passar argumentos para uma função de sombreador de pixel.

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

Funções (DirectX HLSL)