mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 14:40:19 +00:00
Use BindingShaderStage to pass which program the binding is attached to.
This commit is contained in:
parent
a7f1889a35
commit
02b1907738
4 changed files with 20 additions and 3 deletions
|
@ -1,12 +1,21 @@
|
|||
use super::UniformProperty;
|
||||
use crate::texture::{TextureComponentType, TextureFormat, TextureViewDimension};
|
||||
|
||||
bitflags::bitflags! {
|
||||
pub struct BindingShaderStage: u32 {
|
||||
const VERTEX = 1;
|
||||
const FRAGMENT = 2;
|
||||
const COMPUTE = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Hash, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
|
||||
pub struct BindingDescriptor {
|
||||
pub name: String,
|
||||
pub index: u32,
|
||||
pub bind_type: BindType,
|
||||
// TODO: ADD SHADER STAGE VISIBILITY
|
||||
pub shader_stage: BindingShaderStage,
|
||||
}
|
||||
|
||||
#[derive(Hash, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
|
||||
|
|
|
@ -4,6 +4,7 @@ use crate::{
|
|||
pass::{ClearColor, LoadOp, PassDescriptor, TextureAttachment},
|
||||
pipeline::{
|
||||
BindGroupDescriptor, BindType, BindingDescriptor, PipelineDescriptor, UniformProperty,
|
||||
BindingShaderStage,
|
||||
},
|
||||
render_graph::{Node, ResourceSlotInfo, ResourceSlots},
|
||||
renderer::{
|
||||
|
@ -78,6 +79,7 @@ impl<Q: HecsQuery> PassNode<Q> {
|
|||
dynamic: false,
|
||||
properties: vec![UniformProperty::Struct(vec![UniformProperty::Mat4])],
|
||||
},
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
}],
|
||||
);
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ impl Default for RenderResourceBindingsId {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::pipeline::{BindType, BindingDescriptor, UniformProperty};
|
||||
use crate::pipeline::{BindType, BindingDescriptor, UniformProperty, BindingShaderStage};
|
||||
|
||||
#[test]
|
||||
fn test_bind_groups() {
|
||||
|
@ -275,6 +275,7 @@ mod tests {
|
|||
dynamic: false,
|
||||
properties: vec![UniformProperty::Struct(vec![UniformProperty::Mat4])],
|
||||
},
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
},
|
||||
BindingDescriptor {
|
||||
index: 1,
|
||||
|
@ -283,6 +284,7 @@ mod tests {
|
|||
dynamic: false,
|
||||
properties: vec![UniformProperty::Float],
|
||||
},
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
},
|
||||
],
|
||||
);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{
|
||||
pipeline::{
|
||||
BindGroupDescriptor, BindType, BindingDescriptor, InputStepMode, UniformProperty,
|
||||
VertexAttributeDescriptor, VertexBufferDescriptor, VertexFormat,
|
||||
VertexAttributeDescriptor, VertexBufferDescriptor, VertexFormat, BindingShaderStage,
|
||||
},
|
||||
texture::{TextureComponentType, TextureViewDimension},
|
||||
};
|
||||
|
@ -204,6 +204,8 @@ fn reflect_binding(binding: &ReflectDescriptorBinding) -> BindingDescriptor {
|
|||
index: binding.binding,
|
||||
bind_type,
|
||||
name: name.to_string(),
|
||||
// TODO: We should be able to detect which shader program the binding is being used in..
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,6 +416,7 @@ mod tests {
|
|||
UniformProperty::Mat4
|
||||
])],
|
||||
},
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
}]
|
||||
),
|
||||
BindGroupDescriptor::new(
|
||||
|
@ -426,6 +429,7 @@ mod tests {
|
|||
dimension: TextureViewDimension::D2,
|
||||
component_type: TextureComponentType::Float,
|
||||
},
|
||||
shader_stage: BindingShaderStage::VERTEX | BindingShaderStage::FRAGMENT,
|
||||
}]
|
||||
),
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue