Unity 렌더링 프로파일러 가이드
이 문서는 Unity의 렌더링 프로파일러에 대한 개요 정보를 제공하고, 이를 효과적으로 활용할 수 있는 방법에 대해 설명합니다.
렌더링 프로파일러란?
렌더링 프로파일러는 씬 렌더링에 사용되는 CPU 및 GPU의 작업 통계를 보여줍니다. 이를 통해 개발자는 씬의 성능을 분석하고 최적화할 수 있습니다. 프로파일러를 사용하면 다음과 같은 정보를 확인할 수 있습니다:
- 배치 수 (Batches Count)
- SetPass 호출 수 (SetPass Calls Count)
- 렌더링된 삼각형 수 (Triangles Count)
- 버텍스 수 (Vertices Count)
이 통계는 최적화 작업에 유용하며, 성능 문제의 원인을 파악하는 데 도움을 줍니다.
렌더링 프로파일러 모듈의 카테고리
렌더링 프로파일러 모듈의 차트에는 네 가지 주요 카테고리가 있습니다:
차트 | 설명 |
---|---|
Batches Count | 프레임 동안 Unity가 처리한 배치 수입니다. |
SetPass Calls Count | 셰이더 패스를 전환한 횟수입니다. |
Triangles Count | 프레임 동안 Unity가 처리한 삼각형 수입니다. |
Vertices Count | 프레임 동안 Unity가 처리한 버텍스 수입니다. |
모듈 세부 정보
렌더링 프로파일러 모듈을 클릭하면 세부 정보 창에서 더욱 상세한 통계를 확인할 수 있습니다. 이 창에서는 현재 프레임의 드로우 콜 및 기타 렌더링 관련 정보를 확인할 수 있습니다.
프레임 디버거를 사용하여 개별 드로우 콜에 대한 정보를 볼 수 있으며, 이를 통해 무슨 일이 발생하고 있는지 쉽게 이해할 수 있습니다.
통계 항목 설명
렌더링 프로파일러에서는 다음과 같은 주요 통계 정보를 제공합니다:
통계 항목 | 설명 | 릴리스 플레이어에서 액세스 가능 |
---|---|---|
SetPass Calls Count | 셰이더 패스를 전환한 횟수입니다. | 지원 |
Draw Calls Count | 총 드로우 콜 횟수입니다. | 지원 |
Total Batches Count | 처리된 총 배치 수입니다. | 지원 |
Triangles Count | 처리된 삼각형 수입니다. | 지원 |
Vertices Count | 처리된 버텍스 수입니다. | 지원 |
Dynamic Batched Draw Calls Count | 동적 배치로 결합된 드로우 콜 수입니다. | 지원 안 함 |
Instanced Batched Draw Calls Count | 인스턴스 배치로 결합된 드로우 콜 수입니다. | 지원 안 함 |
Used Textures Count | 사용된 텍스처 수입니다. | 지원 안 함 |
스크립트 예제
렌더링 프로파일러 카운터를 사용하여 통계 정보를 수집하고表示하는 간단한 예제 스크립트는 다음과 같습니다.
using System.Text;
using Unity.Profiling;
using UnityEngine;
public class RenderStatsScript : MonoBehaviour
{
string statsText;
ProfilerRecorder setPassCallsRecorder;
ProfilerRecorder drawCallsRecorder;
ProfilerRecorder verticesRecorder;
void OnEnable()
{
setPassCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "SetPass Calls Count");
drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count");
verticesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Vertices Count");
}
void OnDisable()
{
setPassCallsRecorder.Dispose();
drawCallsRecorder.Dispose();
verticesRecorder.Dispose();
}
void Update()
{
var sb = new StringBuilder(500);
if (setPassCallsRecorder.Valid)
sb.AppendLine($"SetPass Calls: {setPassCallsRecorder.LastValue}");
if (drawCallsRecorder.Valid)
sb.AppendLine($"Draw Calls: {drawCallsRecorder.LastValue}");
if (verticesRecorder.Valid)
sb.AppendLine($"Vertices: {verticesRecorder.LastValue}");
statsText = sb.ToString();
}
void OnGUI()
{
GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
}
}
활용 방법
위의 스크립트를 Unity 프로젝트에 추가하면, 게임 오브젝트에서 렌더링 정보를 실시간으로 확인할 수 있습니다. 이를 통해 성능을 분석하고 최적화 전략을 세울 수 있습니다.
렌더링 통계는 ProfilerRecorder API를 통해 커스텀 모듈로도 활용할 수 있으므로, 필요한 경우 직접 프로파일러 모듈을 생성하여 더 많은 정보를 수집할 수도 있습니다.
결론
렌더링 프로파일러는 Unity에서 최적화 작업을 수행하는 중요한 도구입니다. 올바르게 활용한다면, 게임 성능을 개선하고 보다 나은 사용자 경험을 제공할 수 있습니다.