diff options
| author | Valentin Popov <valentin@popov.link> | 2026-07-18 13:53:11 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-07-18 13:53:11 +0300 |
| commit | bfb048698ecbec09e745f5733b8f5df45225d268 (patch) | |
| tree | e0f2b041f38ff6be71afec4459bb35e7ed7db83e /adapters/fparkan-render-vulkan/src/asset_mesh.rs | |
| parent | 94de743581db6f2bb68285951c8c2a0088bc9ce6 (diff) | |
| download | fparkan-bfb048698ecbec09e745f5733b8f5df45225d268.tar.xz fparkan-bfb048698ecbec09e745f5733b8f5df45225d268.zip | |
feat(render): bridge legacy camera to Vulkan
Diffstat (limited to 'adapters/fparkan-render-vulkan/src/asset_mesh.rs')
| -rw-r--r-- | adapters/fparkan-render-vulkan/src/asset_mesh.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/adapters/fparkan-render-vulkan/src/asset_mesh.rs b/adapters/fparkan-render-vulkan/src/asset_mesh.rs index 69de34f..fa7c28e 100644 --- a/adapters/fparkan-render-vulkan/src/asset_mesh.rs +++ b/adapters/fparkan-render-vulkan/src/asset_mesh.rs @@ -142,7 +142,11 @@ pub fn project_msh_to_static_mesh_in_xy_frame( position[2] * scale[2] + translation[2], ]; Ok(VulkanStaticVertex { - position: frame.project(transformed), + position: [ + frame.project(transformed)[0], + frame.project(transformed)[1], + 0.0, + ], color: [0.82, 0.72, 0.31], // Iron3D stores Res5 UV0 as signed fixed point with 1/1024 units. // Models that omit this optional stream retain the static viewer's @@ -232,7 +236,11 @@ pub fn project_land_msh_to_static_mesh_in_xy_frame( return Err(VulkanAssetMeshError::NonFinitePosition); } Ok(VulkanStaticVertex { - position: frame.project(*position), + position: [ + frame.project(*position)[0], + frame.project(*position)[1], + 0.0, + ], color: [0.31, 0.58, 0.27], uv: terrain .uv0 @@ -380,9 +388,9 @@ mod tests { alpha_test_reference: 0, }] ); - assert_eq!(mesh.vertices[1].position, [-0.8, -0.8]); - assert_eq!(mesh.vertices[2].position, [0.8, -0.8]); - assert_eq!(mesh.vertices[3].position, [-0.8, 0.8]); + assert_eq!(mesh.vertices[1].position, [-0.8, -0.8, 0.0]); + assert_eq!(mesh.vertices[2].position, [0.8, -0.8, 0.0]); + assert_eq!(mesh.vertices[3].position, [-0.8, 0.8, 0.0]); } #[test] @@ -466,8 +474,8 @@ mod tests { assert_eq!(mesh.indices, vec![0, 1, 2, 1, 3, 2]); assert_eq!(mesh.draw_ranges.len(), 1); assert_eq!(mesh.draw_ranges[0].index_count, 6); - assert_eq!(mesh.vertices[0].position, [-0.8, -0.8]); - assert_eq!(mesh.vertices[3].position, [0.8, 0.8]); + assert_eq!(mesh.vertices[0].position, [-0.8, -0.8, 0.0]); + assert_eq!(mesh.vertices[3].position, [0.8, 0.8, 0.0]); assert_eq!(mesh.vertices[0].uv, [1.0, -0.5]); assert_eq!(mesh.vertices[2].uv, [-1.0, 0.5]); } |
