D3D12_RAYTRACING_INSTANCE_DESC 구조체(d3d12.h)

가속 구조 빌드 프로세스 중에 GPU 메모리에 사용되는 광선 추적 가속 구조의 instance 설명합니다.

구문

typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  FLOAT                     Transform[3][4];
  UINT                      InstanceID : 24;
  UINT                      InstanceMask : 8;
  UINT                      InstanceContributionToHitGroupIndex : 24;
  UINT                      Flags : 8;
  D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;

멤버

Transform[3]

형식: FLOAT [3][4]

instance 세계 변환을 나타내는 행 주 레이아웃의 3x4 변환 행렬입니다. 구현은 모든 기하 도형 또는 AABB를 변환하는 것과는 반대로 광선을 변환합니다.

참고

Transform 레이아웃은 일반적으로 아핀 매트릭스가 메모리에 저장되는 방식의 트랜스포즈입니다. 4개의 3-벡터 대신 3개의 Transform 4-벡터로 배치됩니다.

InstanceID

형식: UINT : 24

지원되는 셰이더 형식의 내장 함수를 사용하여 InstanceID 액세스할 수 있는 임의의 24비트 값입니다.

InstanceMask

형식: UINT : 8

instance 할당된 8비트 마스크로, 광선별로 인스턴스 그룹을 포함/거부하는 데 사용할 수 있습니다. 값이 0이면 instance 포함되지 않으므로 일반적으로 0이 아닌 값으로 설정해야 합니다. 자세한 내용은 TraceRay 함수에 InstanceInclusionMask 대한 매개 변수를 참조하세요.

InstanceContributionToHitGroupIndex

형식: UINT : 24

셰이더 테이블 인덱싱에 추가할 instance 기여도를 나타내는 임의의 24비트 값으로 사용할 적중 그룹을 선택합니다.

Flags

형식: UINT : 8

instance 적용할 D3D12_RAYTRACING_INSTANCE_FLAGS 플래그를 나타내는 8비트 마스크입니다.

AccelerationStructure

형식: D3D12_GPU_VIRTUAL_ADDRESS

인스턴스화되는 하위 수준 가속 구조의 주소입니다. 주소는 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT 정의된 256바이트에 맞춰야 합니다. 여기에 전달된 모든 기존 가속 구조체는 이러한 맞춤을 사용하여 배치해야 했을 것입니다.

가리키는 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.

설명

이 C++ 구조체 정의는 CPU에서 instance 데이터를 먼저 생성한 다음 GPU에 업로드하는 경우에 유용합니다. 그러나 애플리케이션은 동일한 레이아웃에 따라 GPU 메모리(컴퓨팅 셰이더, instance)에 직접 instance 설명을 생성할 수도 있습니다.

요구 사항

   
머리글 d3d12.h