[DirectX12] #Part 2 - Direct 3D 기초
"DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다.
현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행.
"자원"과 자원을 참조하는 "서술자"
렌더링 과정에서 GPU는 자원들에 자료를 기록하거나, 자원들로부터 자료를 읽어 들인다. 그리기 명령을 제출하기 전에, 먼저 해당 그리기 호출이 참조할 자원들을 렌더링 파이프라인에 묶어야 합니다. 이를 Binding이라고 표현합니다. 하지만, 자원들이 렌더링 파이프라인에 직접 묶이지 않고, 해당 자원을 참조하는 서술자 객체가 바인딩 됩니다. 서술자 객체는 GPU에게 자신이 참조하는 자원을 서술해주는 경량의 자료구조라고 할 수 있습니다. GPU는 왜 "서술자"라는 간접층을 두어 자원들에 접근할까요? GPU 자원은 범용적인 메모리 조각이기 때문입니다. 같은 자원을 렌더링 파이프라인의 서로 다른 단계(Stage)에서 사용할 수 있게 됩니다. 예를들면, 텍스처를 렌더 대상으로도 사용하고, 이후 단계에서 텍스처의 표본들을 추출해서 셰이더의 입력자료로도 활용되죠. 그러므로, "서술자"는 자료를 저장하는 수단이면서, 한편으로 자원을 GPU에게 서술하며, Direct3D에게 자원들의 사용법을 알려줍니다.
서술자의 형식 혹은 종류
서술자 종류 | 설명 |
CBV/SRV/UAV | Constant Buffer, Shader Resource, Unordered Access View |
표본(Sample)추출기 서술자 | Sampler 자원을 서술한다 |
RTV | Render Target |
DSV | 깊이+스텐실 자원을 서술 |
서술자 힙
"서술자 힙"은 서술자들의 배열이다. 응용프로그램들이 사용하는 서술자들이 저장되는 곳이다. 각 힙마다 같은 종류들의 서술자들이 저장되어 있으며, 한 종류의 서술자를 갖는 서술자힙을 여러개 사용 할 수 있습니다.
추가 내용
하나의 자원을 참조하는 여러개의 서술자들이 존재 할 수 있습니다. 예를들면 한 자원의 여러 영영을 여러 서술자가 참조 할 수 있죠. 어떤 자원은 여러 Stage에 Binding되는 것이 가능하며, 이때 단계마다 개별적인 서술자가 필요합니다. 하나의 텍스처를 렌더링 자원으로, 또 셰이더 자원으로 묶이는데, 이때 RTV 형식의 서술자, 그리고 SRV 형식의 서술자가 필요하죠.
자원들은 이들을 참조하는 개별적인 서술자들을 통해 파이프라인의 여러 단계에 binding 됩니다.
'게임개발 > DirectX12' 카테고리의 다른 글
[DirectX12]#Part2 - Direct3D의 기초_DXGI (0) | 2021.12.28 |
---|---|
[DirectX12]#Part2 - Direct3D의 기초_엘리어싱과 다중표본화 (0) | 2021.12.27 |
[DirectX12]#Part2 - Direct3D의 기초_교환 사슬 & 깊이 버퍼링 (0) | 2021.12.24 |
[DirectX12]#Part2 - Direct3D의 기초_텍스처 (0) | 2021.12.23 |
[DirectX12]#Part2 - Direct3D의 기초_COM (0) | 2021.12.23 |