[UE4] 게임 런타임 컬링을 확인하는 방법

컬링 처리는 처리 부하를 경감시키기 위해 불필요한 것을 미리 제거하는 처리입니다.
예를 들어 다음과 같은 게임 플레이 화면이 있다고 가정합니다.


다음 GIF 동영상은 컬링 처리가 없는 경우와 컬링 처리가 있는 상태의 비교입니다.
게임상 카메라에 비치지 않는 것이 생략되어 있는 모습을 알 수 있을까 생각합니다.
!

실제 게임 실행시에는 우선 CPU 측에서 불필요한 것을 판단하고 (CPU 컬링), 그 후 데이터가 GPU로 보내집니다. 렌더링시에는 GPU내에서도 컬링(GPU로 묘화 처리가 불필요한 것을 판단해 묘화 대상으로부터 제거한다)가 행해집니다만, 실제로 묘화는 되지 않아도 데이터로서는 GPU에 보내져 버리므로, 메모리 또는 처리 부하에 영향을 미칩니다.

FreezeRendering 및 ToggleDebugCamera 명령



CPU 컬링에 대해 올바르게 수행되었는지 확인하는 방법으로 FreezeRendering 및 ToggleDebugCamera 명령이 있습니다. FreezeRendering에 관해서는 카메라 정보를 그 자리에서 멈추어 버리는 커맨드로, ToggleDebugCamera에 대해서는, 게임에서 설정하고 있는 카메라와는 별도로 자유롭게 움직일 수 있는 Debug용 카메라를 사용하는 모드로 전환하는 커맨드입니다. 커맨드는 게임중에 "@"키를 누르는 것으로 입력용의 콘솔이 표시되므로, 이쪽에 입력하는 것으로 불필요한 것이 남아 있는지 확인하는 것이 가능합니다.


대책 방법



GPU에 불필요한 것을 보내지 않기 위한 대책으로서는, 메쉬의 Bounds를 적절히 설정하는 것이 필요합니다.
(Bounds를 바탕으로 컬링을 실시하고 있습니다.)
Bounds는 메쉬 마다 자동으로 설정되어 있습니다만, Sphere로 근사되기 때문에 길쭉한 메쉬라면 매우 어려워져, 항상 GPU에 보내져 버린다고 하는 케이스가 존재합니다.
Bounds는 보기 > 고급 설정 > 바운스에서 볼 수 있습니다.


대책으로서는 길쭉한 모델에 대해서는 분할하는 방법이나, 메쉬의 설정에서 [세부] > [Rendering] > [Bounds Scale]에 의해 조정을 실시합니다.


결론



적절하게 모델을 설정하여 처리 부하를 완화합시다.

좋은 웹페이지 즐겨찾기