렌더링 통계 창
셰이더 로드 시간 최적화

프레임 디버거

프레임 디버거(Frame Debugger) 를 사용하면 실행 중인 게임을 특정 프레임에서 중지하고 해당 프레임을 렌더링하는 데 사용되는 개별 드로우 콜 을 볼 수 있습니다. 디버거는 드로우 콜의 리스트를 제공하고, 하나씩 단계별로 볼 수 있도록 하여 씬이 그래픽 요소에서 어떻게 구성되는지 자세하게 볼 수 있습니다.

프레임 디버거 사용

Frame Debugger 창은 Window > Analysis > Frame Debugger 메뉴에서 불러올 수 있으며, 드로우 콜 정보를 보여주고 작업 중인 프레임의 “재생”을 제어할 수 있습니다.

메인 리스트는 출처를 식별할 수 있는 계층 구조 형식으로 드로우 콜과 프레임 버퍼 삭제와 같은 다른 이벤트의 순서를 보여줍니다. 리스트 오른쪽에 있는 패널은 지오메트리의 세부 사항이나 렌더링에 사용되는 셰이더와 같은 드로우 콜에 대한 자세한 정보를 제공합니다.

리스트에서 항목을 선택하면 해당 드로우 콜을 포함하는 게임 뷰의 씬이 표시됩니다. 툴바의 왼쪽 및 오른쪽 화살표 버튼은 리스트를 하나씩 앞이나 뒤로 움직이며, 화살표 키를 사용해도 동일한 효과를 얻을 수 있습니다. 또한 창 상단에 있는 슬라이더는 드로우 콜을 통해 빠르게 “스크럽”하여 원하는 항목을 빠르게 찾을 수 있도록 합니다. 드로우 콜이 게임 오브젝트의 지오메트리에 해당하는 경우 그 오브젝트는 메인 계층 구조 패널에서 강조 표시되어 쉽게 알아볼 수 있습니다.

선택된 드로우 콜에서 렌더링이 RenderTexture로 발생하는 경우 RenderTexture의 콘텐츠가 게임 뷰에 표시됩니다. 이는 디퍼드 셰이딩에 화면 외부의 렌더 타겟이 빌드되는지 검사하는 데 유용합니다. 예를 들어 아래와 같이 g 버퍼를 디퓨즈하는 것을 확인할 수 있습니다.

또는 섀도우 맵이 어떻게 렌더링되는지도 아래와 같이 확인할 수 있습니다.

원격 프레임 디버거

프레임 디버거를 원격으로 사용하려면 플레이어가 멀티스레드 렌더링을 지원해야 합니다. 예를 들어 WebGL, iOS는 이를 지원하지 않으므로 프레임 디버거를 원격으로 실행할 수 없습니다. 하지만 대부분의 Unity 플랫폼은 이를 지원합니다. 이와 더불어, 빌드할 때 ‘Development Build’를 체크해야 합니다.

데스크톱 플랫폼의 경우 빌드하기 전에 ‘Run In Background’ 옵션을 체크해야 합니다. 그렇지 않으면 플레이어에 프레임 디버거를 연결하는 경우 포커스될 때를 제외하고는 렌더링 변화가 반영되지 않습니다. 예를 들어 동일한 시스템에서 에디터와 플레이어를 실행하고 있을 때 에디터에서 프레임 디버거를 제어하면 플레이어의 포커스가 에디터로 이동합니다.

빠른 시작:

  • 에디터에서 프로젝트를 타겟 플랫폼으로 빌드합니다(개발용 플레이어 선택).
  • 플레이어를 실행합니다.
  • 에디터로 돌아갑니다.
  • 프레임 디버거 창을 엽니다.
  • Active Profiler를 클릭하고, 플레이어를 선택합니다.
  • Enable을 클릭하면 프레임 디버거가 플레이어에서 활성화됩니다.

렌더 타겟 디스플레이 옵션

정보 패널의 상단에 있는 툴바를 통해 게임 뷰의 현재 상태에 있는 빨강, 초록, 파랑 및 알파 채널을 분리할 수 있습니다. 이와 유사하게 채널 버튼 오른쪽에 있는 Levels 슬라이더를 이용하여 밝기에 따라 보기 영역을 분리할 수 있습니다. 이러한 기능은 RenderTexture에 렌더링하는 경우에만 활성화됩니다.

한 번에 여러 렌더 타겟에 렌더링하는 경우 어떤 것을 게임 뷰에 표시할지 선택할 수 있습니다. 다음은 각각 5.0 디퍼드 셰이딩 모드의 디퓨즈, 스페큘러, 노멀 및 이미션/간접 조명 버퍼입니다.

또한 드롭다운 메뉴에서 “Depth”를 선택하여 뎁스 버퍼의 콘텐츠를 볼 수 있습니다.

렌더 텍스처의 알파 채널을 분리함으로써 RT0 알파에 저장되는 오클루전과 RT1 알파에 저장되는 디퍼드 g 버퍼의 평활도를 확인할 수 있습니다.

이 씬의 이미션과 앰비언트/간접 조명은 매우 어둡습니다. 이 경우 Levels 슬라이더를 변경하여 더 잘 보이도록 할 수 있습니다.

셰이더 프로퍼티 값 보기

드로우 콜의 경우 프레임 디버거는 사용되는 셰이더 프로퍼티 값도 표시할 수 있습니다. “Shader Properties” 탭을 클릭하면 됩니다.

프로퍼티마다 값이 표시되며 사용된 셰이더 단계(버텍스, 프래그먼트, 지오메트리, 헐, 도메인)가 표시됩니다. OpenGL을 사용하는 경우(Mac 등) 모든 셰이더 프로퍼티는 GLSL 셰이더의 작동 방식으로 인해 버텍스 셰이더 단계로 간주됩니다.

에디터에서는 텍스처 썸네일도 표시됩니다. 그리고 썸네일을 클릭하면 프로젝트 창에 해당 텍스처가 강조 표시됩니다.

대체 프레임 디버깅 기술

외부 툴을 사용하여 렌더링을 디버깅할 수도 있습니다. 쉬운 RenderDoc 실행을 위한 에디터 통합으로 에디터에서 씬이나 게임 뷰를 검사할 수 있습니다.

스탠드얼론 플레이어를 빌드하여 다음 중 하나를 통해 실행할 수도 있습니다.

작업을 완료한 후 렌더링 중인 프레임을 캡처해야 합니다. 그리고 해당 프레임에서 발생하는 드로우 콜과 다른 렌더링 이벤트를 확인해야 합니다. 이 툴은 세부적인 요소에 대한 많은 정보를 제공받을 수 있어 매우 유용합니다.

렌더링 통계 창
셰이더 로드 시간 최적화