Version: Unity 6.0 (6000.0)
언어 : 한국어
URP의 SRP(스크립터블 렌더 파이프라인) 배처
게임 오브젝트가 URP의 SRP 배처와 호환되는지 확인

URP의 스크립터블 렌더 파이프라인 배처

SRP(스크립터블 렌더 파이프라인) 배처는 SRP를 사용하는 애플리케이션의 성능을 크게 향상시키는 드로우 콜 최적화입니다. SRP 배처는 Unity가 동일한 셰이더 배리언트를 사용하는 머티리얼에 대한 드로우 콜을 준비하고 디스패치하는 데 소요되는 CPU 시간을 줄여 줍니다.

SRP(스크립터블 렌더 파이프라인) 배처는 Unity가 동일한 셰이더 배리언트를 사용하는 머티리얼이 많이 포함된 씬을 렌더링하는 데 소요되는 CPU 시간을 줄여 줍니다.
SRP(스크립터블 렌더 파이프라인) 배처는 Unity가 동일한 셰이더 배리언트를 사용하는 머티리얼이 많이 포함된 씬을 렌더링하는 데 소요되는 CPU 시간을 줄여 줍니다.

요구 사항 및 호환성

이 섹션은 SRP 배처의 렌더 파이프라인 호환성에 대한 정보를 포함합니다.

렌더 파이프라인 호환성

기능 URP(유니버설 렌더 파이프라인) HDRP(고해상도 렌더 파이프라인) 커스텀 SRP(스크립터블 렌더 파이프라인) 빌트인 렌더 파이프라인
SRP 배처 지원 지원 지원 지원 안 함

SRP 배처의 동작 방식

드로우 콜을 최적화하는 기존 방법은 드로우 콜의 수를 줄이는 것입니다. 대신 SRP 배처는 드로우 콜 간의 렌더 상태 변경을 줄입니다. 이를 위해 SRP 배처는 일련의 binddraw GPU 커맨드를 결합합니다. 각 커맨드 시퀀스를 SRP 배치라고 합니다.

bind 및 draw 커맨드를 배칭하면 드로우 콜 간에 GPU 설정이 감소합니다.
bind 및 draw 커맨드를 배칭하면 드로우 콜 간에 GPU 설정이 감소합니다.

렌더링에 최적의 성능을 제공하려면 각 SRP 배치에 가능한 많은 binddraw 커맨드가 포함되어야 합니다. 이를 위해서는 가능한 한 적은 수의 셰이더 배리언트를 사용해야 합니다. 동일한 셰이더에 원하는 만큼 다양한 머티리얼을 사용할 수 있습니다.

Unity가 렌더 루프 중에 새로운 머티리얼을 감지하면 CPU가 모든 프로퍼티를 수집하여 상수 버퍼로 GPU에 바인드합니다. GPU 버퍼 수는 셰이더가 상수 버퍼를 선언하는 방식에 따라 달라집니다.

SRP 배처는 머티리얼 데이터가 GPU 메모리에 유지되도록 하는 저수준 렌더 루프입니다. 머티리얼 콘텐츠가 변경되지 않으면 SRP 배처는 렌더 상태를 변경하지 않습니다 대신 SRP 배처는 다음과 같이 전용 코드 경로를 사용하여 대규모 GPU 버퍼에서 Unity 엔진 프로퍼티를 업데이트합니다.

SRP 배처 렌더링 워크플로. SRP 배처는 전용 코드 경로를 사용하여 대규모 GPU 버퍼에서 Unity 엔진 프로퍼티를 업데이트합니다.
SRP 배처 렌더링 워크플로. SRP 배처는 전용 코드 경로를 사용하여 대규모 GPU 버퍼에서 Unity 엔진 프로퍼티를 업데이트합니다.

여기서 CPU는 위 다이어그램에서 Per Object large buffer라는 레이블이 지정된 Unity 엔진 프로퍼티만 처리합니다. 모든 머티리얼에는 GPU 메모리에 있는 영구 상수 버퍼가 있으며, 이 버퍼는 사용할 준비가 되어 있습니다. 이는 다음과 같은 이유로 렌더링 속도를 높입니다.

  • 이제 모든 머티리얼 콘텐츠가 GPU 메모리에서 유지됩니다.
  • 전용 코드가 모든 오브젝트당 프로퍼티에 대규모의 오브젝트당 GPU 상수 버퍼를 관리합니다.
URP의 SRP(스크립터블 렌더 파이프라인) 배처
게임 오브젝트가 URP의 SRP 배처와 호환되는지 확인