texldl - vs

Amostra uma textura com um sampler específico. O nível de detalhes de mipmap específico que está sendo amostrado deve ser especificado como o quarto componente da coordenada de textura.

Sintaxe

texldl dst, src0, src1

 

Em que:

  • dst é um registro de destino.
  • src0 é um registro de origem que fornece as coordenadas de textura para o exemplo de textura.
  • src1 identifica o registro de amostra de origem (s#), em que # especifica qual número de amostra de textura deve ser amostrado. O sampler associou a ele uma textura e um estado de controle definidos pela enumeração D3DSAMPLERSTATETYPE (por exemplo, D3DSAMP_MINFILTER).

Comentários

Versões do sombreador de vértice 1_1 2_0 2_x 2_sw 3_0 3_sw
texldl x x

 

texldl pesquisa o conjunto de texturas no estágio de amostragem referenciado por src1. O nível de detalhes é selecionado em src0.w. Esse valor pode ser negativo; nesse caso, o nível de detalhes selecionado é o "zero um" (maior mapa) com o MAGFILTER. Como src0.w é um valor de ponto flutuante, o valor fracionário é usado para interpolar (se MIPFILTER for LINEAR) entre dois níveis de mip. O sampler afirma que MIPMAPLODBIAS e MAXMIPLEVEL são honrados. Para obter mais informações sobre os estados do sampler, consulte D3DSAMPLERSTATETYPE.

Se um programa de sombreador for amostrado de um sampler que não tenha um conjunto de texturas, 0001 será obtido no registro de destino.

Essa é uma aproximação do algoritmo de dispositivo de referência.

LOD = src0.w + LODBIAS;
if (LOD <= 0 )
{
   LOD = 0;
   Filter = MagFilter;
   tex = Lookup( MAX(MAXMIPLEVEL, LOD), Filter );
}
else
{
   Filter = MinFilter;
   LOD = MAX( MAXMIPLEVEL, LOD);
   tex = Lookup( Floor(LOD), Filter );
   if( MipFilter == LINEAR )
   {
      tex1 = Lookup( Ceil(LOD), Filter );                        
      tex = (1 - frac(src0.w))*tex + frac(src0.w)*tex1;
   }
}

Restrições:

  • As coordenadas de textura não devem ser dimensionadas por tamanho de textura.
  • dst deve ser um Registro Temporário (r#).
  • dst pode aceitar uma máscara de gravação. Consulte Máscara de Registro de Destino.
  • Os padrões para componentes ausentes são 0 ou 1 e dependem do formato de textura.
  • src1 deve ser um Sampler (Direct3D 9 asm-vs) (s#). src1 não pode usar um modificador de negação. src1 pode usar swizzle, que é aplicado após a amostragem antes que a máscara de gravação seja respeitada. O sampler deve ter sido declarado (usando dcl_samplerType (sm3 - vs asm)) no início do sombreador.
  • O número de coordenadas necessárias para executar a amostra de textura depende de como o sampler foi declarado. Se ele tiver sido declarado como um cubo, uma coordenada de textura de três componentes será necessária (.rgb). A validação impõe que as coordenadas fornecidas ao texldl sejam suficientes para a dimensão de textura declarada para o sampler. No entanto, não é garantido que o aplicativo realmente defina uma textura (por meio da API) com dimensões iguais à dimensão declarada para o sampler. Nesse caso, o runtime tentará detectar incompatibilidades (possivelmente somente na depuração). Será permitida a amostragem de uma textura com menos dimensões do que as presentes na coordenada de textura e será considerado ignorar os componentes de coordenadas de textura extra. Por outro lado, a amostragem de uma textura com mais dimensões do que as presentes na coordenada de textura não é permitida.
  • Se o src0 (coordenada de textura) for um Registro Temporário (r#), os componentes necessários para a pesquisa (descrito acima) deverão ter sido gravados anteriormente.
  • A amostragem de texturas RGB não assinadas resultará em valores flutuantes entre 0,0 e 1,0.
  • A amostragem de texturas assinadas resultará em valores flutuantes entre -1,0 e 1,0.
  • Ao amostrar texturas de ponto flutuante, Float16 significa que os dados serão intervalos dentro de MAX_FLOAT16. Float32 significa que o intervalo máximo do pipeline será usado. A amostragem fora de qualquer intervalo é indefinida.
  • Não há limite de leitura dependente.

Instruções de sombreador de vértice