본문 바로가기
DirectX/[AssortRock] DirectX11 2D

230112_D2D 렌더링 파이프라인 개요_2

by 헛둘이 2023. 1. 12.

월드 변환의 순서 : 크기 -> 회전 -> 위치 (크자위)

* 행렬은 곱셈의 순서가 바뀌면 결과가 달라진다 (교환법칙이 성립하지 않기 때문)

 

원근감 = 투영 변환

크기변환이 이뤄지지 않는 경우 직교투영을 쓰기도 함

 

투영 변환이 끝나면 파란색 네모 안에 모든 물체가 들어감

 

 

* NDC 좌표계란?

x, y는 -1~1 범위, z는 0~1 범위로 이루어진 좌표계를 의미함

 

* NDC 좌표계를 쓰는 이유?

 여러 해상도에 대응하기 위해서임

 

이렇게 비율 좌표로 바뀌어 있는 상태를 클립공간이라고도 한다.

 

정점처리단계를 지난 정점은 레스터라이저단계로 넘어간다

레스터라이저단계에서는 화면상에 나와야 하는 픽셀들을 계산해서 만들어줌

 

레스터라이저를 거치면서 각각 픽셀 위치에 맞는 정점을 넣어준다.

 

*UV좌표란?

정점에서 어디서 픽셀을 가져와야 하는지 그 위치를 나타내는 좌표

픽셀 단위로 저장하면 연산량이 너무 많음

 

*UV로 표현하는 이유?

텍스쳐에서 가져오는 좌표를  그냥 UV라고 하기로 함

XY라고 하면 기존 좌표계와 겹치기 때문

 

또 레스터라이저 단계에서 하는 일 중 하나는 클리핑이 있다

클리핑은 화면에 보이지 않는 것들은 제외시키는 연산

실제 클리핑 공간에선 Z값을 레스터라이저에 넘겨준다.

 

*프로젝션(투영) 행렬이란?

거리에 따라 크기를 바꿔주는 행렬 

투영행렬에서는 값을 실제로 계산하지 않는다

W가 0이면 벡터, W가 1이면 점

근데 W는 안쓰므로 Z를 넣어줌

 

레스터라이저를 거치면 그 때 프로젝션행렬이 완성된다.

클리핑을 원근 나눗셈이라고도 한다.

 

이렇게 해서 뒷면 제거(백페이스컬링)을 하고

뷰포트 변환(비율좌표계로 변환)을 해주고 나면 2차원 좌표로 구성된 NDC 좌표가 완성됨

 

*픽셀셰이더에서 받는 좌표는 NDC 좌표계

 

버텍스셰이더에서 보간된 UV좌표로 텍스쳐에 픽셀을 가져와서 그려준다.

OutputMerger에서는 깊이 스탠실 버퍼가 있다.

화면과 똑같은 크기의 텍스쳐를 만들고 애들을 그려준다.

'DirectX > [AssortRock] DirectX11 2D' 카테고리의 다른 글

230118_ConstantBuffer  (0) 2023.01.18
230116_D2D 삼각형 그리기  (0) 2023.01.16
230113_D2D 삼각형 그리기 예습  (0) 2023.01.14
220113_D2D 장치 초기화  (0) 2023.01.13
230111_D2D 렌더링 파이프라인 개요  (0) 2023.01.11

댓글