[GPG 3 글 4.10] 버텍스셰이더 사용중 궁금한게 생겼습니다...

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

비회원

버텍스셰이더 사용중 궁금한게 생겼습니다...

Post by 비회원 »

정점버퍼입니다.

다음과 같이 정의되있습니다.

class CUSTOMVERTEX
{
public:
D3DXVECTOR3 position; // The position
D3DCOLOR color; // The color
FLOAT tu, tv; // The texture coordinates

CUSTOMVERTEX()
{
tu=tv=0;
};
void setUV(float j, float k)
{
tu=j;
tv=k;
};
};





셰이더에는 월드 뷰 프로젝션 매트릭스와 텍스쳐를 매 렌더시 constant로 정의해주고요

다음과같이 인풋/아웃풋이 정해졌구요

struct VS_INPUT {
//#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
vector pos : POSITION;
float color : COLOR0;
float u : TEXCOORD0;
float v : TEXCOORD1;
};



struct VS_OUTPUT {
vector pos : POSITION;
float color : COLOR0;
float u : TEXCOORD0;
float v : TEXCOORD1;
};






다음과같이 연산합니다.



//vertexshader
VS_OUTPUT SEL_VS(VS_INPUT input)
{
VS_OUTPUT Output = (VS_OUTPUT)0;

Output.pos = mul(input.pos,matWVP); //이미 상수정의된 월드뷰프로젝션 변환 매트릭스 matWVP
Output.color = input.color;
Output.u = input.u;
Output.v = input.v;
return Output;
}







헌데 이렇게 해줘도 계속 메시는 멀쩡하게 찍히는데 텍스쳐가 안드로메다 좌표에 찍히네요

텍스쳐 찍히는 색이 약간 보이기 때문에, 텍스쳐 자체가 로드가 안된것 같지는 않구요...



텍스쳐 좌표 문제같은데 무슨 문제일까요? input.u v를 그대로 output에 옮겼는데;;
비회원

셰이더 입력 출력이 이상한 것 같습니다.

Post by 비회원 »

정확한 것은 레퍼런스를 찾아봐야 알 것 같습니다만 ,
셰이더의 입력 출력이 잘못 정의된 것 같습니다.

텍스쳐 좌표로 (u,v)를 사용하니까요, float2 가 되어야 맞지 않을까 하거든요.
leader2333
Posts: 8
Joined: 2008-11-26 15:23

답변

Post by leader2333 »

네 TEXCOORD0 하나만 존재 해야 할것 같습니다.

float2 uv : TEXCOORD0;

이렇게요.

TEXCOORD0 와 TEXCOORD1 은 멀티 택스쳐 사용할때 하는걸로 알고 있습니다.
trackback:

트랙백

Post by trackback: »

Creaty Network: http://creaty.net/game/?menu=OpenFM&bid=1&mod=view&post=195">버텍스셰이더 사용중 궁금한게 생겼습니다... - 작성자. 비회원 TEXCOORD0, TEXCOORD1 은 서로 다른 텍스쳐를 다루는 좌표로 받아들일꺼에요.
즉, 두번째 택스쳐가 없으니 TEXCOORD1 의 첫번째 좌표(u)값만 들어오는 거니, TEXCOORD0 타입을 float2 타입으로 받아야 합니...
Post Reply