UE5

[언리얼5.3] 프로파일

jiwoonmin 2025. 3. 12. 11:35
 

종합_최적화 일지

프로파일 https://forums.unrealengine.com/t/what-is-base-pass-and-how-to-higher-fps/742568 참조블로그 https://dev.epicgames.com/documentation/ko-kr/unreal-engi

velog.io

FPS를 높이는 법
퍼포먼스 및 프로파일링 개요

 

Audit_Statistics

언리얼 메인 메뉴 바에서 Tools의 Audit_Statistics를 열어서 팝업을 띄어줍니다.
오브젝트 항목이랑 카운트, 이런저런 수치와 사이즈를 확인 할 수 있고 현재 활성화된 레벨을 기준으로 확인 할 수 있습니다. 해당 검사기록을 엑셀로 Export할 수 도 있다고 합니다.
우선은 사이즈 정렬을 해서 큰 것 부터 정리해 주었습니다.

레벨에 사용된 인스턴스 수가 아닌, 레벨에 사용된 스태틱 메시의 총 개수(109개)는 현재 LOD나 텍스처 세팅이 하나도 안된 상태였습니다. 큰 용량을 기준으로 하나 하나 다 정리해주었더니 332,892kb에서 62,770kb까지 줄일 수 있었습니다.

 

ProfileGPU

ProfileGPU를 켜서 이것저것 뜯어보려고 합니다.
큰것부터 작은순으로 살펴보고, 몇가지 해결할 수 있었던 것들을 적어보겠습니다.

  • PostProcessing_ TemporalReprojection()
    수상한 느낌이 들어 고른 항목입니다. 서치하니 바로 에픽 문서가 나왔고, 콘솔 명령어를 입력하라는데 당최 어디에 명령어를 적어야하는지 알지 못했으나... 한참 헤메다가 stat fps입력 하듯이 ` 누르고 입력하는 것이 콘솔 명령어인걸 깨달았습니다.

 에픽문서 - Temporal Reprojection Issue Workaround

r.volumetricFog.TemporalReprojection 0

 

추가) 현재 세팅값을 보고싶다면 아래와 같이 입력하고, Outputlog에서  볼 수 있습니다.

r.volumetricFog.TemporalReprojection

 


프로젝트 당시엔 세팅전과 0입력후 시각적으로 유의미한 변화가 없어서, 이리바꾸고 저리 바꾸고 또 엔진 다운되고.. 복구하기로 다시 킨 엔진에서 0값인지 1값이 적용되었는지 정확한 확인이 어려운 경험이 있었습니다. 그래서 그땐 그냥  프로파일에서 temp값(세팅전)과 0값, 1값을 비교했습니다.

왼쪽은 로컬높이포그이고 오른쪽은 박스에 '볼류메트릭 포그 머티리얼'을 생성해 입혀준 모습입니다.
현재 프로젝트에선 사용하지 않아도 되는 기능이라 0으로 해주었습니다..

포그박스 만드는법 : 참고 유튜브 - 볼류메트릭포그머티리얼제작
명령어입력방법을 찾다가 함께 만든 포그박스를 이용하여 시각적 변화를 체크할 수 있었습니다.
'볼류메트릭 포그 머티리얼' 만드는법은 아래 사진과 같습니다.

 

다시 프로파일로 돌아갑니다.

  • PostProcessing_TemporalSuperResolution()__


TemporalSuperResolution는 화면의 깊이와 속도 정보를 사용하여 이미지를 더 선명하게 만드는 기술이라고 합니다. 색상과 투명도 정보보다 깊이와 속도를 먼저 처리하는 이유는 깊이속도가 색상투명도보다 GPU에서 더 빨리 처리되기 때문이라고 하네요.
GPU가 바쁘지 않을 때 TSR계산을 병행하여 전체성능을 최적화한다는 내용입니다.
똑똑한 기능 같아 보이니 이 기능을 활성화 하기위해 아래 코드를 사용합니다.

r.TSR.AsyncComputer=1

 

참고로 TSR을 포함하여 여러가지 퀄리티 세팅을 조절할 수 있는 엔진 퀄리티(Scalability) 세팅창이 있습니다.

Settings > Engine Scalablity Settings에서 조절할 수 있고, 안리에일리어싱(TSR) 항목이 있는것을 확인 할 수 있습니다.

또는 콘솔 명령어로 안티에일리어싱 그룹을 설정할 수 있습니다.

0 = Low, 1 = Medium, 2 = High, 3 = Epic, and 4 = Cinematic qualities

 

명령어 예시는 아래와 같습니다.

sg.AntiAliasingQuality 1
sg.PostProcessQuality 2
sg.TextureQuality 0

 

  • Scalability창에서 이펙트 옵션을 medium으로 두면 시각적으로 표현이 많이 줄어서 아쉬웠습니다.
    그래서 아래와 같은 명령어를 찾아서 적용해주었습니다.
    문서에서 설명하는medium값과 같은데 왜 표현이 달라지는지는 잘 모르겠습니다.
     
    r.TranslucencyVolumeBlur=0​
    r.RefractionQuality=0​


  • r.TranslucencyLightingVolumeDim=32​
에픽문서 - TSR
에픽문서 - 엔진 퀄리티 레퍼런스

 

  • 아래와 같이 머티리얼 퀄리티 레벨도 조정할 수 있습니다.

  • 폴리지가 많은 씬에서는 아래의 코드를 사용하여 나나이트객체를 비활성화 합니다. 이를 비활성화하면 성능이 크게 향상될 수 있다고 합니다.
r.Shadow.Virtual.NonNanite.IncludeInCoarsePages 0.
에픽문서 - 버추얼 섀도 맵