Поделиться через


структура 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 не изменяется. Если используется формат двухдерной вершины, преобразование применяется с третьим компонентом вершины, который предполагается равным нулю.

Если 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