강의 링크

https://inf.run/1HYWy

 

학습 페이지

 

www.inflearn.com

 

파이프라인을 설명할 때는 처음부터 각 단계에 집중하기보다는 이 파이프라인으로 무엇을 해주는 지를 포괄적으로 

설명 하는 것이 좋다.

3D 게임을 만든다고 했을 때 3D 게임 세상을 2D화면으로 표현해주기 위해 변환을 해줘야하는 데 변환해주는 일련의 규칙적인 단계들을 모아서 렌더링 파이프라인이라고 한다. 파이프라인의 단계는 밑의 그림과 같다 이런 작업을 GPU를 통해 이루어지게 된다.

https://learn.microsoft.com/ko-kr/windows/win32/direct3d11/overviews-direct3d-11-graphics-pipeline

 

● IA(Input Asssembler)단계

입력을 조립하는 단계로 정점을 건네주고 그 정점이 삼각형이나 선, 점인지 어떤식으로 구성되어 있는 지에 관한 정보와 

정점만을 건네주면 리소스가 너무 커지기 때문에 색인정보, 즉 인덱스 정보를 같이 넘겨준다. 이때는 좌표가 아직까지 로컬

좌표이다.

이때 로컬좌표는 자기 자신의 좌표계를 기준으로 하는 좌표로 자신의 원점을 중심으로 기하학적으로 어떻게 생겼는지에 관한 좌표정보이다.

 

● VS(Vertex Shader)단계

이 단계에서는 물체를 이루는 기본 도형인 삼각형의 정점별로 실행되는 단계로 World, View, Projection변환 행렬을 곱해주는 것으로 로컬좌표의 물체를 실제 월드에 배치할 수 있다.

 

● RS(Rasterizer State)단계

이 단계는 카메라의 값에 따라 그려주지 않아도 되는 오브젝트를 걸러주는 클래핑과 같은 작업과 후면으로 된 오브젝트는 그려주지 않는 등의 작업을 해주고 마지막으로 보간 작업을 해줘서 정점을 픽셀 단위로 만들어 준다.

● PS(Pixel Shader)단계

픽셀 단위로 넘어온 것의 색상을 정해주는 단계로 일반적인 물체의 색상 뿐만 아니라 여러가지 조명 연산이 적용된 색상까지 반영해주게 된다.

 

● OM(Ouput Merge)단계

색상까지 정해진 후에 텍스처나 렌더타켓을 그려주거나 렌더타켓 뷰를 설정해서 Swap Chain을 연결해준 다음 후면 버퍼 

전면 버퍼에 최종적으로 그려주게 되는 단계이다. 그려주고 Present를 해주면 화면에 출력 된다.

 

● 행렬

 

SRT연산에서 행렬연산을 많이 해주게 되는데 이때 x y z 에서 1을 붙여주는 이유는 선형 변환을 위해서 필요하다.

만약 이 부분이 0이 된다면 선형 이동을 하지 않는다. 방향벡터를 이용해서 방향만 적용할 때 이렇게 사용하면 회전

만 적용된다. 

1을 붙여주면 TransformCode 이고 0을 붙여주면 TransformNormal 이라고 보면 된다.

 

행렬 연산에서 우선 순위는 Scale Rotation(자전) Translation Roation(공전) Parent(계층) 이다.

 

+ Recent posts