2020년 7월 1일 수요일

DirectX - 그래픽 파이프라인

1. 데이터

CPU -> RAM -> Disk,  GPU -> VRAM 의 데이터 흐름이 있음.

RAM과 VRAM 이 DirectX, OpenGL 로 통신을 하게 됨.

이때 RAM 과 VRAM 을 통합해서 하나의 RAM 에서 CPU, GPU 가 모두 사용하는 기기가 플레이스테이션, XBOX 같은 기기임.

RAM과 VRAM 을 하나처럼 사용할 수 있게 하려는 시도가 DirectX12 이후로 시도중.


2. 공간이동

Vertex -> Local -> World -> View -> Proj -> Back Cull -> NDC -> ViewPort


NDC(Normalized Device Coordinate)

UI 와 다르게 Y 축이 아래서 위쪽이 양의 방향임

XY 축이 -1~1 사이이며 Proj 된 벡터에서 w 값을(기존의 z 값이 저장됨) 나눠서 만듦.

Project Matrix 가 X, Y 축을 시야각에 따라 확대해서 성립하는 z = +-ax, z = +-ay 의 평면을 기준으로 화면이 잘리게 됨. ( z < ax 이면 너무 오른쪽이라 잘리는 셈)

Rasterizer 에서 처리됨 


VeiwPort

윈도우 같은 화면에선 0,0 이 LeftTop 이고 화면의 크기도 정수단위이다.

이를 위해서 NDC * 화면크기.x/2 + 화면 원점 + 화면크기/2 를 처리한다.


댓글 없음:

댓글 쓰기

List