다음을 통해 공유


메시에 대한 성능 지침

성능

이 문서에서는 Mesh에서 콘텐츠를 작성할 때 성능의 중요성을 이해하는 방법을 소개합니다. 프레임 속도는 성능을 합리화하는 가장 쉬운 단위입니다. 일반적으로 프레임 속도는 "초당 프레임 수"(fps) 또는 애플리케이션이 초당 이미지를 렌더링할 수 있는 횟수로 측정됩니다. 콘텐츠가 최적의 프레임 속도로 실행되지 않으면 사용자 환경의 성능이 크게 저하될 수 있습니다. 메시는 품질 프레임 속도를 추적하고 달성할 수 있도록 다양한 도구와 권장 사항을 제공합니다.

아래 표에서는 Mesh가 지원하는 플랫폼당 대상 프레임 속도를 나열합니다.

PC Android(Quest)
새로 고침 속도 모니터링(최소 30fps) 72fps

단순 장면과 복잡한 장면

모든 3D 개발과 마찬가지로 Mesh에는 시각적 충실도와 성능 간에 절충이 있습니다. Mesh를 실행하는 머신에 따라 특히 장면이 복잡한 경우 성능이 저하될 수 있습니다.

성과를 재정 예산처럼 생각하십시오. 지출할 금액이 100달러이면 복잡한 환경을 렌더링하는 데 60달러, 고급 물리학을 시뮬레이션하는 데 40달러, 시각적 스크립트에 20달러를 지출할 수 없습니다. 개발자는 시각적 충실도, 상호 작용 복잡성, 사용자 수 및 기타 시스템 간에 절충해야 합니다. Mesh 팀은 성능 임계값 목록을 규칙으로 작성하지 않고 개발 가이드로 생성했습니다.

프로파일링 방법론

Mesh의 제작 환경에는 일반적으로 세 단계가 포함됩니다.

  1. Unity에서 콘텐츠 작성
  2. Microsoft Mesh에 업로드
  3. Mesh 앱에서 콘텐츠 실행

1단계 중에 Mesh 도구 키트 패키지에 있는 CPA(콘텐츠 성능 분석기)성능 프로파일러를 혼합하여 사용하는 것이 좋습니다. 이 프로파일러를 사용하면 Mesh 환경을 생성하는 데 사용되는 Unity 프로젝트에 필요합니다. 2단계 동안 CPA 도구가 자동으로 실행됩니다. 마지막으로, 3단계 최종 단계에서는 Mesh의 기본 제공 성능 프로파일러를 통해 프로파일링이 수행되어야 합니다.

성능 분석 도구

CPA(콘텐츠 성능 분석기)

CPA(콘텐츠 성능 분석기)를 사용하여 Mesh 환경의 성능을 최대화하는 것이 좋습니다. CPA 도구는 작성 시 콘텐츠를 정적으로 분석할 수 있습니다. CPA를 사용하여 삼각형 개수, 일괄 처리, 텍스처 메모리 사용률 등을 감사할 수 있습니다. 이렇게 하면 콘텐츠가 Mesh에 업로드되기 전에 콘텐츠 최적화 문제 및 기회를 파악할 수 있습니다.

CPA 도구를 실행하려면 메뉴 항목에서 메시 도구 키트>콘텐츠 성능 분석기 선택합니다.

Unity 메뉴를 통해 콘텐츠 성능 분석기 액세스

문제 및 제안은 Unity의 편집기 창을 통해 보고됩니다.

콘텐츠 성능 분석기 창의 스크린샷

Important

콘텐츠를 Mesh에 업로드할 때 CPA 분석기의 일부가 자동으로 실행됩니다. 모든 테스트가 자동으로 실행되는 것은 아니므로 개발 프로세스의 일부로 CPA를 수동으로 실행하는 것이 좋습니다.

성능 프로파일러

성능 프로파일러에서는 모든 플랫폼에서 Mesh 프로젝트의 프레임 속도, 장면 복잡성 및 메모리 사용량을 보기 위한 간단한 창을 제공합니다. Performance Profiler는 Mesh 앱 및 Mesh 도구 키트 내에서 액세스할 수 있습니다.

격리된 성능 프로파일러의 스크린샷

Mesh 앱에서 성능 프로파일러를 보려면 설정 패널을 열고 개발자용 성능 프로파일러>선택합니다. 성능 프로파일러가 창의 위쪽 가운데에 표시됩니다.

메시의 성능 프로파일러 스크린샷

성능 프로파일러를 사용하는 경우 'x'로 표시된 빨간색 상자로 표시되는 누락된 프레임을 찾습니다. 누락된 프레임은 콘텐츠가 Mesh의 대상 프레임 속도에 맞지 않으며 최적화 작업이 필요할 수 있음을 나타냅니다. 장면 복잡성 및 메모리 사용량은 누락된 프레임 표시기 아래에 표시됩니다. 이러한 숫자는 콘텐츠가 Mesh의 대상 프레임 속도를 충족하지 않는 이유를 나타낼 수 있습니다.

성능 프로파일러 메트릭 다이어그램

메트릭이 Mesh의 권장 성능 임계값을 충족하지 않으면 성능 프로파일러의 텍스트가 빨간색으로 바뀝니다. 성능 임계값에 대한 자세한 내용은 진행 섹션에 나와 있습니다.

Important

Mesh 앱 내에 일괄 처리를 표시할 수 없습니다. Unity 편집기 내에서만 사용할 수 있습니다.

또한 메모리 사용량이 애플리케이션의 메모리 제한에 빠르게 변경되거나 접근하지 않도록 하기 위해 아래쪽 메모리 막대를 주시해야 합니다.

