추가된 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 할당 최적화

D3D Tiled Resources를 이용한 텍스처 스트리밍 – wait제거하기

D3D Tiled Resources를 사용한 텍스처 스트리밍 기능을 D3D11 / D3D12 / DXR 3개의 렌더러에 모두 추가했다. 그 과정에 소소한 깨달음이 있었다. GPGPU를 사용하면 대부분의 경우 결국은 CPU측 메모리로 결과를 가져와야 할 때가 많다. 최근 작업중이었던 텍스처 스트리밍도 마찬가지인데 어쨌든 GPU스레드가 버퍼를 스캔해서 어떤 텍스처를 로딩할지 GPU메모리에 써넣은 후 그걸 CPU측 메모리로 가져와서 CPU가 읽어야 한다. … More D3D Tiled Resources를 이용한 텍스처 스트리밍 – wait제거하기

DirectX 12 Update Allows CPU and GPU to Access VRAM Simultaneously 라는 기사의 의미

최근에 이런 기사가 떠서 하드웨어 사이트들이 들썩거리는 모양이다. https://www.tomshardware.com/news/dx12-optimization-cpu-gpu-access-vram-simultaneously 직역하면 ‘GPU메모리에 CPU와 GPU가 동시에 억세스한다.’인데 이렇게 이해하면 안된다. 여기서 동시에 억세스 한다는 말은 프로그래머 입장에서 ‘CPU에서도 GPU메모리를 억세스 할 수 있다’는 의미이다. P.S:BAR에 대해서는 잘 알지 못하므로 틀린 내용이 있을 수 있습니다. 틀린 내용이 있다면 지적 바랍니다. CPU에서 BAR를 이용해서 GPU메모리에 억세스할때 시스템 메모리를 거치지 … More DirectX 12 Update Allows CPU and GPU to Access VRAM Simultaneously 라는 기사의 의미

apple silicon m1 8 Core GPU vs RTX3070

요새 VOXEL HORIZON의 DX11/12버전을 macOS/iOS로 포팅하고 있다.https://youtu.be/oYhuwkkuGzg 일체의 외부 라이브러리 없이 C++과 metal API를 사용해서 작업중이다. DXR버전은 아직은 한참 무리고 DX11/12렌더러 기준으로는 거의 비슷하게 포팅했다. 물/파티클 빼고는 다 구현했다.이제 nvidia GPU와의 성능비교를 할 수 있겠다 싶었다. 스샷의 씬에서 렌더링하는 오브젝트는 캐릭터 한마리에 복셀 오브젝트 5개, 그리고 하늘&구름이다. 구름처리(Volumetric Cloudscapes)가 대량의 픽셀에 대해 상당히 복잡한 쉐이더를 … More apple silicon m1 8 Core GPU vs RTX3070