컴퓨터 그래픽에서 최종적으로 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수이다.
데이터로 이루어진 3D 오브젝트는 GPU에 의해 일련의 그래픽 처리과정(렌더링 파이프라인)을 거침으로써 최종적으로는 2D 모니터에 각각의 픽셀로 표현되게 된다.
이때 이러한 그래픽 처리과정에서 프로그래머블한 단계에 대하여 프로그래머가 프로그래밍함으로써 GPU의 연산에 직접 관여할 수 있게 되는 것이다.
쉽게 말하자면 3차원 오브젝트 표면의 재질적 특성(물, 금속 등)같은 것을 나타내기 위해 필요한 연산을 구현하는 것이라 볼 수 있다.
쉐이더 언어도 여러가지가 존재한다. 대표적으로는 아래의 3가지가 있다.
세 언어 모두 C 기반이기 때문에 문법이 유사하다. 특히 Cg와 HLSL은 거의 똑같다.
자세한 비교글은 https://blog.naver.com/mrnglow/30185125600 참고.
대표적으로 Vertex Shader와 Fragment(Pixel) Shader가 있으나 그래픽스 API(OpenGL, DirectX 등)의 버전이 업데이트 될수록 쉐이더의 종류도 점점 증가하고 있다. 예로 DirectX의 경우 DirectX9 버전에서는 위 두 종류의 쉐이더만 있었으나 DirectX10에서는 Geometry Shader가, DirectX11에서는 Hull Shader, Domain Shader 등이 추가되었다.
렌더링 파이프라인 얘기한 김에 더 자세히 쓰고싶지만 일단 이정도만 적어두기로...
제가 정말 그냥 순수하게 궁금해서 물어봅니다.. 저 볼 것 없는 블로그는 제가 알기로 모든 포스트가 검색 비허용으로 되어있는데, 대체 언제 어디서 알게 해당 포스트를 알게 되신 건가요..?