Unity 편집기에서 성능 프로파일러를 보려면 장면에 메시 에뮬레이터 설치 구성 요소가 있는지 확인합니다. 초기 화면 개수 설정이 0인지 확인합니다. 하나 이상인 경우 재생할 때 성능 프로파일러를 전환할 수 없습니다.

메시 에뮬레이터 설정 대화 상자의 스크린샷

Unity의 재생 단추를 클릭하여 재생 모드로 전환하고 성능 프로파일러를 'v' 키를 통해 전환합니다. 성능 프로파일러가 게임 창의 위쪽 가운데에 표시됩니다.

Unity 편집기의 성능 프로파일러 스크린샷

Important

Unity 편집기에서 성능 프로파일러를 볼 때 특정 하위 시스템을 실행하는 데 걸리는 일괄 처리 수 및 밀리초 시간과 같은 추가 정보가 표시됩니다. 이러한 메트릭은 성능의 상대적 근사치이며 메시 앱 내에서 최종 프로파일링이 발생해야 합니다.

성능 프로파일러 하단의 밀리초 단위 측정 시간이 궁금하다면 성능 임계값 섹션에서 해당 정보를 찾을 수 있습니다.

기타 도구

CPA 및 성능 프로파일러 모두 Mesh용으로 사용자 지정으로 빌드되었지만 Unity에서 콘텐츠를 프로파일링하는 데 유용한 도구도 몇 가지 있습니다.

성능 임계값

성능 최적화는 개발 중인 시나리오와 달성하려는 환경에 따라 분산 동작이 될 수 있습니다. Mesh에서 장면을 렌더링하는 것은 환경의 콘텐츠가 작성되는 방식의 직접적인 결과입니다. 다음은 현재 플랫폼에 대한 렌더링 제안입니다.

PC 렌더링 임계값

Polycount Batch 사후 처리
<~500k 삼각형 최대 200개 일괄 처리 사용 안 함
질감 라이트맵 Skybox 해상도
< ~160MB < ~80MB 2048x4096

Android(Quest) 렌더링 임계값

Polycount Batch 사후 처리
<~80k 삼각형 최대 50개 일괄 처리 사용 안 함
질감 라이트맵 Skybox 해상도
< ~16MB < ~20MB 1024x2048

위의 표에는 셰이더 제한이 지정되지 않은 것을 알 수 있습니다. Mesh는 Unity의 URP(유니버설 렌더링 파이프라인) 를 사용하기 때문에 더 저렴한 기본 URP 셰이더(예: 유니버설 렌더링 파이프라인/구운 조명 또는 유니버설 렌더링 파이프라인/단순 조명)를 사용하는 것이 좋습니다. 사용자 지정 셰이더의 값도 이해합니다. 일반적으로 아래 임계값 내에서 대부분의 환경에 대해 사용자 지정 셰이더를 유지하려고 합니다.

꼭짓점 수학 조각 수학 텍스처
< 30개 작업 < 120개 작업 < 조회 2개

Important

셰이더 작업 계산은 셰이더 성능을 계산하기 위한 불완전한 메트릭에 있으며, 셰이더 개발자는 메시에서 실행 중인 셰이더를 프로파일러로 연결하여 성능이 작동하는지 확인해야 합니다.

메시 앱에 대해 URP의 렌더링 파이프라인이 어떻게 구성되었는지 궁금한 경우 프로젝트의 \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP 디렉터리에서 플랫폼별 렌더러를 검사할 수 있습니다.

스크립팅 임계값

Mesh를 사용하면 시각적 스크립팅, 클라우드 스크립팅, 메시 물리학 및/또는 WebSlate를 통해 대화형 콘텐츠를 만들 수 있습니다. Unity 편집기에서 성능 프로파일러를 볼 때 특정 하위 시스템이 실행되는 데 걸리는 밀리초(밀리초)가 프로파일러의 맨 아래에 표시됩니다. 하위 시스템이 예산을 초과할 수 있음을 나타내는 텍스트가 녹색에서 빨간색으로 변경되는 경우 아래 표에서는 이러한 예산에 대한 자세한 정보를 제공합니다.

하위 시스템 이름 최대 프레임 예산 설명
동작 해당 없음 모든 로컬 MonoBehaviour 스크립트를 업데이트하는 데 걸린 시간(밀리초) (C# 및 시각적 개체)
렌더링 25% 장면의 CPU 렌더링 시간(밀리초)
WebSlate 해당 없음 장면에서 WebSlates를 업데이트하고 렌더링하는 데 걸리는 시간(밀리초)
Phys Sim 15% PhysX 시뮬레이션을 단계별로 실행하기 위한 시간(밀리초)
Phys 동기화 15% 모든 물리학 본문을 동기화하는 데 걸리는 시간(밀리초)
Phys Effx 10% 맞춤형 물리학 동작을 업데이트하는 데 걸리는 시간(밀리초)
VS 사용자 15% 장면에 배치된 Visual Script 그래프에 소요된 시간(밀리초)
VS Env 10% Visual Script 인프라를 업데이트하는 데 소요된 시간(밀리초)
VS Net 10% Visual Script 네트워크 상태를 동기화하는 데 소요된 시간(밀리초)

위에 나열된 "최대 프레임 백분율" 값은 제네릭 콘텐츠를 기반으로 하는 권장 사항입니다. 개발자는 할당된 시간에 프레임을 업데이트할 수 있도록 이러한 시스템의 균형을 조정해야 합니다.

성능 및 최적화 리소스

그래픽 성능 기본 사항 https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

URP(유니버설 렌더링 파이프라인) https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html

SRP Batcher https://docs.unity3d.com/Manual/SRPBatcher.html

단일 패스 인스턴스 렌더링 및 사용자 지정 셰이더 https://docs.unity3d.com/Manual/SinglePassInstancing.html