Share via


D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE 열거형(d3d12.h)

CopyRaytracingAccelerationStructure를 호출할 때 수행되는 복사 작업의 유형을 지정합니다.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
} ;

상수

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

중요

원본 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
값: 0x1
복제 모드와 유사하게 대상의 원본에 대해 기능적으로 동등한 가속 구조를 생성하지만 대상을 잠재적으로 더 작고 확실히 크지 않은 메모리 공간으로 맞습니다. 대상에 필요한 크기는 EmitRaytracingAccelerationStructurePostbuildInfo에서 미리 검색할 수 있습니다.

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

기하 도형을 압축하려면 전체 가속 구조를 구성해야 하므로 먼저 구조를 빌드한 다음 압축해야 합니다.

중요

원본 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
값: 0x2
대상은 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER 설명된 레이아웃을 사용합니다. 대상에 필요한 크기는 EmitRaytracingAccelerationStructurePostbuildInfo에서 미리 검색할 수 있습니다.

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

최상위 가속 구조의 경우 출력에는 원래 빌드에서 사용된 데이터와 동일한 순서로 동일한 instance 설명 집합이 포함됩니다. 하위 수준 가속 구조의 경우 출력에는 원래 빌드에 사용된 데이터와 대략적으로 일치하는 기하 도형 설명 집합이 포함됩니다. 출력은 가속 구조에 대한 사양에서 허용되는 허용 오차 때문에 부분적으로는 원래의 대략적인 일치일 뿐이며, 일부는 개념적으로 인코딩된 것과 정확히 동일한 구조를 보고하는 내재된 복잡성으로 인해 발생합니다. 예를 들어 모바일 서비스는 스크립트 실행 간에 상태를 유지하지 않으므로 스크립트 실행 간에 지속되어야 하는 모든 데이터를 테이블에 저장해야 합니다. 절차적 기본 형식에 대해 반환된 AABB(축 맞춤 경계 상자)는 볼륨에서 더 보수적(더 큰)이 될 수 있으며 실제로 가속 구조 표현의 수와는 다를 수 있습니다. 셰이더 테이블 인덱싱 계산이 이에 따라 달라지기 때문에 각각 자체 기하 도형 설명이 있는 기하 도형은 원래 가속과 동일한 순서로 표시됩니다.


중요

원본 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 상태 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 있어야 합니다.

이 모드는 OS에서 개발자 모드를 사용하는 경우에만 허용됩니다.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
값: 0x3
대상은 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC 설명서에 설명된 레이아웃과 크기를 취하며, EmitRaytracingAccelerationStructurePostbuildInfo를 호출하여 생성된 구조체입니다.

이 모드는 앱 또는 도구가 역직렬화를 통해 일반적으로 다른 디바이스 instance 나중에 다시 사용할 수 있도록 가속 구조를 파일에 저장할 수 있도록 직렬화합니다.

최상위 가속 구조를 직렬화할 때 참조하는 하위 수준 가속 구조는 여전히 메모리에 있거나 그대로 있을 필요가 없습니다. 마찬가지로 최상위 가속 구조가 가리키는지 여부에 관계없이 하위 수준 가속 구조를 직렬화할 수 있습니다. 즉, 가속 구조의 serialization 순서는 중요하지 않습니다.

중요

원본 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다. 대상 메모리는 상태 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 있어야 합니다.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
값: 0x4
원본은 새 위치를 가리키도록 고정된 헤더 바로 뒤의 포인터가 있는 직렬화된 가속 구조여야 합니다. 자세한 내용은 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

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

역직렬화는 데이터가 직렬화된 동일한 디바이스 및 드라이버 버전에서만 수행할 수 있습니다. 그렇지 않으면 결과가 정의되지 않습니다.

이 모드는 PIX와 같은 도구에만 사용되지만 앱의 사용을 중지하는 것은 없지만 이 모드는 OS에서 개발자 모드를 사용하도록 설정한 경우에만 허용됩니다. 전체 가속 구조 빌드를 실행하는 것이 디스크에서 로드하는 것보다 더 빠를 수 있으므로 이 복사 작업은 가속 구조 캐싱에 사용되지 않습니다.


중요

원본 메모리는 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 상태여야 합니다. 대상 메모리는 상태 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 있어야 합니다.

요구 사항

   
머리글 d3d12.h