summary refs log tree commit diff
path: root/src/graphics/model.rs
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-17 03:32:02 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-17 03:32:02 -0700
commit4b63074631fa35bd875a79b5c31d490d10a0491e (patch)
tree9e4c35d764fec540a4783023291779ffcf4bfe1a /src/graphics/model.rs
parentb14c2c4313cff700bfacde4c716e8effe68f66c1 (diff)
draw three teapots HEAD main
and split out the model rendering code a bunch for rapid instancing

Force-Push: yes
Change-Id: I75be46d8cd11bbf662013711ee5ec56abeb5e6ea
Diffstat (limited to 'src/graphics/model.rs')
-rw-r--r--src/graphics/model.rs32
1 files changed, 7 insertions, 25 deletions
diff --git a/src/graphics/model.rs b/src/graphics/model.rs
index 096de86..053818f 100644
--- a/src/graphics/model.rs
+++ b/src/graphics/model.rs
@@ -5,8 +5,6 @@ use crate::graphics::util::init_buffer;
 use crate::linear_algebra::{ Vec3, Vec4, Transformation };
 use crate::shader_data::{ Vertex, VertexPushBlock };
 
-use std::f32::consts::{ TAU };
-
 use vulkanalia::{ Device, Instance };
 use vulkanalia::vk::{ self, DeviceV1_0 };
 
@@ -60,8 +58,8 @@ impl Model {
   }
 
   #[allow(unsafe_code)]
-  pub fn render(&self, time: f32, device: &Device, render: &Render,
-                command_buffer: &vk::CommandBuffer)
+  pub fn make_active(&self, device: &Device, render: &Render,
+                     command_buffer: &vk::CommandBuffer)
   {
     unsafe {
       device.cmd_bind_vertex_buffers(*command_buffer, 0,
@@ -72,28 +70,12 @@ impl Model {
       device.cmd_bind_index_buffer(*command_buffer, self.index_buffer,
                                    0, vk::IndexType::UINT32)
     };
+  }
 
-    let scale = Vec3::new(1.0, 1.0, 1.0);
-    let model = Transformation {
-      rotation: Vec4::rotation_quaternion(&Vec3::new(0.0, 1.0, 0.0),
-                                          time % TAU),
-      translation: Vec3::new(0.0, 0.0, 0.0),
-    };
-    let push_block = VertexPushBlock::<f32> { scale, model };
-    let size = size_of::<VertexPushBlock::<f32>>();
-    let push_block_bytes = unsafe {
-      std::slice::from_raw_parts(&push_block as *const VertexPushBlock<f32>
-                                             as *const u8,
-                                 size)
-    };
-
-    unsafe {
-      device.cmd_push_constants(*command_buffer, render.pipeline_layout,
-                                vk::ShaderStageFlags::VERTEX,
-                                0,
-                                push_block_bytes)
-    };
-
+  #[allow(unsafe_code)]
+  pub fn render(&self, device: &Device, render: &Render,
+                command_buffer: &vk::CommandBuffer)
+  {
     unsafe {
       device.cmd_draw_indexed(*command_buffer, self.index_count as u32,
                               1, 0, 0, 0)