종합_최적화 일지

jiwoon min·2024년 8월 17일

프로파일
https://forums.unrealengine.com/t/what-is-base-pass-and-how-to-higher-fps/742568
참조블로그
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/performance-and-profiling-overview?application_version=4.27

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


명령어 입력말고 현재 세팅값은 어디서 볼 수 있는걸까?
세팅전과 0입력후 유의미한 변화가 없어서 이리바꾸고 저리 바꾸고 라이트빌드를 다시 하려다 팅기고 하다보니 복원한 엔진에서 0값인지 1값이 적용되었는지 정확한 확인이 어려웠다.
그냥 라이트 빌드 후 바로 측정한 temp값(세팅전)과 0값, 1값을 비교했다.

왼쪽은 로컬높이포그이고 오른쪽은 박스에 ~볼류메트릭포그머티리얼~을 생성해 입혀준 모습이다.
현재 프로젝트에선 포그박스 안쓰니까 상관없다.
-포그박스 만드는법
명령어입력방법을 찾다가 함께 만든 포그박스를 이용하여 시각적 변화를 체크할 수 있었다.
~볼류메트릭포그머티리얼~ 만드는법은 사진과 같다.
참조: 볼류메트릭포그머티리얼제작-유튜브

  • PostProcessing_TemporalSuperResolution()__

    TemporalSuperResolution는 화면의 깊이와 속도 정보를 사용하여 이미지를 더 선명하게 만드는 기술이다. 색상과 투명도 정보보다 깊이와 속도를 먼저 처리하는 이유는 깊이속도가 색상투명도보다 GPU에서 더 빨리 처리되기 때문이다.
    GPU가 바쁘지 않을 때 TSR계산을 병행하여 전체성능을 최적화한다는 이야기다.
    이 기능을 활성화 하기위해 아래 코드를 사용한다.
    참조: TSR-에픽문서
r.TSR.AsyncComputer=1

TSR은 엔진 Settings > Engine Scalablity Settings의 안리에일리어싱(TSR) 그룹에서 조절할 수 있다.

또는 콘솔 명령어로 안티에일리어싱 그룹을 설정할 수 있다.
0 = Low, 1 = Medium, 2 = High, 3 = Epic, and 4 = Cinematic qualities

sg.AntiAliasingQuality 1

1로 했을 때 명령어


_
나나이트가 아닌 메시는 거친품질에서 제외시키기???
참조: 가상섀도관-에픽문서

r.Shadow.Virtual.NonNanite.IncludeInCoarsePages 0.

_
그 외 줏은거

r.ViewDistanceScale=4
r.ScreenPercentage 100
 r.ViewDistanceScale 0.9

맛도리문서
참조: 포스트프로세스퀄리티명령어-에픽문서

sg.PostProcessQuality 2

sg.TextureQuality 0

이펙트세부설정(일괄 미디엄으로하면 많이 날아감)

r.TranslucencyLightingVolumeDim=32
r.RefractionQuality=0
r.TranslucencyVolumeBlur=0

내용은 같은데 왜 프리셋적용할때랑 다르지?

머티리얼레벨
별로변화가없다.

스카이스피어

참조:베이크-블로그

프로그램팀이 작업한 BP액터에서 아트가 할 수 있는 것

수상한 오버드로우를 발견했다.

BP설정할 때 박스에 투명한 머터리얼을 입혀둔 메시였고 콜라이더는 따로 작동하고 메시값에 의한 데이터는 사용하지 않으니 수정해도 된다고 전달받았다. 이런 불필요한 비용이 출력되는 경우에는 블루프린트 디테일에서 Hidden in Game을 활성화 시켜주자!
참조:히든인게임옵션-에픽포럼

라는 생각으로 확인해 봤는데 BP액터 자체엔 옵션체크가 되어었고 포함되는 메시 디테일에 체크가 안되어있는걸 확인 할 수 있다.
그냥 깜빡하신 것 같으니 체크해주자. 해당 옵션은 레벨 디테일에서도 인스턴스별로 제어할 수 있다.

viewmode shadercomplexity

셰이더복잡성 뷰모드를 키고 플레이를 해보면 인게임에서는 보이지 않는다.

플레이 전에도 간단히 검사 할 때 신경쓰이기 때문에 머터리얼도 기본 인스턴스 제일 가벼운걸로 넣어주었다.
보이지 않는것을 확인했으니 작동이 되는지를 확인해야 한다. 플레이모드에서 콜리전보기를 활성화 시켜보자. 정신없어서 알아보기 힘들겠지만 컬라이더는 작동을 한다.

show collision

0개의 댓글