From 438aaebcbc5c963d378d297bfb13e2af24b12084 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 18 Jul 2026 15:19:07 +0400 Subject: feat(render): support full-scene 32-bit indices --- adapters/fparkan-render-vulkan/src/ffi/resources.rs | 2 +- adapters/fparkan-render-vulkan/src/ffi/smoke.rs | 2 +- adapters/fparkan-render-vulkan/src/ffi/smoke_types.rs | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'adapters/fparkan-render-vulkan/src/ffi') diff --git a/adapters/fparkan-render-vulkan/src/ffi/resources.rs b/adapters/fparkan-render-vulkan/src/ffi/resources.rs index b7e84bd..1d38503 100644 --- a/adapters/fparkan-render-vulkan/src/ffi/resources.rs +++ b/adapters/fparkan-render-vulkan/src/ffi/resources.rs @@ -236,7 +236,7 @@ pub(super) fn create_static_mesh_index_buffer( device: &VulkanLogicalDeviceProbe, mesh: &VulkanStaticMesh, ) -> Result { - let mut bytes = Vec::with_capacity(mesh.indices.len() * std::mem::size_of::()); + let mut bytes = Vec::with_capacity(mesh.indices.len() * std::mem::size_of::()); for &index in &mesh.indices { bytes.extend_from_slice(&index.to_ne_bytes()); } diff --git a/adapters/fparkan-render-vulkan/src/ffi/smoke.rs b/adapters/fparkan-render-vulkan/src/ffi/smoke.rs index 63066b4..f7c72b6 100644 --- a/adapters/fparkan-render-vulkan/src/ffi/smoke.rs +++ b/adapters/fparkan-render-vulkan/src/ffi/smoke.rs @@ -701,7 +701,7 @@ impl VulkanSmokeRenderer { command_buffer, self.index_buffer_ref()?.buffer, 0, - vk::IndexType::UINT16, + vk::IndexType::UINT32, ); let clip_from_world = matrix_bytes(self.camera.clip_from_world); device.device().cmd_push_constants( diff --git a/adapters/fparkan-render-vulkan/src/ffi/smoke_types.rs b/adapters/fparkan-render-vulkan/src/ffi/smoke_types.rs index 47cab7d..2ca517b 100644 --- a/adapters/fparkan-render-vulkan/src/ffi/smoke_types.rs +++ b/adapters/fparkan-render-vulkan/src/ffi/smoke_types.rs @@ -126,7 +126,7 @@ pub struct VulkanStaticMesh { /// Vertex data in pipeline order. pub vertices: Vec, /// Triangle-list indices into [`Self::vertices`]. - pub indices: Vec, + pub indices: Vec, /// Source-preserving triangle draw ranges in [`Self::indices`]. pub draw_ranges: Vec, } @@ -296,11 +296,11 @@ impl VulkanStaticMesh { if usize::try_from(expected_first).ok() != Some(self.indices.len()) { return Err("static mesh draw ranges must cover all indices"); } - if self - .indices - .iter() - .any(|&index| usize::from(index) >= self.vertices.len()) - { + if self.indices.iter().any(|&index| { + usize::try_from(index) + .ok() + .is_none_or(|index| index >= self.vertices.len()) + }) { return Err("static mesh index exceeds vertex count"); } Ok(()) -- cgit v1.2.3