관리 메뉴

기억을 위한 기록들

언리얼엔진 UI UMG 및 C++ 최적화에 관하여 본문

UnrealEngine/UnrealEngine C++ 관련

언리얼엔진 UI UMG 및 C++ 최적화에 관하여

에드윈H 2024. 7. 21. 20:08

(해당 정보는 대부분 웹 서칭을 통해 찾아보고 나중에 제가 혼자 참고하려고 정리해보고 있습니다.)

 

 

 

렌더링 프로세스에 대해

 

  • Game thread(게임 스레드)에서 Slate Tick은 프레임당 두 번 위젯 트리를 탐색.

1번 틱 :Prepass 트리를 아래->위로 탐색하여 각 위젯의 이상적인 크기( DesiredSize )를 계산.

2번 틱: OnPaint 트리를 위->아래로 탐색하여 렌더링에 필요한 Draw Elements 를 계산.

 

  • Render Thread에서 Slate 렌더링은 두 단계로 나뉜다.
    1. Widget Render: UI의 RTT를 수행합니다. Retainer Box를 사용하는 경우 Draw Elements는 Retainer Box의 Rtain Target에 렌더링됩니다.

    2. Slate Render: Draw Elements를 Back Buffer에 렌더링합니다. Retainer Box를 사용하는 경우 Retainer Box에 해당하는 Texture Resource가 Back Buffer에 렌더링됩니다.

 

최적화를 위한 위젯 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-the-invalidation-box-for-umg-in-unreal-engine?application_version=5.3

 

 

 

  • Invalidation box 
    • 위젯을 지오메트리 cache에 담아 최적화  
    • prepass, tick, paint
    • 갱신 빈도에 따라 역효과가 날 수 있음
    • Child widget 을 모두 검사
    • Animation 실행 시 CanCache 프로퍼티
    • 위젯 리플렉터의 인벨리데이션 디버깅을 활용

 

  • Hidden 대신 Collapsed 를 사용(레이아웃의 자리 계산을 없앨 수 있다.)
  • UTextblock에서는 SimpleTextMode 적용하면 Preppass OnPaint call 감소

  • Retainer box에서 틱 웨이트를 조절하자
  • 불필요한 Tick 제거
    • UCLASS(meta=(DisableNativeTick))

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 

 

https://blog.nullbus.net/94

 

UMG 드로우콜 분석

한줄요약 드로우 콜은 같은 리소스와 같은 레이어 ID라는 두 가지 조건이 동시에 만족되어야 하나로 합칠 수 있습니다. UMG에서의 드로우 콜 언리얼 공식 문서에는 드로우 콜과 관련하여 이런 설

blog.nullbus.net

https://topic.alibabacloud.com/a/ui-optimization-tips-in-unreal-engine-4_8_8_10274886.html

 

UI optimization tips in Unreal Engine 4

At the Unreal Open Day 2017 event, Epic Games developer support engineer Mr. Guo Chunbiao introduced the UI optimization techniques in Unreal Engine 4 to the developers present. The following is a speech record. Hello everyone, I'm Guo Chunbiao, a develope

topic.alibabacloud.com

https://youtu.be/PqNm22br7y8?si=dwY8qXBg7uZeyA4I&t=1985