Unreal

언리얼 최적화 01

myroad 2023. 8. 22. 22:57

아래 링크을 보고 공부하면서 정리한 내용입니다.
https://devjino.tistory.com/m/373


큰 범위에서 작은 범위로 좁혀 가면서 분석하여 병목 지점을 찾아야 한다.
구체적으로 CPU에서 발생하는지 GPU에서 발생하는지 아니면 특정 쓰레드에서 병목 현상이 발생하는지 파악을 해야 한다.
따라서 가장 먼저 사용하는 기능은 'stat unit'라는 콘솔 명령이다.
실시간 그래프을 보고 싶다면 'stat unitgraph'라는 명령을 사용한다.

60프레임이 목표라면 프레임 간의 시간 간격은 16.66밀리 세컨드 보다 작아야 한다.
30프레임이 목표라면 프레임 간의 시간 간격은 33.33밀리 세컨드 보다 작아야 한다.

엔진 퀄리티 설정이 프렘이 큰 영향을 주기 때문에 하드웨어의 스펙에 따라 엔진 퀄리티을 설정해 주어야 원하는 프레임을 달성할 수 있다.

'stat unit'로 출력되는 항목 중 Frame의 값에 가장 가까운 값이 병목 현상을 유발하는 원인일 수 있다.

- Frame 게임의 한 프레임을 생성하는 데 소요된 총 시간입니다.
- Game 게임 쓰레드에서 사용된 시간입니다.
            값이 Frame 시간과 유사하면, 게임 성능은 게임 쓰레드에 의해 병목이 발생한 것으로 보입니다.
- Draw 드로우: 렌더링 쓰레드에서 사용된 시간입니다.
             값이 Frame 시간과 유사하면, 게임 성능은 렌더링 쓰레드에 의해 병목이 발생한 것으로 보입니다.
- GPU GPU: 씬 렌더링에 사용된 GPU에서 소요된 시간입니다.
            GPU 시간은 Frame 시간에 동기화되므로 유사합니다.
- RHIT 렌더링 하드웨어 인터페이스 쓰레드에서 소요된 시간입니다.(예: OpenGL, D3D12)
- Frame 시간과 유사할 것으로 예상됩니다.
- DynRes 동적 해상도가 지원되는 경우, 현재 Dynamic Resolution 해상도를 표시합니다.
- Draws 현재 DrawPrimitive 호출 수입니다.
- Prims 현재 그려지는 삼각형 수입니다.


프로파일링을 위한 콘솔 명령어
- stat fps
- stat unit
- stat unitGraph
- stat gpu
- stat game
- stat slow 느린 부분 보여줌. cpu stall은 일하고 있지 않고 기다리는 시간임.
- stat SceneRendering 드로우콜 수, 그림자/데칼/포스트 프로세싱/라이팅 등과 같은 각각의 시간을 알 수 있음.

 

  • stat unit 명령
    • Frame - 한 프레임이 출력되는데 걸리는 시간
    • Game - 한 프레임에서 메인 쓰레드에 걸리는 시간
    • Draw - 한 프레임에서 렌더링 쓰레드에 걸리는 시간
    • GPU - 한 프레임에서 GPU에 걸리는 시간
    • Draws - 한 프레임에서의 드로우 횟수
    • Prims - 한 프레임에서 화면에 출력되는 삼격형 갯수

 

- 로드한 레벨의 로드 타임을 확인하기

  'stat levels'