VOXEL HORIZON의 메모리 사용량 체크

테스트 하다가 생각나서 메모리 사용량을 확인 해봤다.
테스트한 맵은 폴리곤맵으로부터 변환했기 때문에 모양이 상당히 복잡하고 복셀 개수도 많다.

복셀 개수 : 복셀 하나당 50cm x 50cm x 50cm 로 환산 -> 9364002개

D3D11

committed: 2820580KB (2.82GB)
Working Set : 1817052KB (1.81GB)
Heap committed : 1695968KB ( 1.69GB)
GPU Dedicated : 692888KB (692MB)

D3D12

committed: 2705464KB (2.7GB)
Working Set : 1787316KB (1.78GB)
Heap committed : 1438620KB ( 1.43GB)
GPU Dedicated : 633308KB (633MB)

D3D12-DXR

committed: 4652400KB (4.65GB)
Working Set : 3201000KB (3.2GB)
Heap Committed : 1238880KB (1.23GB)
GPU Dedicated : 2606392KB (2.6GB)


  • 3가지 버전은 Rendererxxx.DLL하나만 다르고 그 외 사용하는 DLL들은 바이너리 레벨에서 완전히 같은걸 사용한다.따라서 메모리 사용량의 차이는 거의 전적으로 Rendererxxx.DLL의 차이에 기인한다.
  • D3D11/12는 API가 다르지만 동일한 렌더링 기술을 사용하므로 GPU메모리 사용량에 큰 차이는 없다.
    큰 차이가 없다고 했지만 초기 D3D12렌더러는 50%이상 메모리를 더 소모했었다.
    D3D12렌더러의 메모리를 줄이기 위해 상당히 많은 노력이 들어갔다.
    D3D12 Resource의 64KB Align문제를 프로그래머가 직접 해결해주지 않는다면 D3D11버전에 비해 GPU/시스템 메모리를 50% – 100% 더 소모할 수 있다.
  • raytracing모드일땐 rasterization에서 필요한 자료구조의 상당 부분을 생략 가능하므로 Heap 사용량은 줄어든다. 그래서 DXR버전이 heap사용량이 가장 적다.
  • DXR버전에서 committed 사이즈가 어마무시하다.
    일단 Acceleration Structure 구축/유지에 막대한 GPU 메모리가 필요하다.
    업데이트를 위해서 시스템 메모리도 대응해서 커지기 때문에 GPU메모리 사용량의 증가분만큼 시스템 메모리 사용량도 왕창 늘었다.

내 게임 완전 저사양 게임이었는데 맵좀 복잡한거 넣고 DXR들어가니 겁나 무거워졌네.


답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중