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:
- dst é o registro de destino.
- src0 é um registro de origem que fornece as coordenadas de textura para o exemplo de textura. Consulte Registro de coordenadas de textura.
- src1 identifica o Sampler (Direct3D 9 asm-ps) (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 amostra definido por D3DSAMPLERSTATETYPE.
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 |
Tópicos relacionados