diff --git a/examples/shader/shader_custom_material.rs b/examples/shader/shader_custom_material.rs index 4f75b4e0d1..82549cf1e4 100644 --- a/examples/shader/shader_custom_material.rs +++ b/examples/shader/shader_custom_material.rs @@ -1,4 +1,5 @@ use bevy::prelude::*; +use bevy_render::base_render_graph; fn main() { App::build() @@ -46,26 +47,32 @@ fn setup( mut materials: ResMut>, mut render_graph: ResMut, ) { - // create new shader pipeline and add to main pass in Render Graph - let pipeline_handle = { - let pipeline_handle = pipelines.add(PipelineDescriptor::default_config(ShaderStages { - vertex: shaders.add(Shader::from_glsl(ShaderStage::Vertex, VERTEX_SHADER)), - fragment: Some(shaders.add(Shader::from_glsl(ShaderStage::Fragment, FRAGMENT_SHADER))), - })); + // Create a new shader pipeline + let pipeline_handle = pipelines.add(PipelineDescriptor::default_config(ShaderStages { + vertex: shaders.add(Shader::from_glsl(ShaderStage::Vertex, VERTEX_SHADER)), + fragment: Some(shaders.add(Shader::from_glsl(ShaderStage::Fragment, FRAGMENT_SHADER))), + })); - render_graph.add_system_node( - "my_material", - AssetRenderResourcesNode::::new(true), - ); - pipeline_handle - }; + // Add an AssetRenderResourcesNode to our Render Graph. This will bind MyMaterial resources to our shader + render_graph.add_system_node( + "my_material", + AssetRenderResourcesNode::::new(true), + ); - // create materials + // Add a Render Graph edge connecting our new "my_material" node to the main pass node + render_graph + .add_node_edge("my_material", base_render_graph::node::MAIN_PASS) + .unwrap(); + + // Create a new material let material = materials.add(MyMaterial { color: Color::rgb(0.0, 0.8, 0.0), }); + + // Create a cube mesh which will use our material let cube_handle = meshes.add(Mesh::from(shape::Cube { size: 1.0 })); + // Setup our world command_buffer .build() // cube diff --git a/examples/shader/shader_defs.rs b/examples/shader/shader_defs.rs index 22bf95dd08..cdbb5ed014 100644 --- a/examples/shader/shader_defs.rs +++ b/examples/shader/shader_defs.rs @@ -1,4 +1,5 @@ use bevy::{prelude::*, render::shader}; +use bevy_render::base_render_graph; fn main() { App::build() @@ -57,30 +58,36 @@ fn setup( mut materials: ResMut>, mut render_graph: ResMut, ) { - // create new shader pipeline and add to main pass in Render Graph - let pipeline_handle = { - let pipeline_handle = pipelines.add(PipelineDescriptor::default_config(ShaderStages { - vertex: shaders.add(Shader::from_glsl(ShaderStage::Vertex, VERTEX_SHADER)), - fragment: Some(shaders.add(Shader::from_glsl(ShaderStage::Fragment, FRAGMENT_SHADER))), - })); - render_graph.add_system_node( - "my_material", - AssetRenderResourcesNode::::new(true), - ); - pipeline_handle - }; + // Create a new shader pipeline + let pipeline_handle = pipelines.add(PipelineDescriptor::default_config(ShaderStages { + vertex: shaders.add(Shader::from_glsl(ShaderStage::Vertex, VERTEX_SHADER)), + fragment: Some(shaders.add(Shader::from_glsl(ShaderStage::Fragment, FRAGMENT_SHADER))), + })); - // create materials + // Add an AssetRenderResourcesNode to our Render Graph. This will bind MyMaterial resources to our shader + render_graph.add_system_node( + "my_material", + AssetRenderResourcesNode::::new(true), + ); + + // Add a Render Graph edge connecting our new "my_material" node to the main pass node + render_graph + .add_node_edge("my_material", base_render_graph::node::MAIN_PASS) + .unwrap(); + + // Create a green material let green_material = materials.add(MyMaterial { color: Color::rgb(0.0, 0.8, 0.0), always_red: false, }); + // Create a red material, which uses our "always_red" shader def let red_material = materials.add(MyMaterial { color: Color::rgb(0.0, 0.0, 0.0), always_red: true, }); + // Create a cube mesh which will use our materials let cube_handle = meshes.add(Mesh::from(shape::Cube { size: 1.0 })); command_buffer