요새 VOXEL HORIZON의 DX11/12버전을 macOS/iOS로 포팅하고 있다.
https://youtu.be/oYhuwkkuGzg
일체의 외부 라이브러리 없이 C++과 metal API를 사용해서 작업중이다. DXR버전은 아직은 한참 무리고 DX11/12렌더러 기준으로는 거의 비슷하게 포팅했다. 물/파티클 빼고는 다 구현했다.
이제 nvidia GPU와의 성능비교를 할 수 있겠다 싶었다.
스샷의 씬에서 렌더링하는 오브젝트는 캐릭터 한마리에 복셀 오브젝트 5개, 그리고 하늘&구름이다. 구름처리(Volumetric Cloudscapes)가 대량의 픽셀에 대해 상당히 복잡한 쉐이더를 호출하므로 대부분의 부하는 GPU에 걸린다.
구름처리는 쉐이더는 compute shader와 vertex/pixel shader를 고루 사용하므로 GPU 성능 테스트로는 좋은 케이스가 될 것이라고 생각한다.
해상도: 거의 4K.
Windows PC(D3D11):

RTX3070, D3D11
493FPS ,GPU점유율 90%,
Windows PC(D3D12):

RTX3070, D3D12
431FPS ,GPU점유율 93%,
m1 macmini(metal) :

Apple Silicon 8 Core GPU, metal API
45FPS , GPU점유율 75.9%
중첩렌더링을 사용하면 macos빌드에서 성능을 조금 더 높일 수 있을텐데 아직 완료하지 못했다. 현재 GPU점유율이 76%정도 나오고있으니 모든 측정 결과에 대해 GPU점유율 100%를 달성했다고 가정하면
RTX3070(D3D11) : 547.77 FPS
RTX3070(D3D12) : 463.44 FPS
m1 macmini : 59.28 FPS
RTX3070(D3D11)가 9.24배 , RTX3070(D3D12)가 7.8배 m1 8 Core GPU보다 빠르다.
대충 8-9배 격차인데 이거 생각보단 잘 나오는건가?
P.S
이 게시물을 올린후 하루 지나서 측정에 오류가 있음을 확인했다.
맥의 경우 화면출력은 4K지만 dpi조정때문에 백버퍼가 5K로 잡혀있는 것을 확인. 그래서 4K기준으로는 프레임 레이트가 더 나온다.
PC의 경우 DOF가 켜져있었는데 이를 끄면 50프레임 정도 더 올라간다. 맥버전의 경우는 아직 DOF를 구현하지 않았으므로 당연히 꺼져있다.
양쪽 결과 다 오류가 있지만 PC버전 DOF들어가고 맥버전 해상도 더 높았던거 감안하면 뭐 그냥 또이또이인듯 해서 게시물은 그대로 두기로 함. 조건 똑같이 맞춰서 테스트해도 얼추 비슷할 것이다.