본문 바로가기

프로그래밍/DirectX

Rasterizer

래스터화기 단계의 처리 공정
기하 자료를 렌더 타겟에 저장하기에 적합한 이미지 기반 자료로 효율적으로 변환하는데 필수적이다
입력된 기본 도형이 처음 처리되는 연산은 Culling이다

Back Face Culling (후면 추려내기)
: 뒤쪽(시점에서 멀어지는 쪽)을 향한 면을 제외시키는 것. 이 단계에 입력되는 기본도형 중 Face라는 개념이 유효한 것은 삼각형 뿐이라서 삼각형에만 적용된다

Culling에 관련된 설정은 CullMode와 FrontCounterClockWise 이다.
IA로 입력할 기하구조 자료의 성격에 따라 시계 방향을 전면으로 할 것인지 반시계 방향을 전면으로 할 것인지 결정한다

FrontCounterClockWise는 기본도형의 어느 쪽이 전면이고 어느 쪽이 후면인지를 결정한다
CullMode는 전면과 후면중 어느 것을 Culling 할 것인지 결정한다
원하는 효과를 얻기 위해서 하나의 기하구조를 CullMode를 달리 두어 여러 번 렌더링하는 알고리즘들도 있다

Primitive Culling (기본도형 선별)
: 정규화된 장치 좌표 안의 단위 입방체(Unit Cube)에서 완전히 벗어난 기본도형을 제외하는 것이다

Clipping Plane (절단 평면)
: Unit Cube의 각 면에 의해 정의되는 평면들이다

주어진 기본도형이 Unit Cube에 완전히 포함되어 있는지 아니면 일부만 포함되어 있는지 판단한다
기본도형이 Unit Cube에 완전히 포함되어 있으면 그 기본도형에 대해서는 클리핑을 하지 않고, 일부분만 포함되어 있는 경우는 기본도형을 잘라내서 Unit Cube에 완전히 포함되어 있는 부분으로만 새 기본도형을 생성하고 바깥 부분은 폐기한다
이 연산을 절두체 절단(Frustum Clipping)이라 한다

Culling과 Clipping을 통과한 기본도형들은 동차 나누기(Homogenous Divide)를 수행한다
투영된 점을 w성분으로 나누는 것이다. 결과로 [x/w, y/w, z/w, 1] 형태의 동차 좌표가 나온다
각 좌표 성분의 크기가 w 좌표에 의해 비례되었기 때문에, 정규화된 장치 좌표(Normalized Device Coordinates)라고 부른다
w 성분은 1일 수도 있고 아닐 수도 있다

뷰포트 변환 (Viewport Transformation)
: 이 지점에서 기본도형의 정점들은 x, y 좌표 성분의 범위는 [-1,1] 구간이고 z성분은 [0,1]이다.
뷰포트는 이 좌표들을 화면 공간 픽셀 좌표로 매핑하는데 필요한 정보를 제공한다
뷰포트 변환이 끝나면 정점의 위치는 기하구조가 렌더 타겟에서 차지하는 영역을 알려주는 x, y 성분과 이후 깊이 버퍼링 시스템에서 개별 Fragment의 가시성을 판정하는데 쓰이는 깊이 값에 해당하는 z 성분으로 나뉜다

'프로그래밍 > DirectX' 카테고리의 다른 글

DirectX 11 기초  (0) 2019.03.28
3D 애니메이션 이론 2  (0) 2019.03.26
Directx11 렌더링 파이프라인  (0) 2019.03.22
3D Animation 이론 1  (0) 2019.03.22
Light / Rendering  (0) 2019.02.28