상세 컨텐츠

본문 제목

[Unreal Engine 4] UI 렌더링 시스템 부하

Study/UnrealEngine4

by Arq.Dev5igner 2023. 2. 14. 18:47

본문

SlatePrepass

1.  위젯 수 줄이기: 각 위젯이 추가 그리기 호출을 생성하므로 UI에 사용되는 위젯 수를 최소화하여 SlatePrepass 프로세스를 더하고 속도를 늦출 수 있다.
2. 캐싱 사용: 위젯 코드에 캐싱을 구현(인벨리데이션)하여 SWidget_CacheDesiredSize와 같은 비용이 많이 드는 작업의 빈도를 최소화. 이를 통해 SlatePrepass 프로세스의 부하를 줄이고 렌더링 시간을 단축.
3. 동적 레이아웃 사용 최소화: 동적 레이아웃은 느리고 리소스를 많이 사용하므로 가능하면 정적 레이아웃을 사용.
4. 프로파일 사용 및 최적화: UE4 프로파일러를 사용하여 성능 병목 현상을 식별하고 코드를 최적화. ( 그리기 호출 수 감소, 텍스처 메모리 사용 최적화 또는 SlatePrepass 프로세스와 관련된 코드 최적화가 포함될 수 있다.)
5. 하드웨어 가속 사용 고려: 가능한 경우 하드웨어 가속을 사용하여 GPU 리소스를 활용하고 성능을 개선.

SlatePrepass/TextLayout

1. 가능한 경우 정적 텍스트 사용: 텍스트가 자주 변경되지 않는 경우 동적 텍스트 대신 정적 텍스트를 사용하는 것이 좋다.  정적텍스트는 텍스트 레이아웃 시스템의 부하를 줄이고 성능을 향상시키는 데 도움이 된다.
2. 텍스트 재레이아웃 최소화: 텍스트 레이아웃  변경을 최소화. 리소스를 많이 사용하고 렌더링 프로세스가 느려질 수 있다.
3.  최적화된 글꼴 파일 사용: UE4에서 사용하기에 최적화된 최적화된 글꼴 파일(OTF:벡터/TTF:비트맵)을 사용.
4. 사용되는 글꼴 크기 및 스타일 수 제한: 최적화에 영향을 미치는 글꼴 파일이 늘어나는 것과 같으니 당연히 텍스트 레이아웃 시스템에 부하.
5. 프로파일링 및 최적화

지금 우리 퍼포먼스상 제일 문제는 위에 SlatePrepass 보면 됩니다.

사이즈박스 : 자식 위젯 특정 크기 적용에 사용하는 편한 위젯이지만, 지금처럼 텍스트가 많은 상황에서 각각 텍스트를 다 사이즈박스로 감싸고 있으면 텍스트레이아웃시스템에 과부하.

관련글 더보기