texcoord - ps
텍스처 좌표 데이터(UVW1)를 색상 데이터(RGBA)로 해석합니다.
Syntax
texcoord dst |
---|
라는 설치 관리자 실행 파일에 포함됩니다. 여기서
- dst는 대상 레지스터입니다.
설명
픽셀 셰이더 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texcoord | x | x | x |
이 명령은 대상 레지스터 번호에 해당하는 텍스처 좌표 집합(UVW1)을 색상 데이터(RGBA)로 해석합니다. 텍스처 좌표 집합에 3개 미만의 구성 요소가 포함된 경우 누락된 구성 요소는 0으로 설정됩니다. 네 번째 구성 요소는 항상 1로 설정됩니다. 모든 값은 0에서 1 사이로 고정됩니다.
texcoord의 장점은 고정밀도로 보간된 꼭짓점 데이터를 픽셀 셰이더에 직접 전달하는 방법을 제공한다는 것입니다. 그러나 데이터가 대상 레지스터에 기록되면 하드웨어에서 레지스터에 사용하는 비트 수에 따라 일부 정밀도가 손실됩니다.
이 명령으로 텍스처가 샘플링되지 않습니다. 이 텍스처 스테이지에서 설정된 텍스처 좌표만 관련이 있습니다.
모든 텍스처 데이터(예: 위치, 법선 및 광원 방향)는 꼭짓점 셰이더에 의해 텍스처 좌표로 매핑될 수 있습니다. 이렇게 하려면 SetTexture를 사용하여 텍스처 레지스터와 텍스처를 연결하고 SetTextureStageState를 사용하여 텍스처 샘플링을 수행하는 방법을 지정합니다. 고정 함수 파이프라인을 사용하는 경우 TSS_TEXCOORDINDEX 플래그를 제공해야 합니다.
이 명령은 다음과 같이 사용됩니다.
texcoord tn
텍스처 좌표 레지스터(tn)에는 4가지 색상 값(RGBA)이 포함됩니다. 이 데이터를 벡터 데이터(xyzw)로 간주할 수도 있습니다. texcoord는 텍스처 좌표 집합 x에서 이 세 가지 값(xyz)을 가져오고 네 번째 구성 요소(w)는 1로 설정됩니다. 텍스처 주소는 텍스처 좌표 집합 n에서 복사됩니다. 결과는 0과 1 사이로 고정됩니다.
이 예는 설명을 돕기 위해 제공된 것입니다. 셰이더와 함께 제공되는 C 코드는 성능에 최적화되지 않았습니다.
다음은 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
픽셀 셰이더의 렌더링된 출력을 다음 그림에서 볼 수 있습니다. (u,v,w,1) 좌표 값은 (rgb) 채널에 매핑됩니다. 알파 채널이 1로 설정됩니다. 그림의 모서리에서 좌표 (0,0,0,1)은 검은색으로 해석됩니다. (1,0,0,1)은 빨간색이고 (0,1,0,1)은 녹색이며 (1,1,0,1)에는 녹색과 빨간색이 포함되어 노란색을 생성합니다.
이 셰이더를 사용하려면 추가 코드가 필요하며 예제 시나리오는 다음과 같습니다.
// 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, },
};
관련 항목