D3D12 리소스 수명관리 + 디버깅 스토리

렌더링 중 GPU내부에서 크래시를 유발하는 버그를 찾아서 수정했다. 재현이 쉽지 않기 때문에 요 몇 개월 사이에 간헐적으로 나오던 GPU크래시의 원인이라고 단정지을 수는 없지만, 이것까지 해서 적어도 내가 인지하고 있는 GPU크래시 유발 가능한 버그는 다 잡았다. D3D12는 리소스가 gpu에서 사용중인지 아닌지를 판별하지 않고 자동 관리도 하지 않기 때문에 GPU에 명령을 제출하고 나서 작업이 완료됐는지를 확인하지 않고 … More D3D12 리소스 수명관리 + 디버깅 스토리

인프런에 DirectX Raytracing 강좌 올렸습니다.

인프런에 DirectX Raytracing 강좌 올렸습니다. D3D12프로그래밍 해봤는데 쓸모가 없다고 느끼시는 분들이 계실텐데 Raytracing까지 하면 쓸모가 있습니다. D3D12는 Raytracing때문에 존재한다고 봐도 무방합니다. 강좌를 구입하실 경우 인프런에서 검색해서 구입하지 마시고 아래 링크로 직접 찾아가시면 저한테 금전적으로 조금 더 도움이 됩니다. DirectX Raytracing 프로그래밍 – https://inf.run/ovHNq D3D12프로그래밍 기초편 – https://inf.run/WYdms D3D12프로그래밍 기초 플러스 – https://inf.run/dW4QZ Windows Debugging tip … More 인프런에 DirectX Raytracing 강좌 올렸습니다.

추가된 D3D12_RESOURCE_STATES 열거형 – D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE

초기(VS2015시절) D3D12와 현재 최신 D3D12 SDK의 D3D12_RESOURCE_STATES 열거형 비교. 요 몇 일 전에 ID3D12Debug5::SetEnableGPUBasedValidation()함수의 존재를 알게 되어 GPU Validation을 켜고 테스트를 돌렸다.이전까지 d3d validation을 다 통과해왔는데 ID3D12Debug5의 GPU validation을 켜니 새로운 에러가 쏟아져 나왔다. 가장 이해가 안됐던게 Texture Layout Barrier가 호환되지 않는다는 에러.구글링 해봐도 전혀 정보가 없다. 어제 하루종일 삽질한 끝에 Resource Barrier문제란걸 알았다.이게 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE와 … More 추가된 D3D12_RESOURCE_STATES 열거형 – D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE

DXR의 BLAS 할당 최적화

최근 기술방송 -D3D12게임프로젝트 로딩성능 개선 ( https://www.youtube.com/live/R_sMY_jjZnE?si=qGerBiAmCkMehLbp )- 에서 언급했다시피 CreateCommittedResource()함수가 엄청 느리기 때문에 할당하는 버퍼 수가 많다면 성능에 상당한 영향을 준다. 이 문제를 해결하기 위해 D3D12Resource를 Heap에 맵핑한 D3DResourceBufferHeap를 만들었고 주요 매시 데이터는 D3DResourceBufferHeap에서 할당하도록 했다. 다만 RayTracing을 위한 BLAS메모리는 아직 처리하지 못했다. DXR렌더러에서 BLAS생성하느라 D3D12Resource를 엄청 많이 할당하는데 이게 성능에 적지 않게 영향을 … More DXR의 BLAS 할당 최적화