이 페이지에는 애플리케이션에서 렌더링 성능을 최적화하기 위한 몇 가지 간단한 가이드라인이 포함되어 있습니다.
변경하기 전에 애플리케이션을 프로파일링하여 문제의 원인을 식별해야 합니다. 원인을 파악하기 전에 성능 문제를 해결하려고 하면 시간을 낭비하거나 문제를 더 악화시킬 수 있습니다. 또한 CPU 또는 GPU에서 렌더링 관련 성능 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위한 전략은 매우 다양하므로 조치를 취하기 전에 문제가 어디에 있는지 파악하는 것이 중요합니다.
Unity Learn 사이트의 Fixing performance problems: Optimizing graphics rendering in Unity games 문서는 그래픽스 퍼포먼스에 대한 포괄적인 소개이며 문제 식별과 해결에 대한 정보를 담고 있습니다. 아직 이 주제에 익숙하지 않다면 이 페이지의 정보를 따르기 전에 위 문서를 읽어보십시오.
일반적으로 CPU 렌더링 시간에 가장 크게 기여하는 요소는 렌더링 커맨드를 GPU로 보내는 비용입니다. 렌더링 커맨드에는 드로우 콜(지오메트리를 드로우하는 커맨드)과 지오메트리를 드로우하기 전에 GPU에서 설정을 변경하는 커맨드가 포함됩니다. 이 경우 다음 옵션을 고려하십시오.
이러한 접근 방식 중 대부분은 GPU에 필요한 작업도 줄여줍니다. 예를 들어 Unity가 프레임에서 렌더링하는 전체 오브젝트 수를 줄이면 CPU와 GPU의 워크로드가 모두 줄어듭니다.
GPU가 프레임을 렌터링하는 작업을 제 시간에 완료하지 못하는 이유는 크게 세 가지가 있습니다.
애플리케이션이 필레이트에 의해 제한되면 GPU는 처리할 수 있는 것보다 더 많은 프레임당 픽셀을 드로우하려고 합니다. 이 경우 다음 옵션을 고려하십시오.
애플리케이션이 메모리 대역폭에 의해 제한되면 GPU는 프레임에서 처리할 수 있는 것보다 더 많은 데이터를 전용 메모리에 읽고 쓰려고 합니다. 이것은 일반적으로 텍스처가 너무 많거나 텍스처가 너무 크다는 것을 의미합니다. 이 경우 다음 옵션을 고려하십시오.
애플리케이션이 버텍스 프로세싱에 의해 제한되는 경우 이것은 GPU가 프레임에서 처리할 수 있는 것보다 더 많은 버텍스를 처리하려고 함을 의미합니다. 이 경우 다음 옵션을 고려하십시오.
경우에 따라 렌더링 프레임 속도를 줄이는 것이 애플리케이션에 도움이 될 수 있습니다. 또한 단일 프레임을 렌더링하는 CPU나 GPU 비용은 줄어들지 않지만 다른 작업(예; 스크립트 실행)의 빈도에 영향을 주지 않고 Unity가 렌더링하는 빈도를 줄일 수 있습니다.
애플리케이션의 일부 또는 전체 애플리케이션의 렌더링 프레임 속도를 줄일 수 있습니다. 렌더링 프레임 속도를 줄여 불필요한 전력 사용을 방지하고 배터리 수명을 연장하며 기기 온도가 CPU 주파수가 제한될 수 있는 지점까지 상승하는 것을 방지합니다. 이 제한은 핸드헬드 기기에서 특히 유용합니다.
프로파일링 결과 렌더링 시 애플리케이션 리소스의 상당 부분을 소비하는 것으로 판명된 경우 애플리케이션의 어떤 부분에서 이점을 얻을 수 있는지 따져봐야 합니다. 일반적인 사용 사례로는 메뉴나 일시 중지 화면, 게임이 입력을 기다리고 있는 턴제 게임, 자동차 UI와 같이 대부분의 콘텐츠가 정적인 애플리케이션이 해당합니다.
입력 지연을 방지하기 위해 입력이 지속되는 동안 렌더링 프레임 속도를 일시적으로 증가시켜 계속 응답성이 느껴지도록 할 수 있습니다.
렌더링 프레임 속도를 조정하려면 OnDemandRendering API를 사용합니다. API는 Adaptive Performance 패키지에서 특히 잘 작동합니다.
참고: VR 애플리케이션은 온디맨드 렌더링을 지원하지 않습니다. 프레임마다 렌더링하지 않으므로 시각 요소가 머리 움직임과 일치하지 않게 되고, 이로 인해 멀미가 발생할 수도 있습니다.