오다기리 박의 알고리즘 노트

[셰이더 프로그래밍 입문] 3. 텍스처 매핑 본문

컴퓨터 그래픽스/쉐이더

[셰이더 프로그래밍 입문] 3. 텍스처 매핑

오다기리 박 2018. 7. 1. 23:27

3.텍스처매핑

  • sampler2D : 텍스처에서 텍셀을 구해올 때 사용하는 샘플러 데이터형

  • tex2D() : 텍스처 샘플링에 사용하는 HLSL함수

  • 스위즐 : 벡터 성분의 순서를 마음대로 뒤섞을 수 있는 방법

▶렌더몽키 코드 

- 버텍스 셰이더
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct VS_INPUT
{
   float4 mPosition:POSITION;
   float2 mTexCoord:TEXCOORD0;   //
};
 
struct VS_OUTPUT
{
   float4 mPosition:POSITION;    //
   float2 mTexCoord:TEXCOORD0;   // 
};
 
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;     //
   
   return Output;
}
cs

- 픽셀 셰이더
1
2
3
4
5
6
7
8
9
10
11
12
struct PS_INPUT
{
   float2 mTexCoord:TEXCOORD0;   //
};
 
sampler2D DiffuseSampler;         //
 
float4 ps_main(PS_INPUT Input):COLOR0
{
   float4 albedo=tex2D(DiffuseSampler,Input.mTexCoord);
   return albedo.rgba;
}
cs

- 결과

물체표면을 단색으로 출력하지 않고, 텍스처를 입히는 텍스처매핑입니다

img