D3D12 – ConstantBuffer, Descriptor Heap의 pooling

D3D12 엔진 개발상황 스프라이트 한개를 가지고 위치를 바꿔가며 찍을 수 있게 됐다. 스샷참고. 같은 스프라이트를(캐릭터 모델의경우도 마찬가지) 위치 바꿔가며 여러번 렌더링한다는게 D3D12에선 간단하지가 않다. D3D11은 즉시 상태를 바꾸로 렌더링하고 그 응답을 받고 다음을 진행한다. 하지만 D3D12는 배치처리를 한다. Command를 레코딩해서 마지막에 Execute하는 방식이라 이전처럼 한개의 ConstantBuffer를 잡아놓고 내용 고쳐써가며 렌더링을 여러번 할 수 없다. 스샷 참고. … More D3D12 – ConstantBuffer, Descriptor Heap의 pooling

D3D12 멀티 텍스쳐링 샘플

슬프게도 github에 개인이 올린 CreateDDSTextureFromFile의 d3d12버전이 제대로 작동하지 않음. d3d12샘플의 miniengine소스에서 긁어다가CreateDDSTextureFromFile()함수 다시 만듦. 1 ConstantBufferView와 2 ShaderResourceView를 하나의 디스크립터힙에 몰아넣어서 RootSignagture로 세팅했다. 리소스 바인딩에 대해서 이제 어느 정도 감 잡았다. … 파일에서 하나 읽고 메모리에서 하나 생성해서 멀티텍스쳐링 예제 만들어서 돌려봤다.

D3D12 – PipelineState폭발

D3D 12에선 ID3DPipelineState란 놈이 있다. 그러니까 과거에 DepthStencilState과 RasterState와 BlendState를 합치고 거기에 VertexShader와 PixelShader까지 합쳐서 한 세트로 만든 객체다. 이걸 미리 만들어두고 렌더링할때 한번만 set하면 물론 빠르겠지. 기존처럼 각 스테이트를 따로 설정하는거보다 당연히 빠르겠지. … 문제는 쉐이더 폭발에다 각종 스테이트의 조합 상태까지 곱해져서 엄청나게 많은 PipelineState가 미리 생성되어야 한다는 점이다. 성능을 올리기 위해서 정말 눈에 … More D3D12 – PipelineState폭발