본문 바로가기

프로젝트/Pollute

언리얼 GPU 시각화 툴을 이용한 최적화

컴퓨터 스펙

CPU : Intel  i5 - 12500

RAM : 32GB

GPU : RX 6600

 

문제 상황

레벨 에셋을 구매하여 사용하였는데 위와 같은 스펙의 컴퓨터에서 프레임 드랍이 심하게 생겼다.

stat FPS, sta UNIT 커맨드로 프레임과  GPU Time 을 확인했더니 Draw 와 GPU Time 에서 비용이 크게 발생하는 것을 확인했다.

 

정확하게 어느 부분에서 비용이 발생하는지 확인하기 위해 언리얼 에디터에서 제공하는 GPU 시각화 툴을 활용하였다.

단축키 : Shift + Ctrl + ,

 

확인 결과 ShadowDepths 의 RenderVirtualShadowMaps 에서 시간이 크게 걸리는 것을 발견했다.

19.85ms 의 비용이 발생한다.

 

RenderVirtualShadowMaps 에서 VSM 은 기존 그림자 매핑 기법 보다 더 섬세한 그림자를 표현하는 기법이다.

필요할 때에 동적으로 그림자 데이터를 생성하는 기법으로 사실적인 그림자 표현이 적합할 때 유용하게 사용가능하다.

 

프로젝트에서는 어두운 분위기이고 사실적인 그림자 표현이 불필요하기 때문에 VSM 에서 발생하는 비용을 줄이기로 했다.

 

레벨에 배치된 메쉬들의 Dynamic Shadow 를 비활성화하여 VSM 의 사용량을 줄인다.

 

구매한 레벨 에셋은 폴리지를 사용하였기 때문에 폴리지 모드에서 현재 폴리지 인스턴스에 사용 중인 모든 메쉬들의 Dynamic Shadow 를 비활성화 하였다.

 

사용 중인 폴리지 에셋 선택

 

인스턴스 셋팅에서 다이나믹 그림자 드리우기를 false 로 만들었다.

 

 

결과

VSM 사용 비용이 최소한으로 줄어들었다.

19.85 -> 1.19 로 줄였다.

 

최적화 후 FPS 및 GPU Time 확인

평균 20 프레임에서 50 프레임까지 성능을 올렸고 Draw 와 GPU Time 도 대폭 줄어들었다.