본문 바로가기

전체 글339

3. RootTable 지난 번에 설명했듯 RootDescriptor는 무한정으로 늘릴 수 없다. 어떤 정책을 사용할 것인가에 따라 해당 DescriptorTable이 활성화된다. 1번을 켜겠다 or 2번을 켜겠다에 따라 활성화되는 테이블이 달라진다. - ConstantBuffer에 값을 넣고 그 값을 참조하는 View를 만든다. - View를 참조하는 DescriptorHeap을 만든다 - 그 Heap을 Shader Visible한 Heap에 복사한다. (TableDescriptorHeap) - 그려질 여러 도형에 대해 값을 세팅하고 각각 적용하려면 타이밍 문제가 발생하므로 - Heap을 참조하는 View는 여러 개가 되어야 한다. (값을 써넣는 부분은 즉시 이루어지고, 상수 버퍼를 참조하는 부분은 CommandList로 작.. 2023. 1. 16.
2. Constant Buffer & Root Signature 1. Constant Buffer cbuffer TEST_B0 : register(b0) { float4 offset0; } cbuffer TEST_B1 : register(b1) { float offset1; } - cbuffer : 상수 버퍼를 선언하는 키워드 - TEST_B0 : 상수 버퍼 이름 - register(b0) : 상수 버퍼를 저장할 레지스터 공간을 지정 (b0은 GPU에 지정된 레지스터 공간) - float offset0 : 상수 버퍼 내부에 정의된 변수 이름과 타입 상수 버퍼(Constant Buffer란?) - GPU에서 프로그램 실행 도중 사용되는 상수값 - 이런 상수 값들은 쉐이더 프로그램에서 사용되며 프로그램 실행 중 동적으로 수정될 수 있다. *상수 버퍼의 크기는 256의 배.. 2023. 1. 15.
1. DirectX12 초기화 1. Devcie 1-1. IDXGIFactory - SwapChain을 생성할 때 사용 1-2. ID3D12Device - DescriptorHeap, CommandQueue 등을 생성할 때 사용 - DX12의 메인 바디 역할을 한다. DescriptorHeap이란? - GPU로 전달할 데이터를 관리하는 객체 - Descriptor는 GPU에서 사용할 데이터를 의미한다. - DescriptorHeap을 사용하면 GPU에서 사용할 데이터를 효율적으로 관리할 수 있다. CommandQueue란? - 커맨드를 전달하는 객체 - 커맨드는 GPU에서 수행해야 할 작업을 의미하고 커맨드 큐에 의해 전달된다. 왜 큐에 담아서 전달하지? - 작업을 순서에 맞게 실행할 수 있다.(순차적으로 실행하며, 이전 작업이 끝나.. 2023. 1. 15.
230113_D2D 삼각형 그리기 예습 1. 버퍼 생성 ID3D11Buffer는 GPU 메모리에 저장된 버퍼를 의미한다. 주로 버텍스데이터, 인덱스데이터, 상수 데이터를 저장할 때 사용된다. ID3D11Buffer를 사용하면 GPU에서 사용할 데이터를 저장할 수 있고, 이를 통해 정점 쉐이더, 픽셀 쉐이더에 전달할 수 있다. 용도에 따라 정점 버퍼, 인덱스 버퍼, 상수 버퍼 등으로 분류할 수 있다. 2. 쉐이더 생성 쉐이더 코드 HLSL, GLSL로 작성되며 는 GPU가 이해할 수 있는 바이너리로 컴파일되어야 한다. ID3DBlob는 컴파일된 쉐이더 코드를 저장하는데 사용된다. ID3D11VertexShader는 3D 모델의 정점 데이터를 처리하는데 사용되는 정점 쉐이더를 나타낸다. 정점 쉐이더는 3D 모델의 정점 데이터를 가지고 투영변환, .. 2023. 1. 14.