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

[셰이더 프로그래밍 입문] 2. 셰이더의 기본 본문

컴퓨터 그래픽스/쉐이더

[셰이더 프로그래밍 입문] 2. 셰이더의 기본

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

2.셰이더의 기본

  • float4x4 : 4x4행렬 데이터형

  • mul() : 곱하기 함수. 거의 모든 데이터형을 변수로 받음

  • POSITION : 정점위치 시맨틱. 정점데이터 중 위치정보만을 불러옴

  • float4 : 4개의 성분을 가지는 벡터 데이터형


■ 공간변환


  • 물체공간 : 물체를 어디로 움직이던 간에 원점으로부터 각 정점까지의 거리는 변하지 않음

  • 월드공간 : 여러 물체를 같은 공간으로 옮겨와 새 공간에서 원점을 잡는다

  • 뷰공간 : 카메라가 사용하는 공간. 렌즈의 중앙이 원점. (X뷰행렬 : 월드공간에 있는 물체를 카메라 공간으로 이동, 회전, 확대/축소시키는 단계)

  • 투영공간 : (X투영행렬 : 이렇게 새로운 공간에 위치된 물체들을 2D이미지 위에 투영하는 것)


▶렌더몽키 코드 

- 버텍스 셰이더
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
29
30
31
32
float4x4 gWorldMatrix;
float4x4 gViewMatrix;
float4x4 gProjectionMatrix;
 
 
struct VS_INPUT 
{
   float4 Position : POSITION;
   
};
 
struct VS_OUTPUT 
{
   float4 Position : POSITION;
   
};
 
VS_OUTPUT vs_main( VS_INPUT Input )
{
   VS_OUTPUT Output;
 
   Output.Position = mul( Input.Position, gWorldMatrix );
   Output.Position = mul( Output.Position, gViewMatrix );
   Output.Position = mul( Output.Position, gProjectionMatrix );
   
   return( Output );
   
}
cs

- 픽셀 셰이더

1
2
3
4
float4 ps_main() : COLOR0
{
   return float4 (1.0f,0.0f,0.0f,0.5f);
}
cs

- 결과
기본적인 빨강색 셰이더입니다.
img