D3D12_VIEW_INSTANCING_DESC 구조체(d3d12.h)

뷰 인스턴스화 구성 중에 사용되는 매개 변수를 지정합니다.

구문

typedef struct D3D12_VIEW_INSTANCING_DESC {
  UINT                               ViewInstanceCount;
  const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
  D3D12_VIEW_INSTANCING_FLAGS        Flags;
} D3D12_VIEW_INSTANCING_DESC;

멤버

ViewInstanceCount

사용할 뷰 수를 최대 D3D12_MAX_VIEW_INSTANCE_COUNT 지정합니다.

pViewInstanceLocations

viewport/scissor의 위치를 지정하고 각 뷰 instance 대상 세부 정보를 렌더링하는 ViewInstanceCount 뷰 instance 위치 구조가 포함된 메모리 위치의 주소입니다.

Flags

추가 옵션을 사용하여 뷰 인스턴스를 구성합니다.

설명

뷰 인스턴스는 이 구조를 사용하여 PSO에서 선언됩니다. 보기 instance 개수는 보기 수에 따라 전체 파이프라인 최적화를 허용하도록 PSO에 설정됩니다.

보기 인스턴스는 PSO에서 선언되지 않았거나 ViewInstanceCount가 0으로 설정된 경우 비활성화됩니다. 사용하지 않도록 설정하면 렌더링은 보기 인스턴스화가 활성화되고 ViewInstanceCount가 1로 설정된 것처럼 동작합니다. 셰이더는 SV_ViewID 값이 0만 표시되고 하나의 뷰 instance 생성됩니다. 이렇게 하면 뷰 인스턴스를 알고 있는 셰이더를 사용하지 않도록 설정하는 PSO에서 계속 사용할 수 있습니다. 일부 어댑터는 셰이더 모델 6.1(SV_ViewID 노출)을 지원하지만 인스턴스를 볼 수는 없습니다. 이러한 어댑터는 여전히 ViewInstanceCount를 0 또는 1로 선언하는 PSO에서 SV_ViewID 입력하는 셰이더를 지원해야 합니다.

래스터화 이전의 셰이더는 SV_ViewID 의존할 필요가 없는 SV_RenderTargetArrayIndex 및 SV_ViewportArrayIndex 값을 출력할 수 있습니다. 기본 형식이 전송될 뷰포트 및 렌더링 대상의 최종 유효 인덱스를 계산하기 위해 이러한 값은 PSO에 선언된 뷰 instance 위치의 ViewportArrayIndex 및 RenderTargetArrayIndex 값에 추가됩니다. 계산된 인덱스가 범위를 벗어나면(즉, 인덱스가 해당 배열의 뷰포트 또는 렌더링 대상 요소 수보다 클 때) 유효 인덱스는 0이 됩니다.

뷰포트 또는 렌더링 대상 인덱스를 동적으로 선택하는 셰이더의 경우 애플리케이션은 PSO에 선언된 모든 뷰 instance 위치를 단일 값(예: 0)으로 설정하여 동적으로 선택한 SV_RenderTargetArrayIndex 및 SV_ViewportArrayIndex 값이 추가되는 균일한 기본 인덱스 역할을 할 수 있습니다.

요구 사항

요구 사항
헤더 d3d12.h

추가 정보

핵심 구조체