D3D12 샘플 코드 설명 D3D12관련 잡담
2023년 6월 29일 방송분입니다.
2023년 6월 29일 방송분입니다.
D3D Tiled Resources를 사용한 텍스처 스트리밍 기능을 D3D11 / D3D12 / DXR 3개의 렌더러에 모두 추가했다. 그 과정에 소소한 깨달음이 있었다. GPGPU를 사용하면 대부분의 경우 결국은 CPU측 메모리로 결과를 가져와야 할 때가 많다. 최근 작업중이었던 텍스처 스트리밍도 마찬가지인데 어쨌든 GPU스레드가 버퍼를 스캔해서 어떤 텍스처를 로딩할지 GPU메모리에 써넣은 후 그걸 CPU측 메모리로 가져와서 CPU가 읽어야 한다. … More D3D Tiled Resources를 이용한 텍스처 스트리밍 – wait제거하기
최근에 이런 기사가 떠서 하드웨어 사이트들이 들썩거리는 모양이다. https://www.tomshardware.com/news/dx12-optimization-cpu-gpu-access-vram-simultaneously 직역하면 ‘GPU메모리에 CPU와 GPU가 동시에 억세스한다.’인데 이렇게 이해하면 안된다. 여기서 동시에 억세스 한다는 말은 프로그래머 입장에서 ‘CPU에서도 GPU메모리를 억세스 할 수 있다’는 의미이다. 전통적인 PC아키텍처에서는 CPU가 GPU메모리에 직접 접근하지 못한다. 물리적으로 CPU의 어드레스 선과 데이터 선이 GPU메모리와는 연결되어 있지 않다. 오로지 PCI-E버스를 통해서만 통신이 가능하다. 물론 … More DirectX 12 Update Allows CPU and GPU to Access VRAM Simultaneously 라는 기사의 의미
VOXEL HORIZON의 XBOX와 PC와 iPhone간의 네트워크 플레이 테스트. [지원 플랫폼]Windows Desktop(DX11/DX12/DXR)XBOX ONE(UWP on XBOX-DirectX11 feature level 11)XBOX Series S/X(UWP on XBOX-DirectX12 feature level 11)iPhone/iPad Devices(A12 Processor 이상 필요)mac(Apple Silicon) [사용된 기술]iOS/macOS – macOS API + metal API + BSD Socket + C++Windows Desktop – DirectX 11/12/DXR + winsock + IOCP + C++XBOX(UWP on XBOX) – … More VOXEL HORIZON iPhone XBOX PC 네트워크 플레이 테스트
최근에 VOXEL HORIZON에서 와이어 프레임으로 렌더링되는 박스들이 상당히 성능을 잡아먹고있음을 알게됐다. 본래라면 이런건 디버깅용 매시로나 쓰는거다.VOXEL HORIZON에서는 다수의 오브젝트를 선택해서 회전/이동을 시킬때 다수의 박스를 그리게 되므로 문제가 됐다. 첨부한 이미지와 같이 커틀러옹의 이미지로부터 변환된 복셀 오브젝트는 250개 정도 되고 이 오브젝트들을 선택했을때, 250개 정도의 박스를 렌더링 한다. 또한 회전/이동 시킬때 프리뷰 화면으로 250개 정도의 블럭(geometry … More D3D12의 Map()에 대한 고찰.
어제 방송중 게임이 크래시했던 원인 찾았다. CPU코드에서 크래시한게 아니고 D3D런타임이나 드라이버, GPU하드웨어 큐에서 예외가 발생한 것인데 D3D Debug Runtime으로 돌리던게 아니었기 때문에 관련 에러 메시지는 전혀 확인할 수 없었다. 물론 덤프를 떠도 소용없지. CPU코드는 아무 문제 없이 잘 돌고 있었으니까.하루종일 고민 하다가 저녁먹고 본격적으로 뜯어보기 시작했는데 다행히 원인을 찾을 수 있었다. [원인] 최근에 이펙트의 반투명 … More 디버깅 스토리 – DXR렌더러에 ABuffer를 이용한 OIT를 추가하고 나서 D3D Runtime crash 발생
D3D12 리소스 관리 전략. 2021년 5월 18일 방송분입니다.
건물 오브젝트에 이어 스키닝된 동적 매쉬들을 실시간으로 Acceleration Structure에 반영시켰다.Acceleration Structure 업데이트에 많은 비용이 들어갈걸로 추측하고 있기 때문에 일단 60FPS제한을 걸었다. 캐릭터 오브젝트의 변환(애니메이션, 위치, 스케일, 회전)을 Compute Shader에서 처리. 변환된 버텍스 데이터는 UAV로 전달된 ID3D12Resource에 저장. ID3D12Resource와 연관된 Bottom Level Acceleration Structure를 갱신. Top Level Acceleration Structure를 갱신. DXR의 가장 중요한 포인트는 ‘렌더링할 장면을 … More DXR – Update Acceleration Structure
2020년 9월 8일 유튜브 방송분입니다.
D3D12 예제를 보면 Constant Buffer를 system memory에 만들어 사용하고 있다. (CPU write, GPU read). D3D11에선 Constant Buffer를 GPU메모리에 두느냐, 시스템 메모리에 두느냐에 따라 성능차이가 꽤 난다. 20-30%정도는 차이가 나는것 같다. D3D12에서 테스트해보면 대략 10%정도 성능 차이가 난다. 당연히 GPU메모리에 두는 쪽이 빠르다. 크다면 크고 작다면 작은 수치다. 그럼 왜 D3D12예제에선 시스템 메모리에 Constant Buffer를 잡았을까. … More D3D12예제에서 Constant Buffer를 System Memory에 두는 이유.
댓글을 달려면 로그인해야 합니다.