texldb - ps

Instrução de carga de textura tendenciosa. Esta instrução usa o quarto elemento (.a ou .w) para distorcer o nível de detalhes de amostragem de textura pouco antes da amostragem.

Sintaxe

texldb dst, src0, src1

 

Em que:

Para obter as restrições ao usar texldb, consulte a instrução texld - ps_2_0 e up .

ps_2_0 e ps_2_x

dst deve ser um Registro Temporário (r#) e somente a máscara .xyzw (máscara padrão) é permitida.

src0 deve ser um Registro de Coordenadas de Textura (t#) ou um Registro Temporário (r#), sem modificador ou swizzle.

src1 deve ser um Sampler (Direct3D 9 asm-ps) (s#), sem modificador ou swizzle.

Se o bit de limite de D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT não estiver definido (em D3DPSHADERCAPS2_0), uma instrução de textura determinada (texld, texldp, texldb, texldd) poderá depender, no máximo, da terceira ordem. Uma instrução de textura dependente de primeira ordem é uma instrução de textura na qual:

  • src0 é um Registro Temporário (r#).
  • dst foi escrito anteriormente, agora sendo escrito novamente.

Uma instrução de textura dependente de segunda ordem é definida como uma instrução de textura que lê ou grava em um Registro Temporário (r#) cujo conteúdo, antes de executar a instrução de textura, depende (talvez indiretamente) do resultado de uma instrução de textura dependente de primeira ordem. Uma instrução de textura dependente (n)th order deriva de uma instrução de textura (n - 1)th order.

ps_3_0

src1 deve ser um Sampler (Direct3D 9 asm-ps) (s#), sem modificador. O Swizzle é permitido no src1 e, quando aplicado, os resultados da pesquisa de textura são pré-girados antes de serem gravados em dst.

Comentários

Versões do sombreador de pixel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texldb x x x x x

 

texldb distorce o nível de detalhes do mipmap, calculado normalmente como parte do processo de exemplo pelo valor (assinado) em src0.w. Valores de viés positivo resultarão na seleção de mipmaps menores e vice-versa. Para ps_2_0 e ps_2_x, os valores de viés podem estar dentro do intervalo [-3.0, +3.0]. Para ps_3_0, os valores de viés podem estar dentro do intervalo [-16.0, +15.0]. Valores de viés fora desses intervalos produzem resultados indefinidos. O estado do amostrador D3DSAMP_MIPMAPLODBIAS ainda é honrado e o viés texldb é adicionado a isso, mas por pixel. Depois que o nível de detalhes tendencioso é calculado, D3DSAMP_MAXMIPLEVEL ainda é honrada e a amostra de textura ocorre. Após texldb, o conteúdo de src0 não é afetado (a menos que dst seja o mesmo registro).

O número de coordenadas necessárias para que src0 execute a amostra de textura depende de como src1 foi declarado, além do componente .w. Os tipos de amostra são declarados com dcl_samplerType (sm2, sm3 – ps asm). Se src1 for declarado como um sampler 2D, src0 deverá conter coordenadas .xyw; se src1 for declarado como um amostrador de cubo ou um amostrador de volume, src0 deverá conter coordenadas .xyzw. A amostragem de uma textura 2D com coordenadas .xyzw é permitida (a coordenada .z é ignorada).

Se a textura de origem contiver menos de quatro componentes, os padrões serão colocados nos componentes ausentes. Os padrões dependem do formato de textura, conforme mostrado na tabela a seguir:

Formato de textura Valores padrão
D3DFMT_R5G6B5, D3DFMT_R8G8B8, D3DFMT_L8, D3DFMT_L16, D3DFMT_R3G3B2, D3DFMT_CxV8U8, D3DFMT_L6V5U5 A = 1,0
D3DFMT_V8U8, D3DFMT_V16U16, D3DFMT_G16R16, D3DFMT_G16R16F, D3DFMT_G32R32F B = A = 1,0
D3DFMT_A8 R = G = B = 0,0
D3DFMT_R16F, D3DFMT_R32F G = B = A = 1,0
Todos os formatos de profundidade/estêncil R = B = 0,0, A = 1,0

 

Instruções de sombreador de pixel