파티클 시스템의 핵심 최적화 개념

이펙트 최적화를 위해 문제가 있는 영역과 콘텐츠를 알아내는 방법입니다.

Windows
MacOS
Linux

GPU, 렌더 스레드, 게임 스레드 이슈 식별하기

UE4 에는 이펙트 아티스트가 퍼포먼스 이슈를 해결하기 위해 사용할 수 있는 기능이 여럿 있습니다. 우선 이펙트 어디에 병목현상이 있는지 알아보면 문제 해결 최적화에 큰 도움이 되며, 그 여력으로 시각적 완성도와 질을 유지할 수 있는 것입니다.

레벨을 플레이하면서 이슈를 모니터링하는 한 가지 방법은, STAT UNIT 디버그 오버레이를 띄우는 것입니다.

  1. 게임을 실행시킵니다.

  2. **` 키를 치고 콘솔에 stat unit 이라 입력합니다.

    statunit.png

stat unit 명령은 게임 스레드에서 현재 프레임에 소모된 시간, 레더 스레드에 소모된 시간, GPU 에 소모된 시간을 나타내 줍니다. stat unit 으로 업데이트된 여러가지 시간을 모니터링하여 퍼포먼스 문제가 있는 레벨 구간을 파악할 수도 있습니다.

여러가지 스레드 시간을 눈여겨 보되, 목표로 삼는 프레임율이 30 fps 라면 모든 스레드는 33.3 ms 이하를 유지해야 합니다.

33 ms 를 넘어서는 스레드가 있는데 파티클이 용의선상에 올랐다, 그러면 STAT PARTICLES 명령을 사용하여 여러가지 스레드에서의 파티클 시간을 측정합니다.

STAT PARTICLES 은 게임 스레드와 렌더 스레드에 관계된 통계를 여럿 출력합니다. 드로 콜 (렌더 스레드) 과 틱 시간 (게임 스레드) 에 주목해 보십시오.

게임 스레드 관련 이슈 집어내기

게임 스레드 이슈가 있는 것으로 판명된 경우, STAT PARTICLES 명령으로 알아낸 것을 확인합니다.

이 통계는 정보가 꽤 나오니 링크된 페이지의 설명을 좀 읽어 보시면 비용이 가장 높은 곳이 어디인지 파악하는 데 도움이 됩니다. 파티클 틱 시간과 파티클 카운트를 눈여겨 보시기 바랍니다.

기억할 것 한가지, 파티클 시스템은 이펙트를 이루는 컴포넌트(이미터/모듈)의 합이라는 점입니다. 시스템에 있는 이미터와 모듈의 고유성이 높을 수록, 씬에 그러한 시스템이 많아 지면 게임 스레드 비용 역시 높아집니다.

문제아 게임 스레드 시스템을 알아내고 나면, 취할 수 있는 방법이 여러가지 있습니다.

  • 사용되고 있는 시스템의 파티클 방출 횟수를 줄입니다.

  • 씬의 파티클 시스템 수를 줄입니다.

  • 일부 이미터에 대한 수명(파티클 평가가 계산되는 기간)을 줄입니다.

  • 콜리전 등 비싼 계산을 검사하여 최적의 세팅을 사용중인가 확인하고, 콜리전이나 충돌하는 파티클/메시 양을 줄입니다.

  • 필요하면 콜리전, 다이내믹 파라미터 등 비싼 계산을 없앱니다.

  • 가능하면 게임 스레드 계산되는 파티클 이펙트를 스태틱 메시 이펙트로 대체합니다.

  • 파티클 시스템에 고정 바운드를 설정하여 매 프레임마다 계산되지 않도록 합니다.

  • (LODMethod 를 automatic 으로 설정한 루핑 이펙트에 대해) LodDistanceCheckTime 을 늘려 LOD 검사 빈도를 낮춥니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