D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE 열거형(d3d12umddi.h)

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

Syntax

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 와 같은 도구만을 위한 것이지만 어떤 앱도 사용하지 못하게 합니다. 출력은 기본적으로 가속 구조 빌드의 역입니다.

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

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

절차적 기본 형식에 대해 반환된 AABB(축 맞춤 경계 상자)는 instance 볼륨에서 더 보수적(예: 더 큰)이 될 수 있으며, 정확한 표현을 노출하는 것이 클린 않을 수 있기 때문에 가속 구조 표현의 실제로와는 다른 수일 수 있습니다.

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

이 전체 구조는 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 구조에 설명된 대로 새 위치를 가리키도록 고정된 모든 포인터가 있는 직렬화된 가속 구조체 여야 합니다.

대상은 원래 직렬화된 가속 구조와 기능적으로 동일한 가속 구조를 가져옵니다. 최상위 가속 구조가 레이트레이싱 또는 가속 구조 업데이트에 사용될 때까지 최상위 가속 구조가 참조되는 최상위 및 하위 수준 가속 구조가 존재하는 한 최상위 가속 구조가 참조하는 최상위 및 하위 수준 가속 구조는 역직렬화됩니다.

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1809
머리글 d3d12umddi.h