texcoord - ps

Interpreta los datos de coordenadas de textura (UVW1) como datos de color (RGBA).

Sintaxis

texcoord dst

 

where

  • dst es el registro de destino.

Observaciones

Versiones del sombreador de píxeles 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texcoord x x x

 

Esta instrucción interpreta el conjunto de coordenadas de textura (UVW1) correspondiente al número de registro de destino como datos de color (RGBA). Si el conjunto de coordenadas de textura contiene menos de tres componentes, los componentes que faltan se establecen en 0. El cuarto componente siempre se establece en 1. Todos los valores se fijan entre 0 y 1.

La ventaja de texcoord es que proporciona una manera de pasar datos de vértices interpolados a alta precisión directamente en el sombreador de píxeles. Sin embargo, cuando los datos se escriben en el registro de destino, se perderá cierta precisión, dependiendo del número de bits utilizados por el hardware para los registros.

Esta instrucción no muestrea ninguna textura. Solo las coordenadas de textura establecidas en esta fase de textura son relevantes.

Cualquier dato de textura (como la posición, la normal y la dirección de la fuente de luz) se puede asignar mediante un sombreador de vértices en una coordenada de textura. Esto se hace asociando una textura con un registro de textura mediante SetTexture y especificando cómo se realiza el muestreo de textura mediante SetTextureStageState. Si se usa la canalización de función fija, asegúrese de proporcionar la marca TSS_TEXCOORDINDEX.

Esta instrucción se usa de la siguiente manera:

texcoord tn

Un registro de coordenadas de textura (tn) contiene cuatro valores de color (RGBA). Los datos también se pueden considerar como datos vectoriales (xyzw). texcoord recuperará tres de estos valores (xyz) del conjunto de coordenadas de textura x y el cuarto componente (w) se establece en 1. La dirección de textura se copia del conjunto de coordenadas de textura n. El resultado se sujeta entre 0 y 1.

Este ejemplo solo tiene propósitos ilustrativos. El código C que acompaña al sombreador no se ha optimizado para el rendimiento.

Este es un sombreador de ejemplo que usa texcoord.

ps_1_1        ; version instruction
texcoord t0   ; declare t0 hold texture coordinates, 
              ; which represent rgba values in this example
mov r0, t0    ; move the color in t0 to output register r0

La salida representada del sombreador de píxeles se muestra en la ilustración siguiente. Los valores de coordenadas (u,v,w,1) se asignan a los canales (rgb). El canal alfa se establece en 1. En las esquinas de la ilustración, la coordenada (0,0,0,1) se interpreta como negra; (1,0,0,1) es rojo; (0,1,0,1) es verde; y (1,1,0,1) contiene verde y rojo, produciendo amarillo.

Ilustración de la salida representada del sombreador de píxeles de ejemplo

Se requiere código adicional para usar este sombreador y se muestra un escenario de ejemplo a continuación.

// This code creates the shader from a file. The contents of  
// the shader file can also be supplied as a text string.
LPD3DXBUFFER        pCode;

// Assemble the vertex shader from the file
D3DXAssembleShaderFromFile(strPShaderPath, 0, NULL, &pCode, NULL);
m_pd3dDevice->CreatePixelShader((DWORD*)pCode->GetBufferPointer(),
                   &m_hPixelShader);
pCode->Release();

// This code defines the object vertex data
struct CUSTOMVERTEX
{
    FLOAT x, y, z;
    FLOAT tu1, tv1;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1|TEXCOORD2(0))

static CUSTOMVERTEX g_Vertices[]=
{
    //  x      y     z     u1    v1   
    { -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, },
    { +1.0f, -1.0f, 0.0f, 1.0f, 0.0f, },
    { +1.0f, +1.0f, 0.0f, 1.0f, 1.0f, },
    { -1.0f, +1.0f, 0.0f, 0.0f, 1.0f, },
};

Instrucciones del sombreador de píxeles