Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 약참조
- 데이터애셋
- map
- 언리얼가비지컬렉터
- C++
- BFS
- 알고리즘
- UML관련
- 프로그래머스
- UELOG
- 람다사용정렬
- 선택정렬
- 강참조
- 정렬알고리즘
- moreeffectiveC++
- 정렬
- stl
- 스마트포인터
- enumasByue
- 언리얼엔진구조체
- 델리게이트
- 크리티컬섹션
- unorder_map
- UE_LOG
- 람다
- UE4 커스텀로그
- C++최적화
- 자료구조
- dataasset
- 애셋로드
Archives
- Today
- Total
기억을 위한 기록들
언리얼엔진 UI UMG 및 C++ 최적화에 관하여 본문
(해당 정보는 대부분 웹 서칭을 통해 찾아보고 나중에 제가 혼자 참고하려고 정리해보고 있습니다.)
렌더링 프로세스에 대해
- 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에 렌더링됩니다.
최적화를 위한 위젯
- Invalidation box
- 위젯을 지오메트리 cache에 담아 최적화
- prepass, tick, paint
- 갱신 빈도에 따라 역효과가 날 수 있음
- Child widget 을 모두 검사
- Animation 실행 시 CanCache 프로퍼티
- 위젯 리플렉터의 인벨리데이션 디버깅을 활용
- Hidden 대신 Collapsed 를 사용(레이아웃의 자리 계산을 없앨 수 있다.)
- UTextblock에서는 SimpleTextMode 적용하면 Preppass OnPaint call 감소
- Retainer box에서 틱 웨이트를 조절하자
- 불필요한 Tick 제거
- UCLASS(meta=(DisableNativeTick))
출처 :
https://topic.alibabacloud.com/a/ui-optimization-tips-in-unreal-engine-4_8_8_10274886.html
https://youtu.be/PqNm22br7y8?si=dwY8qXBg7uZeyA4I&t=1985
'UnrealEngine > UnrealEngine C++ 관련' 카테고리의 다른 글
[UE-CPP]std::tie 함수와 언리얼에서의 tie (0) | 2023.07.23 |
---|---|
[UE CPP] 체력관리 컴포넌트 (HealthManageComponent) (0) | 2023.07.16 |
[UE-CPP] FStruct를 TMap/TSet의 Key로 사용하고 싶다면?(with GetTypeHash) (0) | 2023.07.09 |
[UE-CPP] 부동소수점 비교시 (0) | 2023.05.14 |
[UE-C++] 특정 액터가 블루프린트 상속받은지 확인하는 방법 (0) | 2023.03.02 |