Função Sample(S,float,int,float,uint) (referência HLSL)
Amostra um Texture2D com um valor opcional para fixar valores lod (nível de detalhe) de exemplo e retorna status da operação.
Observação
Requer o modelo de sombreador 5 ou superior.
Sintaxe
DXGI_FORMAT Sample(
in SamplerState S,
in float Location,
in int Offset,
in float Clamp,
out uint Status
);
Parâmetros
-
S [in]
-
Um estado sampler. Esse é um objeto declarado em um arquivo de efeito que contém atribuições de estado.
-
Localização [in]
-
As coordenadas de textura. O tipo de argumento depende do tipo de objeto de textura.
Tipo de Texture-Object Tipo de parâmetro Texture1D FLOAT Texture1DArray, Texture2D float2 Texture2DArray, Texture3D, TextureCube float3 TextureCubeArray float4 -
Deslocamento [in]
-
Um deslocamento de coordenada de textura opcional, que pode ser usado para qualquer tipo de objeto de textura; o deslocamento é aplicado ao local antes da amostragem. Os deslocamentos de textura precisam ser estáticos. O tipo de argumento depende do tipo de objeto de textura. Para obter mais informações, consulte Aplicando deslocamentos de coordenadas de textura.
Tipo de Texture-Object Tipo de parâmetro Texture1D, Texture1DArray INT Texture2D, Texture2DArray int2 Texture3D int3 TextureCube, TextureCubeArray sem suporte -
Clamp [in]
-
Um valor opcional para fixar valores LOD de exemplo. Por exemplo, se você passar 2,0f para o valor de fixação, verifique se nenhum exemplo individual acessa um nível de mip menor que 2,0f.
-
Status [out]
-
O status da operação. Não é possível acessar o status diretamente; em vez disso, passe o status para a função intrínseca CheckAccessFullyMapped. CheckAccessFullyMapped retornará TRUE se todos os valores da operação de Exemplo, Coleta ou Carga correspondente acessarem blocos mapeados em um recurso lado a lado. Se algum valor tiver sido obtido de um bloco não mapeado, CheckAccessFullyMapped retornará FALSE.
Valor retornado
O formato de textura, que é um dos valores tipados listados em DXGI_FORMAT.
Comentários
A amostragem de textura usa a posição texel para pesquisar um valor texel. Um deslocamento pode ser aplicado à posição antes da pesquisa. O estado do sampler contém as opções de amostragem e filtragem. Esse método pode ser invocado dentro de um sombreador de pixel, mas não tem suporte em um sombreador de vértice ou em um sombreador de geometria.
Use um deslocamento somente em um miplevel inteiro; caso contrário, você poderá obter resultados diferentes dependendo da implementação de hardware ou das configurações do driver.
Calculando posições texel
As coordenadas de textura são valores de ponto flutuante que fazem referência a dados de textura, que também são conhecidos como espaço de textura normalizado. Os modos de disposição de endereço são aplicados nessa ordem (coordenadas de textura + deslocamentos + modo de encapsulamento) para modificar coordenadas de textura fora do intervalo [0...1].
Para matrizes de textura, um valor adicional no parâmetro location especifica um índice em uma matriz de textura. Esse índice é tratado como um valor float dimensionado (em vez do espaço normalizado para coordenadas de textura padrão). A conversão em um índice inteiro é feita na seguinte ordem (float + inteiro de volta para mais próximo + pinçagem para o intervalo de matriz).
Aplicando deslocamentos de coordenadas de textura
O parâmetro offset modifica as coordenadas de textura, no espaço texel. Embora as coordenadas de textura sejam números de ponto flutuante normalizados, o deslocamento aplica um deslocamento inteiro. Observe também que os deslocamentos de textura precisam ser estáticos.
O formato de dados retornado é determinado pelo formato de textura. Por exemplo, se o recurso de textura foi definido com o formato DXGI_FORMAT_A8B8G8R8_UNORM_SRGB, a operação de amostragem converte texels amostrados de gama 2.0 para 1.0, filtra e grava o resultado como um valor de ponto flutuante no intervalo [0..1].
Confira também