summaryrefslogtreecommitdiff
path: root/engine/src/renderer.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-18 21:23:15 +0200
committerHampusM <hampus@hampusmat.com>2026-04-18 21:24:45 +0200
commit6171fb6c9157593906bbc0fe5145405f10131123 (patch)
tree5d0b13c9ec6d1f5f0a110794a30d855c9508b33f /engine/src/renderer.rs
parent450670dbfb153f00adf431ad77379042a9114ab0 (diff)
feat(engine): add offset options to renderer::Command::DrawMesh
Diffstat (limited to 'engine/src/renderer.rs')
-rw-r--r--engine/src/renderer.rs39
1 files changed, 35 insertions, 4 deletions
diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs
index 52764db..b52e6b9 100644
--- a/engine/src/renderer.rs
+++ b/engine/src/renderer.rs
@@ -191,10 +191,40 @@ pub enum Command
mesh: Mesh,
usage: MeshUsage,
},
- DrawMesh(ObjectId),
+ DrawMesh(ObjectId, DrawMeshOptions),
UpdateDrawProperties(DrawProperties, DrawPropertiesUpdateFlags),
}
+builder! {
+ #[builder(name = DrawMeshOptionsBuilder, derives = (Debug, Default, Clone))]
+ #[derive(Debug, Default, Clone)]
+ #[non_exhaustive]
+ pub struct DrawMeshOptions {
+ pub element_offset: u32,
+ pub vertex_offset: u32,
+
+ #[builder(skip_generate_fn)]
+ pub element_cnt: Option<u32>,
+ }
+}
+
+impl DrawMeshOptions
+{
+ pub fn builder() -> DrawMeshOptionsBuilder
+ {
+ DrawMeshOptionsBuilder::default()
+ }
+}
+
+impl DrawMeshOptionsBuilder
+{
+ pub fn element_cnt(mut self, element_cnt: u32) -> Self
+ {
+ self.element_cnt = Some(element_cnt);
+ self
+ }
+}
+
bitflags! {
#[derive(Debug)]
pub struct BufferClearMask: u8 {
@@ -531,9 +561,10 @@ pub fn add_main_render_passes(
});
}
- render_pass
- .commands
- .push(Command::DrawMesh(ObjectId::Asset(mesh_asset.id())));
+ render_pass.commands.push(Command::DrawMesh(
+ ObjectId::Asset(mesh_asset.id()),
+ DrawMeshOptions::default(),
+ ));
if let Some(draw_flags) = draw_flags.as_deref()
&& draw_flags.polygon_mode_config != PolygonModeConfig::default()