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 中索引的格式。 此值必须为下列值之一:

  • IndexBuffer 为 NULL) 时DXGI_FORMAT_UNKNOWN (
  • 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 中的索引数。 如果 IndexBuffer 为 NULL,则必须为 0。

VertexCount

vertexBuffer 中 (位置) 顶点数。

IndexBuffer

顶点索引数组。 如果为 NULL,则三角形未编制索引。 地址必须与 IndexFormat 的大小对齐。

指向的内存必须处于 资源状态 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。

VertexBuffer

包括步幅的顶点数组。 地址和步幅的对齐必须是组件大小的倍数,这意味着,对于具有 32 位分量的格式为 4 个字节,对于具有 16 位分量的格式,为 2 个字节。 步幅 (没有限制,而图形) 有限制,但值底部 32 位是使用的所有。 这意味着该字段是 UINT64,纯粹是为了使相邻字段在任何地方都干净而明显地对齐。 每个顶点位置都应位于步幅范围的起始地址,加速结构生成将忽略任何多余的空间。 此多余空间可能包含其他应用数据,例如顶点属性,应用负责在着色器中手动提取这些数据,无论数据是交错在顶点缓冲区中还是在其他地方。

指向的内存必须处于 资源状态 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。

注解

此结构指向的几何图形始终位于 (索引或非索引窗体) 的三角形列表中。 不支持条带。

要求

要求
最低受支持的客户端 Windows 10 版本 1809
标头 d3d12umddi.h