add macro example to custom_shader

This commit is contained in:
Carter Anderson 2020-02-18 09:06:24 -08:00
parent e0e0e41c33
commit f820e4207c
2 changed files with 23 additions and 2 deletions

View file

@ -13,6 +13,8 @@ use bevy_derive::Uniforms;
#[derive(Uniforms, Default)]
struct MyMaterial {
pub color: Vec4,
#[uniform(ignore, shader_def)]
pub always_red: bool,
}
fn main() {
@ -57,6 +59,10 @@ fn main() {
};
void main() {
o_Target = color;
# ifdef always_red
o_Target = vec4(0.8, 0.0, 0.0, 1.0);
# endif
}
"#,
))
@ -76,6 +82,19 @@ fn setup(world: &mut World) {
world
.build()
// cube
.add_archetype(MeshMaterialEntity::<MyMaterial> {
mesh: cube_handle.clone(),
renderable: Renderable {
pipelines: vec![Handle::new(2)], // TODO: make this pipeline assignment cleaner
..Default::default()
},
material: MyMaterial {
color: Vec4::new(0.0, 0.8, 0.0, 1.0),
always_red: false,
},
..Default::default()
})
// cube
.add_archetype(MeshMaterialEntity::<MyMaterial> {
mesh: cube_handle,
renderable: Renderable {
@ -83,8 +102,10 @@ fn setup(world: &mut World) {
..Default::default()
},
material: MyMaterial {
color: Vec4::new(1.0, 0.0, 0.0, 1.0),
color: Vec4::new(0.0, 0.0, 0.0, 1.0),
always_red: true,
},
translation: Translation::new(3.0, 0.0, 0.0),
..Default::default()
})
// camera

View file

@ -6,7 +6,7 @@ pub use crate::{
ecs::{default_archetypes::*, EntityArchetype, WorldBuilder, WorldBuilderSource},
render::{
ActiveCamera, ActiveCamera2d, Camera, CameraType, Instanced, Light,
render_graph::{StandardMaterial, Renderable},
render_graph::{StandardMaterial, Renderable, ShaderDefSuffixProvider},
},
ui::{Anchors, Margins, Node},
};