다음을 통해 공유


D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE 열거형(d3d12umddi.h)

수행할 복사 작업의 유형입니다.

통사론

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
} ;

상수

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
대상이 원본에 대한 자체 포함 일치 항목이 되도록 존재할 수 있는 자체 참조 포인터를 수정하는 동안 가속 구조를 복사합니다. 다른 가속 구조에 대한 모든 외부 포인터는 복사본의 원본에서 대상으로 변경되지 않은 상태로 유지됩니다. 대상의 크기는 원본의 크기와 동일합니다.

원본 및 대상 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
복제 모드와 마찬가지로 기능적으로 동일한 가속 구조를 대상의 원본에 생성합니다. 압축 모드는 대상을 잠재적으로 더 작은 메모리 공간에도 맞습니다. 대상에 필요한 크기는 EmitRaytracingAccelerationStructurePostBuildInfo미리 검색할 수 있습니다.

이 모드는 원본 가속 구조가 원래 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS 열거형의 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 플래그를 사용하여 빌드된 경우에만 유효합니다. 그렇지 않으면 결과가 정의되지 않습니다.

원본 및 대상 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
대상은 D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054설명된 레이아웃을 따라 이동합니다. 대상에 필요한 크기는 EmitRaytracingAccelerationStructurePostBuildInfo미리 검색할 수 있습니다.

이 모드는 Windows PIX와 같은 도구에만 사용할 수 있지만 앱의 사용을 중지하는 것은 없습니다. 출력은 기본적으로 가속 구조 빌드의 역입니다.

최상위 가속 구조의 경우 출력에는 원래 빌드에서 사용된 데이터와 동일한 순서로 사용되는 인스턴스 설명 집합이 포함됩니다.

하위 수준 가속 구조의 경우 출력에는 원래 빌드에 사용된 데이터와 대략적으로 일치하는 기하 도형 설명 집합이 포함됩니다. 출력은 가속 구조 사양에서 허용되는 허용 오차 때문에 부분적으로 원본에 대한 대략적인 일치일 뿐이며, 개념적으로 인코딩된 것과 정확히 동일한 구조를 보고하는 것은 간단하지 않을 수 있기 때문입니다.

예를 들어 절차적 기본 형식에 대해 반환된 AABB(축 맞춤 경계 상자)는 정확한 표현을 노출하는 것이 깨끗하지 않을 수 있으므로 볼륨이 더 보수적이고(예: 더 큰) 수와 실제로 가속 구조 표현의 수와 다를 수 있습니다.

셰이더 테이블 인덱싱 계산이 이에 따라 달라지기 때문에 기하 도형은 각각 고유한 기하 도형 설명을 사용하여 원래 빌드와 동일한 순서로 표시되어야 합니다.

이 전체 구조는 Windows의 PIX와 같은 도구에서 드라이버가 앱의 입력으로 만든 가속 구조에 대한 시각적 감각을 애플리케이션에 제공할 수 있을 만큼 충분합니다. 시각화는 애플리케이션이 허용되는 허용 오차를 넘어 가속 구조를 만드는 데 사용한 데이터와 심하게 불일치하는 경우 가속 구조에서 드라이버 버그를 표시하는 데 도움이 될 수 있습니다.

원본 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS 있어야 합니다.

이 모드는 OS에서 개발자 모드를 사용하는 경우에만 허용됩니다.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
대상은 EmitRaytracingAccelerationStructurePostBuildInfo통해 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054설명된 레이아웃과 크기를 사용합니다.

이렇게 하면 가속 구조가 직렬화되어 Windows의 PIX와 같은 도구가 역직렬화를 통해 나중에 재생하기 위해 파일에 저장할 수 있습니다. Windows용 PIX와 같은 도구를 위한 것이지만 어떤 앱도 이를 사용하지 못하게 하는 것은 없습니다.

원본 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS 있어야 합니다.

최상위 가속 구조를 직렬화할 때 하위 수준 가속 구조는 메모리에 계속 있거나 그대로 있을 필요가 없습니다. 마찬가지로 최상위 가속 구조가 이를 가리키는지 여부에 관계없이 하위 수준 가속 구조를 직렬화할 수 있습니다. 즉, 가속 구조의 직렬화 순서는 중요하지 않습니다.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
원본은 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 구조에서 설명한 대로 새 위치를 가리키도록 고정된 모든 포인터가 있는 직렬화된 가속 구조여야 합니다.

대상은 원래 serialize된 가속 구조와 기능적으로 동일한 가속 구조를 가져옵니다. 최상위 가속 구조가 광선 추적 또는 가속 구조 업데이트에 사용되는 경우 최상위 가속 구조가 참조되는 하위 수준 가속 구조가 있는 한 최상위 수준 및 하위 수준 가속 구조가 어떤 순서로 참조되는지는 중요하지 않습니다.

역직렬화는 동일한 디바이스에서만 작동하며 드라이버 버전이 그렇지 않으면 결과가 정의되지 않습니다. 전체 가속 구조 빌드를 실행하는 것이 디스크에서 로드하는 것보다 더 빠를 수 있으므로 이는 가속 구조를 캐싱하는 데 사용되지 않습니다.
Windows용 PIX와 같은 도구를 위한 것이지만, 적어도 지금은 역직렬화를 위해서는 OS가 개발자 모드에 있어야 하지만 어떤 앱도 이를 사용하지 못하게 하는 것은 없습니다.

원본 메모리는 리소스 상태 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 있어야 합니다.
대상 메모리는 상태 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 1809
헤더 d3d12umddi.h