GPU를 이용한 PVS #4 – 게임 클라이언트 테스트

맵에디터가 아닌 게임 클라이언트에서의 테스트다.
오프라인 PVS빌드에 GPU 점유율 86%정도로 약 13분이 걸렸다.
Voxelization에선 그나마 DX12버전이 약간 더 빨랐는데, 이 경우는 그냥 DX11이 더 빠르다.
더 정확히 얘기하면
DX11의 싱글스레드로 CPU점유율 20%, GPU점유율 86% – 13분(대략) 였고,
DX12의 멀티스레드(6스레드)로 CPU점유율 90%, GPU점유율 100% – 13분 30초(대략) 이었다.
DX12는 정말 답이 없다. 아마 AMD GPU였으면 그래도 DX12가 좀더 빨랐을것이다.nvidia의 경우 드라이버에서 상당히 스케쥴링을 잘해주기 때문에 내가 DX12에서 멀티스레드를 어떻게 써도 DX11보다 빠르긴 힘들다.

leaf를 더 작게 설정하면 실시간 렌더링 성능을 더 높일 수 있다. 그러나 leaf를 잘게 자르면 오차가 커지고 오차를 줄이려면 빌드할때 샘플링 간격을 좁게 잡아야 한다. 결과적으로 빌드 시간이 길어진다. 현재는 leaf가 좀 무식하다 싶을 정도로 크다(20m x 16m x 20m). 오차와 빌드시간 사이에서 상당히 고민했는데 대충 이 정도가 타협선인것 같다.다만 여기서 x,z축으로 4m정도씩 줄여볼 여지는 있다.
오차가 있을 경우 현재 씬에서의 프러스팀 컬링의 결과를 현재 카메라가 위치한 leaf의 PVS테이블에 그대로 반영하는 식으로 보정이 가능하다. 아니면 현재 leaf에만 대해서 정밀도를 높여서 다시 빌드할수도 있다.

일단 이 정도로만 해도 View Frustum culling에 비해서 확실히 성능이 높다.
맵이 더 넓고 더 복잡하면(실내 공간 위주) 성능이 더 높아진다.


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

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

Google photo

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

Twitter 사진

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

Facebook 사진

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

%s에 연결하는 중