summaryrefslogtreecommitdiff
path: root/engine/src/rendering/backend/opengl/graphics_mesh.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-08-13 14:16:39 +0200
committerHampusM <hampus@hampusmat.com>2026-08-13 14:16:39 +0200
commitc611ee62477564fbe532f51e8526bae2e82dae93 (patch)
tree376cd420163ebb0c55a84fa4c458e6922198b620 /engine/src/rendering/backend/opengl/graphics_mesh.rs
parent47ac4d8ae714d562d969e8379e82e568a72d50fb (diff)
feat(engine): add standardized names for mesh vertex attrs & vertex shader input
Diffstat (limited to 'engine/src/rendering/backend/opengl/graphics_mesh.rs')
-rw-r--r--engine/src/rendering/backend/opengl/graphics_mesh.rs29
1 files changed, 19 insertions, 10 deletions
diff --git a/engine/src/rendering/backend/opengl/graphics_mesh.rs b/engine/src/rendering/backend/opengl/graphics_mesh.rs
index fba60c8..f6b7d56 100644
--- a/engine/src/rendering/backend/opengl/graphics_mesh.rs
+++ b/engine/src/rendering/backend/opengl/graphics_mesh.rs
@@ -12,8 +12,12 @@ use opengl_bindings::MaybeCurrentContextWithFns as GlCurrentContextWithFns;
use crate::mesh::vertex_buffer::VertexAttrProperties as MeshVertexAttrProperties;
use crate::mesh::{Mesh, VertexAttrType};
-use crate::rendering::shader::VertexDescription as ShaderVertexDescription;
+use crate::rendering::shader::{
+ VertexDescription as ShaderVertexDescription,
+ VertexInputSemName,
+};
use crate::rendering::MeshUsage;
+use crate::util::DisplaySlice;
const VERTEX_BUF_BINDING_INDEX: u32 = 0;
@@ -171,7 +175,9 @@ impl GraphicsMesh
for vertex_attr_props in &self.vertex_attr_props {
let Some(vertex_input_desc) =
shader_vertex_desc.inputs.iter().find(|vertex_input_desc| {
- *vertex_input_desc.name == vertex_attr_props.name
+ vertex_input_desc
+ .semantic_name
+ .matches_vertex_label(&vertex_attr_props.label)
})
else {
continue;
@@ -221,15 +227,15 @@ impl GraphicsMesh
.inputs
.iter()
.filter_map(|vertex_input_desc| {
- if self
- .vertex_attr_props
- .iter()
- .any(|prop| prop.name == *vertex_input_desc.name)
- {
+ if self.vertex_attr_props.iter().any(|props| {
+ vertex_input_desc
+ .semantic_name
+ .matches_vertex_label(&props.label)
+ }) {
return None;
}
- Some(vertex_input_desc.name.clone())
+ Some(vertex_input_desc.semantic_name.clone())
})
.collect(),
));
@@ -262,8 +268,11 @@ pub enum Error
#[derive(Debug, thiserror::Error)]
pub enum VertexAttrsUpdatingError
{
- #[error("Mesh is missing vertex attribute(s) required by shader: {0:?}")]
- MissingVertexAttrs(Vec<Box<str>>),
+ #[error(
+ "Mesh is missing equivalent vertex attribute(s) for shader's vertex inputs: {}",
+ DisplaySlice::new(.0)
+ )]
+ MissingVertexAttrs(Vec<VertexInputSemName>),
}
fn mesh_usage_to_gl_buffer_usage(mesh_usage: MeshUsage) -> GlBufferUsage