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_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT 정의된 256바이트에 맞춰야 합니다. 여기에 전달된 모든 기존 가속 구조체는 이러한 맞춤을 사용하여 배치해야 했을 것입니다.
가리키는 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.
설명
이 C++ 구조체 정의는 CPU에서 instance 데이터를 먼저 생성한 다음 GPU에 업로드하는 경우에 유용합니다. 그러나 애플리케이션은 동일한 레이아웃에 따라 GPU 메모리(컴퓨팅 셰이더, instance)에 직접 instance 설명을 생성할 수도 있습니다.
요구 사항
머리글 | d3d12.h |