쉐이더란

컴퓨터 그래픽스 분야에서 셰이더(shader)는 소프트웨어 명령의 집합으로 주로 그래픽 하드웨어의 렌더링 효과를 계산하는 데 쓰인다. 셰이더는 그래픽 처리 장치(GPU)의 프로그래밍이 가능한 렌더링 파이프라인을 프로그래밍하는 데 쓰인다.

셰이더는 표면상으로 무한해 보이는 효과를 만들기 위해 영화 후처리, CGI비디오 게임에 널리 쓰인다. 단순한 광원 모델을 떠나, 더 복잡한 이용에는 영상의 색조채도밝기대비를 변경하는 일과 블러라이트 블룸입체 광원, 심도 효과를 위한 노멀 매핑보케셀 셰이딩포스터리제이션범프 매핑왜곡크로마 키 (이른바 블루스크린/그린스크린 효과), 테두리 검출모션 감지사이키델리아 효과 제작 등을 포함한다.

쉐이더 언어

쉐이더 언어도 여러가지가 존재한다. 대표적으로는 아래의 3가지가 있다.

세 언어 모두 C 기반이기 때문에 문법이 유사하다. 특히 Cg와 HLSL은 거의 똑같다.

셰이더 생성 및 파이프라인 세팅 함수

raster-pipeline.svg

Untitled

레스터라이제이션에서의 셰이더 종류

정점 셰이더 (Vertex Shader)

vertex-shader.svg

입력 조립기가 넘겨준 정점 자료의 정점들을 한번에 하나씩 처리한다. 새로운 정점을 생성하거나 기존 정점을 삭제하지 못하고 모든 정점은 독릭접으로 처리된다. 정점 셰이더의 한 실행은 다른 실행의 정보에 접근하지 못한다.

버텍스 셰이더는 버텍스별로 실행되며, 주어진 오브젝트를 변형하고 블렌드 셰이프, GPU 스키닝 등을 사용하여 버텍스별 애니메이션을 수행하는 데 적합합니다.