이 페이지에는 애플리케이션에서 렌더링 성능을 최적화하기 위한 몇 가지 간단한 가이드라인이 포함되어 있습니다.
변경하기 전에 애플리케이션을 프로파일링하여 문제의 원인을 식별해야 합니다. 원인을 파악하기 전에 성능 문제를 해결하려고 하면 시간을 낭비하거나 문제를 더 악화시킬 수 있습니다. 또한 CPU 또는 GPU에서 렌더링 관련 성능 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위한 전략은 매우 다양하므로 조치를 취하기 전에 문제가 어디에 있는지 파악하는 것이 중요합니다.
Unity Learn 사이트에 있는 다음 문서에는 그래픽스 성능에 대한 종합적인 소개와 문제 식별 및 수정에 대한 정보가 포함되어 있습니다.성능 문제 수정.아직 이 주제에 익숙하지 않다면 이 페이지의 조언을 따르기 전에 문서를 읽어 보십시오.
일반적으로 CPU 렌더링 시간에 가장 크게 기여하는 요소는 렌더링 커맨드를 GPU로 보내는 비용입니다. 렌더링 커맨드에는 드로우 콜(지오메트리를 드로우하는 커맨드)과 지오메트리를 드로우하기 전에 GPU에서 설정을 변경하는 커맨드가 포함됩니다. 이 경우 다음 옵션을 고려하십시오.
이러한 접근 방식 중 대부분은 GPU에 필요한 작업도 줄여줍니다. 예를 들어 Unity가 프레임에서 렌더링하는 전체 오브젝트 수를 줄이면 CPU와 GPU의 워크로드가 모두 줄어듭니다.
GPU가 프레임을 렌터링하는 작업을 제 시간에 완료하지 못하는 이유는 크게 세 가지가 있습니다.
애플리케이션이 필레이트에 의해 제한되면 GPU는 처리할 수 있는 것보다 더 많은 프레임당 픽셀을 드로우하려고 합니다. 이 경우 다음 옵션을 고려하십시오.
애플리케이션이 메모리 대역폭에 의해 제한되면 GPU는 프레임에서 처리할 수 있는 것보다 더 많은 데이터를 전용 메모리에 읽고 쓰려고 합니다. 이것은 일반적으로 텍스처가 너무 많거나 텍스처가 너무 크다는 것을 의미합니다. 이 경우 다음 옵션을 고려하십시오.
애플리케이션이 버텍스 프로세싱에 의해 제한되는 경우 이것은 GPU가 프레임에서 처리할 수 있는 것보다 더 많은 버텍스를 처리하려고 함을 의미합니다. 이 경우 다음 옵션을 고려하십시오.
경우에 따라 렌더링 프레임 속도를 줄이는 것이 애플리케이션에 도움이 될 수 있습니다. 또한 단일 프레임을 렌더링하는 CPU나 GPU 비용은 줄어들지 않지만 다른 작업(예; 스크립트 실행)의 빈도에 영향을 주지 않고 Unity가 렌더링하는 빈도를 줄일 수 있습니다.
애플리케이션의 일부 또는 전체 애플리케이션의 렌더링 프레임 속도를 줄일 수 있습니다. 렌더링 프레임 속도를 줄여 불필요한 전력 사용을 방지하고 배터리 수명을 연장하며 기기 온도가 CPU 주파수가 제한될 수 있는 지점까지 상승하는 것을 방지합니다. 이 제한은 핸드헬드 기기에서 특히 유용합니다.
프로파일링 결과 렌더링 시 애플리케이션 리소스의 상당 부분을 소비하는 것으로 판명된 경우 애플리케이션의 어떤 부분에서 이점을 얻을 수 있는지 따져봐야 합니다. 일반적인 사용 사례로는 메뉴나 일시 중지 화면, 게임이 입력을 기다리고 있는 턴제 게임, 자동차 UI와 같이 대부분의 콘텐츠가 정적인 애플리케이션이 해당합니다.
입력 지연을 방지하기 위해 입력 중에 렌더링 프레임 속도을 일시적으로 높여 반응성이 유지되도록 할 수 있습니다.
렌더링 프레임 속도를 조정하려면 OnDemandRendering API를 사용합니다. API는 Adaptive Performance 패키지에서 특히 잘 작동합니다.
참고: VR 애플리케이션은 온디맨드 렌더링을 지원하지 않습니다. 프레임마다 렌더링하지 않으므로 시각 요소가 머리 움직임과 일치하지 않게 되고, 이로 인해 멀미가 발생할 수도 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.