셰이더의 정의
셰이더는 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수이다.
3D 파이프라인을 간단히 설명하자면
[정점 셰이더] -> [레스터라이저] -> [픽셀 셰이더] -> [화면]
으로 되어있다.
정점 셰이더가 입력 값으로 받는 것은 3D모델 자체이다.
정점 셰이더가 수행하는 가장 중요한 일은 물체를 구성하는 정점들의 위치를
실제 화면 좌표로 변환하는 것
정점 셰이더는 3D 물체를 구성하는 정점의 수 만큼 실행된다.
-
화면을 구성하는 최소 단위는 픽셀이다
레스터라이저는 정점 셰이더가 출력하는 그 정점의 위치를 차례대로 모아 도형을 만든 뒤 그 안에 들어간 픽셀들을 찾아내어 그려준다.
레스터라이저 과정은 얘가 찾아내는 픽셀 수 만큼 호출된다.
-
픽셀 셰이더의 주된 일은 화면에 출력할 최종 색을 계산하는 것이다.
즉 셰이더는 화면에 존재하는 각 픽셀의 위치와 색상을 계산하는 함수라고 생각하면 된다.
-
셰이더 프로그래밍?
레스터라이저 / 그리고 화면 결과를 내는 것은 우리가 하는 것이 아니라 GPU가 대신 처리해주는
즉, 프로그래머가 따로 제어할 수 없는 단계다.
하지만 정점 셰이더 / 픽셀 셰이더 같은 경우는 우리가 직접 제어할 수 있는 단계다.
이 단계에서 사용할 함수를 작성하는 것이 바로 셰이더 프로그래밍이다.
기본적으로 HLSL은 C와 매우 비슷한 문법을 사용하는 언어로
GLSL이나 cgFX등 기타 셰이더 언어와 매우 비슷하니 하나를 배우면 다른 것을 사용하는데 큰 무리가 없을 것이다.
'코딩 > 셰이더 프로그래밍 입문' 카테고리의 다른 글
[셰이더 프로그래밍] 06. 물체에 색을 입히는 디퓨즈/스페큘러 맵핑 (0) | 2023.06.05 |
---|---|
[셰이더 프로그래밍] 05. 기초적인 조명 쉐이더 (정반사) (4) | 2023.06.02 |
[셰이더 프로그래밍] 04. 기초적인 조명 쉐이더 (난반사) (2) | 2023.06.01 |
[셰이더 프로그래밍] 03. 텍스쳐매핑 (0) | 2023.05.31 |
[셰이더 프로그래밍] 02. 진짜 쉬운 빨강쉐이더 (0) | 2023.05.31 |