forked from mirror/vulkan-zig
add renderSpecialContainer support for VK_NV_cluster_acceleration_structure
Solves #169
This commit is contained in:
@@ -894,6 +894,87 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
.{maybe_author orelse ""},
|
.{maybe_author orelse ""},
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
|
} else if (std.mem.eql(u8, basename, "VkClusterAccelerationStructureGeometryIndexAndGeometryFlags")) {
|
||||||
|
try self.writer.print(
|
||||||
|
\\packed struct(u32) {{
|
||||||
|
\\ geometry_index: u24,
|
||||||
|
\\ reserved: u5 = 0,
|
||||||
|
\\ geometry_flags: u3, // ClusterAccelerationStructureGeometryFlags{0s}
|
||||||
|
\\}};
|
||||||
|
,
|
||||||
|
.{maybe_author orelse ""},
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
} else if (std.mem.eql(u8, basename, "VkClusterAccelerationStructureBuildTriangleClusterInfo")) {
|
||||||
|
try self.writer.print(
|
||||||
|
\\extern struct {{
|
||||||
|
\\ cluster_id: u32,
|
||||||
|
\\ cluster_flags: ClusterAccelerationStructureClusterFlags{0s},
|
||||||
|
\\ cluster_data: packed struct(u32) {{
|
||||||
|
\\ triangle_count: u9,
|
||||||
|
\\ vertex_count: u9,
|
||||||
|
\\ position_truncate_bit_count: u6,
|
||||||
|
\\ index_type: u4,
|
||||||
|
\\ opacity_micromap_index_type: u4,
|
||||||
|
\\ }},
|
||||||
|
\\ base_geometry_index_and_geometry_flags: ClusterAccelerationStructureGeometryIndexAndGeometryFlags{0s},
|
||||||
|
\\ index_buffer_stride: u16,
|
||||||
|
\\ vertex_buffer_stride: u16,
|
||||||
|
\\ geometry_index_and_flags_buffer_stride: u16,
|
||||||
|
\\ opacity_micromap_index_buffer_stride: u16,
|
||||||
|
\\ index_buffer: DeviceAddress,
|
||||||
|
\\ vertex_buffer: DeviceAddress,
|
||||||
|
\\ geometry_index_and_flags_buffer: DeviceAddress,
|
||||||
|
\\ opacity_micromap_array: DeviceAddress,
|
||||||
|
\\ opacity_micromap_index_buffer: DeviceAddress,
|
||||||
|
\\}};
|
||||||
|
,
|
||||||
|
.{maybe_author orelse ""},
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
} else if (std.mem.eql(u8, basename, "VkClusterAccelerationStructureBuildTriangleClusterTemplateInfo")) {
|
||||||
|
try self.writer.print(
|
||||||
|
\\extern struct {{
|
||||||
|
\\ cluster_id: u32,
|
||||||
|
\\ cluster_flags: ClusterAccelerationStructureClusterFlags{0s},
|
||||||
|
\\ cluster_data: packed struct(u32) {{
|
||||||
|
\\ triangle_count: u9,
|
||||||
|
\\ vertex_count: u9,
|
||||||
|
\\ position_truncate_bit_count: u6,
|
||||||
|
\\ index_type: u4,
|
||||||
|
\\ opacity_micromap_index_type: u4,
|
||||||
|
\\ }},
|
||||||
|
\\ base_geometry_index_and_geometry_flags: ClusterAccelerationStructureGeometryIndexAndGeometryFlags{0s},
|
||||||
|
\\ index_buffer_stride: u16,
|
||||||
|
\\ vertex_buffer_stride: u16,
|
||||||
|
\\ geometry_index_and_flags_buffer_stride: u16,
|
||||||
|
\\ opacity_micromap_index_buffer_stride: u16,
|
||||||
|
\\ index_buffer: DeviceAddress,
|
||||||
|
\\ vertex_buffer: DeviceAddress,
|
||||||
|
\\ geometry_index_and_flags_buffer: DeviceAddress,
|
||||||
|
\\ opacity_micromap_array: DeviceAddress,
|
||||||
|
\\ opacity_micromap_index_buffer: DeviceAddress,
|
||||||
|
\\ instantiation_bounding_box_limit: DeviceAddress,
|
||||||
|
\\}};
|
||||||
|
,
|
||||||
|
.{maybe_author orelse ""},
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
} else if (std.mem.eql(u8, basename, "VkClusterAccelerationStructureInstantiateClusterInfo")) {
|
||||||
|
try self.writer.print(
|
||||||
|
\\extern struct {{
|
||||||
|
\\ cluster_id_offset: u32,
|
||||||
|
\\ geometry_index_offset: packed struct(u32) {{
|
||||||
|
\\ offset: u24,
|
||||||
|
\\ reserved: u8 = 0,
|
||||||
|
\\ }},
|
||||||
|
\\ cluster_template_address: DeviceAddress,
|
||||||
|
\\ vertex_buffer: StridedDeviceAddress{0s},
|
||||||
|
\\}};
|
||||||
|
,
|
||||||
|
.{maybe_author orelse ""},
|
||||||
|
);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user