텍스쳐 맵핑
(기본에작업된 크드를 재활용하자.... 왜냐면 귀찮으니깐....쩝....)
1. 정점 셰이더
struct VS_INPUT{
float4 mPosition : POSITION;
float2 mTexCoord : TEXCOORD0;
//인풋 구조체에 uv 추가
};
struct VS_OUTPUT{
float4 mPosition : POSITION;
float2 mTexCoord : TEXCOORD0;
//아웃풋 구조채에 uv추가
};
float4x4 gWorldMatrix;
float4x4 gViewMatrix;
float4x4 gProjectionMatrix;
VS_OUTPUT vs_main(VS_INPUT Input){
VS_OUTPUT Output;
Output.mPosition = mul( Input.mPosition, gWorldMatrix );
Output.mPosition = mul( Output.mPosition, gViewMatrix );
Output.mPosition = mul( Output.mPosition, gProjectionMatrix );
Output.mTexCoord = Input.mTexCoord;
//인풋uv받아서 아웃풋에 전달한다.
return Output;
}
2. 픽셀 셰이더
sampler2D DiffuseSampler;
//2D 텍스쳐 선언
struct PS_INPUT{
float2 mTexCoord : TEXCOORD;
};
//정점셰이더의 uv 인풋
float4 ps_main(PS_INPUT Input) : COLOR{
float4 albedo = tex2D(DiffuseSampler, Input.mTexCoord);
//albedo라는 변수에 tex2D함수로 텍스쳐와 uv를 담는다.
return albedo.rgba;
//albedo의rgba속성을 출력한다.
}
**팁**
HLSL내장 함수
tex2D(DiffuseSampler, Input.mTexCoord);
함수이름(텍스쳐, Input.uv);
이 함수로 쉽게 구현할수있다.
다음은 기본적인 조명 셰이더.....복습이라 조금 지겹지만 좋다..이걸로 더 제대로 셰이더를 알게 될테니...
'Unity공부 > HLSL Shader 공부' 카테고리의 다른 글
셰이더 프로그래밍 입문-6 (0) | 2012.11.21 |
---|---|
셰이더 프로그래밍 입문-5 (0) | 2012.11.19 |
셰이더 프로그래밍 입문-4 (0) | 2012.11.16 |
셰이더 프로그래밍 입문-3 (2) | 2012.11.14 |
셰이더 프로그래밍 입문-1 (0) | 2012.11.12 |