Version: Unity 6.0 (6000.0)
언어 : 한국어
드로우 콜 최적화
Choose a method for optimizing draw calls

드로우 콜 최적화 소개

화면에 지오메트리를 그리기 위해 Unity는 그래픽스 API에 드로우 콜을 전송합니다. 드로우 콜은 그래픽스 API가 무엇을 그리고 어떻게 그릴지 알려 줍니다. 각 드로우 콜에는 텍스처, 셰이더, 버퍼에 대한 정보 등 그래픽스 API가 화면에 그리는 데 필요한 모든 정보가 포함되어 있습니다. 드로우 콜은 리소스를 많이 소모할 수 있지만, 드로우 콜 준비가 드로우 콜 자체보다 리소스를 많이 소모하는 경우가 많습니다.

드로우 콜을 준비하기 위해 CPU는 GPU의 리소스를 설정하고 내부 설정을 변경합니다. 이러한 설정을 렌더 상태라고 합니다. 다른 머티리얼로 전환하는 등 렌더 상태를 변경하는 작업은 그래픽스 API가 수행하는 작업 중 가장 많은 리소스를 소모하는 작업입니다.

렌더 상태 변경은 리소스를 많이 소모하기 때문에 이를 최적화하는 것이 중요합니다. 렌더 상태 변경을 최적화하는 주요 방법은 렌더 상태 변경 사항의 수를 줄이는 것입니다. 두 가지 방법으로 옮길 수 있습니다.

  • 총 드로우 콜 수를 줄입니다. 드로우 콜 수를 줄이면 드로우 콜 간의 렌더 상태 변경 수도 줄어듭니다.
  • 렌더 상태의 변경 횟수를 줄이는 방식으로 드로우 콜을 구성합니다. 그래픽스 API가 동일한 렌더 상태를 사용하여 다수의 드로우 콜을 수행하는 경우 드로우 콜을 그룹화할 수 있고 렌더 상태 변경 수만큼 작업을 수행하지 않아도 됩니다.

드로우 콜과 렌더 상태 변경을 최적화하면 애플리케이션에 많은 이점이 있습니다. 주로 프레임 시간을 개선하지만 다음과 같은 이점도 있습니다.

  • 애플리케이션에 필요한 전기 양을 줄입니다. 배터리 기반 기기의 경우 배터리가 소진되는 속도를 줄입니다. 또한 애플리케이션을 실행할 때 기기에 발생하는 열의 양도 줄어듭니다.
  • 향후 애플리케이션 개발의 유지 관리성을 향상시킵니다. 드로우 콜과 렌더 상태 변경을 더 일찍 최적화하고 최적화 수준을 유지하면 성능에 오버헤드가 크게 발생하지 않고 씬에 더 많은 게임 오브젝트를 추가할 수 있습니다.

최적화 우선 순위

동일한 씬에서 여러 드로우 콜 최적화 메서드를 사용할 수 있지만 Unity는 특정 순서에 따라 드로우 콜 최적화 메서드의 우선 순위를 지정합니다. 두 개 이상의 드로우 콜 최적화 방법을 사용하도록 게임 오브젝트에 표시하는 경우 Unity는 우선 순위가 가장 높은 메서드를 사용합니다.

유일한 예외는 URP(유니버설 렌더 파이프라인) 또는 HDRP(고해상도 렌더 파이프라인)의 SRP 배처입니다. SRP 배처를 사용하는 경우 Unity는 SRP 배처와 호환되는 게임 오브젝트에 대한 정적 배칭도 지원합니다. Unity는 드로우 콜 최적화를 다음 순서로 우선시합니다.

  1. SRP 배처와 정적 배칭
  2. GPU 인스턴싱
  3. 동적 배칭

게임 오브젝트에 정적 배칭을 설정하고 Unity가 성공적으로 배칭하면 렌더러가 인스턴싱 셰이더를 사용하더라도 Unity는 해당 게임 오브젝트에 대한 GPU 인스턴싱을 비활성화합니다. 이 경우 인스펙터 창에 정적 배칭을 비활성화하라는 경고 메시지가 표시됩니다. 마찬가지로 Unity가 메시에 GPU 인스턴싱을 사용할 수 있는 경우 Unity는 해당 메시에 동적 배칭을 비활성화합니다.

드로우 콜 최적화
Choose a method for optimizing draw calls