렌더링 파이프라인이란 어떤 렌더링 라이브러리가 그래픽카드를 어떻게 사용해서 화면에 무언가를 보이게 하느냐에 대한 과정을 말한다.
렌더링 파이프라인은 렌더링 라이브러리마다 다르다. 다르지 않은 점은 보통 레스터라이저라는 단계가 있고 가장 핵심단계이다.
모니터의 픽셀에 이미지 건져내(?)서 보여주는 거..
(가운데가 단계, 왼쪽은 리소스 표현, 오른쪽은 어떤 인터페이스를 통해서 사용할 수 있는지를 설명)
모니터에서 어떤 픽셀을 선별하는 과정.
아직 모니터에 뭔가 뜰 수 있는 도형이 아니다. 점을 준비한다. 우리도 버텍스버퍼 만들거임.
점을 변형시킨다. 보통 행렬 사용. 버텍스 쉐이더가 다음의 역할을 한다. 버텍스 쉐이더에서 투영행렬까지 곱해짐.
인덱스버퍼는 점을 연결하는 순서에 관여한다. 오른쪽에 PRIMITIVE_TOPOLOGY
는 연결하는 방식에 관여.
인덱스버퍼와 토폴로지라는 게 도형을 만들어 준다.
여기까지 해도 아직 도형이 뷰포트에 나오지도 않음. 레스터라이저 단계에서 뷰포트행렬 곱해줌.
앞면 뒷면 제거, 깊이값 z에 의한 그릴지 안그릴지를 결정, 화면 밖으로 나간거 제외 기능
건져낸 픽셀에 무슨색을 칠할지, 아니면 이미지로 채울지 를 정함
어디에 이 색을 출력하는지, 아니면 어떤 이미지에 이 결과를 그리는지 등등 마지막 결정.
blending => 기존에 뭔가 그려져 있었으면 걔랑 어떻게 섞을지
아래 버퍼들을 다 따로 쓰는 일은 없고 함께 쓴다. 그래서 엮어서 얘기하는 게 메쉬임. 근데 다이렉트에서는 메쉬라는 개념이나 이름도 없음. 우리가 따로 EngineMesh 만들어서 쓸거임.
3D로 그려지는 점은 위치만 가질 필요가 없다. 정확히는 위치빼고는 다 자유. 점 1개를 구성하는 요소(점이 갖고 있도록 넣어주고 싶은 정보)들을 마음껏 넣으면 됨.
점이 만들어짐 -> 저장장치 중에 그래픽카드 램에 들어가게 됨
BindFlags
로 한다.삼각형을 어떻게 그릴지에 대한 순서 넣어줌. 점 6개를 넣어주는 것보다 정수 6개를 넣어주는 게 더 합리적이라서 이런 방식으로 쓰게 됨.
EngineDevice Initilize()될 때
> 그 안에서 UEngineGraphicDevice::EngineResourcesInit() 실행
> 그 안에서 VectexBuffer Create
> IndexBuffer Create
> Mesh Create