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.

Syntax

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 do sampler de origem (s#), em que # especifica qual número de amostrador de textura 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 procura o conjunto de texturas no estágio do sampler 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 estados de amostragem, consulte D3DSAMPLERSTATETYPE.

Se um programa de sombreador for amostrado de um sampler que não tem 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 pelo tamanho da 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 pode não 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 honrada. 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 o exemplo de textura depende de como o sampler foi declarado. Se ele tiver sido declarado como um cubo, será necessária uma coordenada de textura de três componentes (.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 em depuração). A amostragem de uma textura com menos dimensões do que as presentes na coordenada de textura será permitida e será assumida para ignorar os componentes de coordenada 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) devem ter sido gravados anteriormente.
  • A amostragem de texturas RGB não atribuídas 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 do sombreador de vértice