2015.08.06 22:40


 

[그림 : 랜더링 파이프라인]


랜더링 파이프라인은 크게 정점 처리, 래스터화, 프레그먼트 처리, 출력 병합의 단계로 구분할 수 있다.


(vertex processing) : 정점처리는 모든 정점에 대해 수행되며 변환을 비롯한 다양한 정점별 연산을 처리한다.

(rasterization) : 래스터화는 이제 변환된 정점으로 정의되는 폴리곤 내부영역을 채우는 프래그먼트를 생성하는 단계를 말한다.

(fragment processing) : 프래그먼트 처리는 각각의 프래그먼트에 대하여 텍스처링같은 작업을 거쳐 색상을 결정하는 단계이고

(output merger) : 마지막으로 출력병합단계는 프래그먼트와 현재 컬러버퍼의 색상을 병합하거나 하나를 선택하여 컬러버퍼를 수정하는 과정을 말한다.

 


월드변환 : 

게임세상에서 각각의 3차원 매쉬들은 모두 각각의 오브젝트 공간에서 정의되어있으므로 이들을 하나의 공통된 공간으로 사상시킬 필요가 있다.

이 공통된 하나의 공간을 월드 공간이라 부르며 이 공간으로의 변환을 월드변환이라 부른다.


뷰 변환 : 

월드변환을 통해 모든 오브젝트를 하나의 공간으로 사상시킨 이후에는 관찰자(카메라)의 위치에서 월드공간을 관찰함으로써 랜더링과정을 쉽게 만들 필요가 있는데 이런 역할을 하는 공간을 카메라 공간 혹은 뷰 공간이라 부른다.


절두체(View Frustum)

: 시야각( Field Of View)과 종횡비(aspect)에 의해 정의되는 하나의 볼륨을 근평면과 원평면으로 잘라낸 공간.


클리핑(clipping) 

: 하나의 폴리곤이 절두체와 교차할 경우 폴리곤의 경계를 잘라 내는 것.

( 하지만 클리핑은 카메라공간에서 절두체를 이용해 수행되지 않는다. 카메라 공간의 모든 물체는 "투영변환"을 통해 clip-space로 변환되는데 이곳에서 클리핑이 수행된다.


투영변환(projection transform)

: 절두체를 축에 나란한 직육면체 볼륨으로 변경하여 카메라공간의 모든 3차원 물체를 3차원 클립공간으로 변환시키는 것.

(이름과 다르게 2차원으로 투영하는 것이 아니라는 것을 주의하자. 실제 투영은 래스터화 단계에서 *원근투영나눗셈이 일어날 때 이뤄진다.)



래스터화 단계

: 보통 하드웨어로 고정된 단계로 프로그래밍이 불가능하다.

클리핑, 원근 나눗셈, 뒷면제거, 뷰포트변환, 스캔변환 등의 요소로 구성



*원근나눗셈

: 투영변환이후 w에 저장된 값으로 좌표를 나누는 연산.

 원근법의 구현에 해당하며 (x,y,z,w)의 동차좌표계에서 (x,y,z)의 카테시안 좌표로 변하게되는데 이를 NDC(normalized device coordinates)라 부름.


뒷면제거

: 카메라를 바라보지 않는 폴리곤을 제거하는 것


스캔변환

: 삼각형 내부를 채우는 프래그먼트를 생성한다. 즉 삼각형이 차지하는 스크린 공간의 픽셀 위치를 정하고, 삼각형의 정점별 속성을 보간하여 이를 각 픽셀 위치에 할당한다.


출처 : http://blog.naver.com/jidon333


신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바