структура D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 (d3d12umddi.h)

Описывает геометрию треугольника трассировки лучей.

Синтаксис

typedef struct D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 {
  D3D12DDI_GPU_VIRTUAL_ADDRESS            ColumnMajorTransform3x4;
  DXGI_FORMAT                             IndexFormat;
  DXGI_FORMAT                             VertexFormat;
  UINT                                    IndexCount;
  UINT                                    VertexCount;
  D3D12DDI_GPU_VIRTUAL_ADDRESS            IndexBuffer;
  D3D12DDI_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054;

Члены

ColumnMajorTransform3x4

Адрес матрицы преобразования аффинного преобразования 3x4 в основной строке, которая будет применена к вершинам в vertexBuffer во время сборки структуры ускорения. Содержимое VertexBuffer не изменяется. Если используется формат вершин 2D, преобразование применяется с третьим компонентом вершины, который предполагается, что он равен нулю.

Если ColumnMajorTransform3x4 имеет значение NULL, вершины не преобразуются. Использование ColumnMajorTransform3x4 может привести к увеличению требований к вычислению и /или памяти для сборки структуры ускорения.

Память, указываемая на состоянии ресурса, должна находиться в D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

IndexFormat

DXGI_FORMAT, представляющий формат индексов в IndexBuffer. Это значение должно быть одним из следующих значений:

  • DXGI_FORMAT_UNKNOWN (если IndexBuffer имеет значение NULL)
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

DXGI_FORMAT, представляющий формат вершин (позиций) в VertexBuffer. Это значение должно быть одним из следующих значений:

  • DXGI_FORMAT_R32G32_FLOAT (третий компонент предполагается 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (третий компонент предполагается 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Число индексов в IndexBuffer. Должно быть равно 0, если IndexBuffer имеет значение NULL.

VertexCount

Количество вершин (позиций) в VertexBuffer.

IndexBuffer

Массив индексов вершин. Если значение NULL, треугольники не индексируются. Адрес должен быть выровнен по размеру IndexFormat.

Память, указываемая на состоянии ресурса, должна находиться в D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

VertexBuffer

Массив вершин, включая шаг. Выравнивание по адресу и шагу должно быть несколько размеров компонента, то есть 4 байта для форматов с 32-разрядными компонентами и 2 байтами для форматов с 16-разрядными компонентами. Нет ограничений на шаг (в то время как существует ограничение для графики), кроме того, что нижние 32-разрядные значения используются все, что используется. Это означает, что поле является UINT64 исключительно для того, чтобы соседние поля выравнивать чисто и, очевидно, везде. Ожидается, что каждая позиция вершины будет находиться в начальном адресе диапазона шага, а любое избыточное пространство игнорируется сборками структуры ускорения. Это избыточное пространство может содержать другие данные приложения, такие как атрибуты вершин, которые приложение отвечает за ручное получение в шейдерах, независимо от того, пересекается ли он в буферах вершин или в другом месте.

Память, указываемая на состоянии ресурса, должна находиться в D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

Замечания

Геометрия, на которую указывает эта структура, всегда находится в списке треугольников (индексированная или неиндексированная форма). Полосы не поддерживаются.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1809
заголовка d3d12umddi.h