HLSL

HLSL

High Level Shader Language (이하 HLSL) 은 Microsoft 에서 개발한 고 수준 shader 언어이다. 유사한 것으로 OpenGL 의 GLSL 이 있고, NVidia 의 Cg 의 문법과 거의 흡사하다.

구조

현재 크게 두가지 shader 단계로 나뉘어져 있는데

  • vertex shader - 각 vertex 마다 수행되는 shader 로 주된 역할은 vertex 를 local → world → view → projection 공간으로 변형transform 시켜 screen 상 좌표를 계산하는 것, texture uv 좌표 계산, 각 vertex 의 color 와 lighting 계수 계산 등이 있다.
  • pixel shader - screen 의 각 pixel 마다 수행되는 shader 로 조금 더 구체적으로 말하자면 vertex shader 에서 수행된 3개의 vertex (삼각형을 이루는) 가 차지하는 screen 상의 pixel 마다 수행된다. pixel shader 의 input 정보로써 들어오는 값들 (위치, normal, uv좌표 등) 은 3개의 vertex 에 들어있는 정보들을 보간interpolated 함으로써 구해지는데 이 과정을 rasterization 이라 한다. output 으로 최종 화면에 출력할 색상을 계산하여 리턴한다. 당연히 이 과정에서 texture / lighting / fog / bump / shadow 등이 관여될 수 있다.

선택적으로 Direct3D 10 부터 존재하는 shader 가 있는데

  • geometry shader - input 값으로 3개의 vertex 를 받고 이를 토대로 추가적인 삼각형(도형)을 생성하는 것을 목적으로 하는 shader 이다. 흔히 말하는 tessellation 수행을 한다. vertex shader 와 pixel shader 사이에 수행된다.

스펙

RenderMonkey (AMD)

간단하게 shader 를 편집 및 확인할 수 있게 해주는 툴. startup 에 좋음

참고

참조