본문 바로가기
코딩/셰이더 프로그래밍 입문

[셰이더 프로그래밍] 01. 셰이더가 무엇인가

by witn331ss 2023. 5. 30.

셰이더의 정의

셰이더는 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수이다.

 

 

3D 파이프라인을 간단히 설명하자면

[정점 셰이더] -> [레스터라이저] -> [픽셀 셰이더] -> [화면] 

으로 되어있다.

 

정점 셰이더가 입력 값으로 받는 것은 3D모델 자체이다.

정점 셰이더가 수행하는 가장 중요한 일은 물체를 구성하는 정점들의 위치를

실제 화면 좌표로 변환하는 것

 

정점 셰이더는 3D 물체를 구성하는 정점의 수 만큼 실행된다.

 

-

 

화면을 구성하는 최소 단위는 픽셀이다

 

레스터라이저는 정점 셰이더가 출력하는 그 정점의 위치를 차례대로 모아 도형을 만든 뒤 그 안에 들어간 픽셀들을 찾아내어 그려준다.

 

레스터라이저 과정은 얘가 찾아내는 픽셀 수 만큼 호출된다.

 

-

 

픽셀 셰이더의 주된 일은 화면에 출력할 최종 색을 계산하는 것이다.

즉 셰이더는 화면에 존재하는 각 픽셀의 위치와 색상을 계산하는 함수라고 생각하면 된다.

 

-

 

셰이더 프로그래밍?

레스터라이저 / 그리고 화면 결과를 내는 것은 우리가 하는 것이 아니라 GPU가 대신 처리해주는

즉, 프로그래머가 따로 제어할 수 없는 단계다.

 

하지만 정점 셰이더 / 픽셀 셰이더 같은 경우는 우리가 직접 제어할 수 있는 단계다.

이 단계에서 사용할 함수를 작성하는 것이 바로 셰이더 프로그래밍이다.

 

 

기본적으로 HLSL은 C와 매우 비슷한 문법을 사용하는 언어로

GLSL이나 cgFX등 기타 셰이더 언어와 매우 비슷하니 하나를 배우면 다른 것을 사용하는데 큰 무리가 없을 것이다.