본문으로 바로가기
반응형


(미루다 미루다 결국 집에 shader FX 설치...)




hlsl의 정의


고급 셰이더 언어(High Level Shader Language)는 마이크로소프트의 다이렉트3D API에 사용되는 셰이딩 언어이다. 고급 셰이딩 언어(High Level Shading Language)라고도 불리며 줄여서 HLSL이라고도 불린다. 이 셰이딩 언어는 OpenGL API에서 표준으로 사용되는 셰이딩 언어인 GLSL과 유사한 언어이다. 또한 엔비디아의 Cg 셰이딩 언어와도 매우 유사한데, 이는 서로 협력하여 개발하였기 때문이다.


특징


HLSL의 프로그램 형식에는 3가지가 있다. 버텍스 셰이더, 지오메트리 셰이더, 그리고 픽셀 셰이더이다. 다이렉트3D 10 인터페이스에서는 지오메트리 셰이더가 버텍스 셰이더와 픽셀 셰이더 사이의 파이프라인 가운데 새로 추가되었다. 버텍스 셰이더는 응용 프로그램이 제공하는 정점에 각각 붙어 실행되어 주로 이하의 처리를 담당한다. 객체 공간으로부터 시 공간에의 정점 변환이나 텍스처 좌표의 생성, 또 정점의 접선이나 종법선이나 법선 벡터와 같은 광선의 계 계산 등에 쓰인다. 버텍스 셰이더를 통해 정점의 그룹이 입력되었을 때, 출력 좌표는 그 영역내에서의 픽셀을 결정하기 위해서 보간 되게 된다. 이러한 작업은 레스터라이제이션으로 더 잘 알려져 있다. 이러한 픽셀이 각각이 픽셀 셰이더를 통과하는 것으로, 결과적으로 화면상의 색이 계산된다.

또, 다이렉트3D 10 인터페이스 또는 다이렉트3D 10 하드웨어를 사용하는 응용 프로그램은 지오메트리 셰이더를 직접 지정할 수도 있다. 이 셰이더는 삼각형의 3개의 정점을 입력받아 추가의 삼각형을 생성해 틈새 없게 채운 후, 레스터라이저에 보내게 된다.



추가 용어 설명


버텍스 쉐이더(Vertex shader) : 버텍스 셰이더는 주로 물체의 정점 정보에 수학적인 연산을 함으로써 물체에 특별한 효과를 주는 데 쓰인다. 각각의 정점이 정의되는 방법은 다양하다. 정점이 가지는 정보는 예를 들어 3차원의 위치를 나타내는 x, y, z 좌표나, 색상, 텍스처, 조명 정보 등이 있다. 버텍스 셰이더는 이런 정점의 정보값을 변화시켜서, 물체를 특별한 위치로 옮기거나, 텍스처를 바꾸거나, 색상을 바꾸는 등의 일을 할 수 있다. 하지만 기존의 정점을 지우거나 새로운 정점을 추가하는 등의 작업은 할 수 없다.


지오메트리 쉐이더(Geometry Shader) : 지오메트리 셰이더는 버텍스 셰이더에서는 할 수 없는 점이나, 선, 삼각형 등의 도형을 생성할 수 있는 기능이 있다.

지오메트리 셰이더 프로그램은 버텍스 셰이더가 수행되고 난 뒤에 수행된다. 지오메트리 셰이더 프로그램은 버텍스 셰이더를 거쳐온 도형 정보를 입력받는데, 예를 들어 정점 3개가 지오메트리 셰이더에 들어오면, 셰이더는 정점을 모두 없앨 수도 있고 더 많은 도형을 만들어 내보낼 수도 있다. 지오메트리 셰이더를 지나간 도형 정보는 레스터라이즈를 거친 뒤 픽셀 셰이더를 통과하게 된다.

지오메트리 셰이더는 테셀레이션이나 그림자 효과, 큐브 맵을 한번의 처리로 렌더링하는 데에 주로 쓰인다.


지오메트리 셰이더는 어셈블리어나, Cg, HLSL, GLSL 등으로 프로그래밍할 수 있다. 지오메트리 셰이더는 DirectX 10 버전부터 시작되었으므로, DirectX10 버전 이상의 HLSL로만 프로그래밍 할 수 있다. OpenGL 은 3.2 이상부터 GLSL 로 프로그래밍 할 수 있다.


픽셀쉐이더(Pixel Shader) : 픽셀 셰이더는 렌더링 될 각각의 픽셀들의 색을 계산한다. 때문에 픽셀 셰이더는 최종적으로 픽셀이 어떻게 보일지를 결정한다. 픽셀 셰이더는 간단하게 언제나 같은 색을 출력하는 간단한 일에서부터, 텍스처로부터 색을 읽어오거나, 빛을 적용하는 것, 범프 매핑, 그림자, 반사광, 투명처리 등 복잡한 현상 등을 수행할 수 있다.

픽셀 셰이더는 각각의 픽셀들이 렌더링될때 수행되기 때문에, 다른 픽셀들과 아무런 연관이 없다. 픽셀 셰이더는 오직 한 픽셀만을 연산하기 때문에, 주변의 픽셀이나, 그리는 도형에 대한 정보를 알 수 없다. 이 때문에 픽셀 셰이더는 스스로 매우 복잡한 효과를 만들어 낼 수는 없다.

픽셀 셰이더는 픽셀의 색 말고도 깊이(Z버퍼에 쓰인다)나 또 다른 색(다른 렌더 목표물에 쓰인다)을 출력할 수 있다.




-위키디피아 참조-


반응형

'Technical Report > Unity Shader' 카테고리의 다른 글

Autodesk Media & Entertainment 2012  (4) 2012.07.23
lighting 관련 몇가지 용어  (0) 2012.07.15
Cg Shader Programming  (0) 2012.07.12
120710 아트 세미나 Photoshop Tool and Tip  (0) 2012.07.08
binormal, tangent normal  (5) 2012.05.24