Version: 2023.2
언어: 한국어
버텍스 릿 렌더링 경로
커맨드 버퍼를 사용하여 빌트인 렌더 파이프라인 확장

빌트인 렌더 파이프라인의 렌더링 순서

빌트인 렌더 파이프라인에서 Unity가 오브젝트를 렌더링하는 순서는 두 가지 요소, 즉 오브젝트가 있는 렌더 대기열과 Unity가 해당 렌더 대기열 내에서 오브젝트를 정렬하는 방법에 기반합니다.

렌더 대기열

Unity는 오브젝트를 렌더 대기열이라는 그룹으로 정렬합니다. Unity는 한 렌더 대기열의 콘텐츠를 렌더링한 후 다른 렌더 대기열의 콘텐츠를 렌더링합니다.

Unity에는 다음과 같이 명명된 렌더 대기열이 있으며, 렌더링 순서는 다음과 같습니다.

이름 Index 설명
Background 1000 이 대기열은 씬의 배경에 그려야 하는 모든 요소에 사용됩니다.
Geometry 2000 이 대기열은 불투명 지오메트리에 사용됩니다. 기본 대기열입니다.
AlphaTest 2450 이 대기열은 알파 테스트 지오메트리에 사용되며, Geometry 대기열 다음입니다. 이는 알파 테스트 오브젝트는 모든 솔리드 오브젝트를 그린 후에 렌더링하는 것이 더 효율적이기 때문입니다.
Transparent 3000 알파 블렌드된 모든 항목(뎁스 버퍼에 기록하지 않는 셰이더)에 이 대기열을 사용합니다. 예를 들면 유리 또는 파티클 효과가 있습니다.
Overlay 4000 이 대기열은 다른 모든 요소 위에 렌더링 되는 효과(예: 렌즈 플레어)에 사용됩니다.

스카이박스 머티리얼은 특수한 경우입니다. Unity는 모든 불투명 지오메트리 이후(대기열 인덱스 2500 이후) 및 모든 투명 지오메트리 이전(대기열 인덱스 2501 이전)에 스카이박스 머티리얼을 그립니다.

렌더 대기열 설정

기본적으로 Unity는 Unity 셰이더에 지정된 렌더 대기열에 오브젝트를 배치합니다. 이 값은 [Queue] SubShader 태그를 사용하여 정의합니다.

이 값은 머티리얼별로 오버라이드할 수 있습니다.

Unity 에디터에서 이 작업은 머티리얼 인스펙터에서 Render Queue 프로퍼티를 설정하여 수행할 수 있습니다. C# 스크립트에서는 Rendering.RenderQueue 열거형을 사용하여 Material.renderQueue 값을 설정할 수 있습니다.

렌더 대기열 내 정렬 동작

각 렌더 대기열 내에서 Unity는 카메라로부터의 거리를 기준으로 오브젝트를 정렬하고 그립니다. 이 정렬 동작은 렌더 대기열의 인덱스에 따라 다릅니다.

  • 인덱스가 최대 2500(지오메트리 + 500)인 대기열의 경우, Unity는 기본적으로 OpaqueSortMode.FrontToBack에 정의된 동작을 사용하여 이 대기열의 렌더러를 정렬합니다.
  • 인덱스가 2501 이상인 대기열의 경우 Unity는 기본적으로 TransparencySortMode.Default에 정의된 동작을 사용하여 이 대기열의 렌더러를 정렬합니다.

정렬 동작 설정

렌더 대기열 내에서 정렬 동작을 변경하는 방식은 렌더 대기열의 인덱스에 따라 다릅니다.

  • 인덱스가 최대 2500(지오메트리 + 500)인 대기열의 경우, Camera.opaqueSortMode API를 사용하여 카메라의 불투명 정렬 모드를 변경할 수 있습니다.
  • 인덱스가 2501 이상인 대기열의 경우 Rendering.GraphicsSettings-transparencySortMode API를 사용하여 기본 투명 정렬 모드를 변경할 수 있습니다. 또한 Camera.transparencySortMode API를 사용하여 카메라의 투명 정렬 모드를 변경할 수 있습니다.
버텍스 릿 렌더링 경로
커맨드 버퍼를 사용하여 빌트인 렌더 파이프라인 확장