정렬된 래스터라이저 뷰

ROV(정렬된 래스터라이저 뷰)에서는 픽셀 셰이더 코드가 UAV(순서가 지정되지 않은 액세스 뷰)의 그래픽 파이프라인 결과 순서에 대한 일반 요구 사항을 변경하는 선언을 통해 UAV 바인딩을 표시할 수 있습니다. 이렇게 하면 OIT(Order Independent Transparency) 알고리즘이 작동하므로 여러 투명 개체가 뷰에서 서로 인라인되는 경우 훨씬 더 나은 렌더링 결과가 제공됩니다.

개요

표준 그래픽 파이프라인은 투명도를 포함한 여러 텍스처를 올바르게 합성하는 데 문제가 있을 수 있습니다. 철조망, 연기, 불, 초목, 색유리와 같은 개체는 원하는 효과를 얻기 위해 투명도를 사용합니다. 투명도를 포함한 여러 텍스처가 서로 나란히 있을 때 문제가 발생합니다(예: 초목이 있는 유리 건물 전면의 펜스 앞에서 발생하는 연기). ROV(정렬된 래스터라이저 뷰)를 사용하면 기본 OIT 알고리즘을 통해 하드웨어 기능을 사용하여 투명성 순서를 제대로 해결할 수 있습니다. 투명도는 픽셀 셰이더에서 처리됩니다.

ROV(정렬된 래스터라이저 뷰)에서는 픽셀 셰이더 코드가 UAV의 그래픽 파이프라인 결과 순서에 대한 일반 요구 사항을 변경하는 선언을 통해 UAV 바인딩을 표시할 수 있습니다.

ROV는 겹치는 픽셀 셰이더 호출 쌍에 대해 UAV 액세스 순서를 보장합니다. 이 경우 “겹치는”은 호출이 동일한 그리기 호출에 의해 생성되고, 픽셀 빈도 실행 모드에서 동일한 픽셀 좌표를 공유하며, 샘플 빈도 모드에서 동일한 픽셀 및 샘플 좌표를 공유함을 의미합니다.

픽셀 셰이더 호출의 겹치는 ROV 액세스가 실행되는 순서는 기하 도형이 제출되는 순서와 동일합니다. 즉, 겹치는 픽셀 셰이더 호출의 경우 픽셀 셰이더 호출로 수행된 ROV 쓰기는 후속 호출이 읽을 수 있어야 하고 이전 호출에 의한 읽기에 영향을 주지 않아야 합니다. 픽셀 셰이더 호출로 수행된 ROV 읽기는 이전 호출에 의한 쓰기를 반영해야 하며 후속 호출에 의한 쓰기를 반영하지 않아야 합니다. UAV의 경우 일반적으로 그래픽 파이프라인 결과의 고정된 순서로 설정되는 출력 불변 보장에서 명시적으로 생략되므로 이것이 중요합니다.

구현 세부 정보

ROV(정렬된 래스터라이저 뷰)는 다음과 같은 새로운 HLSL(High Level Shader Language) 개체를 사용하여 선언되며 픽셀 셰이더에서만 사용할 수 있습니다.

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

이 개체는 다른 UAV 개체(예: RWBuffer 등)와 동일한 방식으로 사용합니다.

API 요약

ROV는 UAV에 다양한 동작 의미 체계를 적용하는 HLSL 전용 구문입니다. UAV에 관련된 모든 API는 ROV에도 관련됩니다. 다음 메서드, 구조체 및 도우미 클래스는 래스터라이저를 참조합니다.