move shaders in examples into consts

This commit is contained in:
Carter Anderson 2020-06-05 00:13:18 -07:00
parent 5aeb3b937b
commit 5ea979dd0e
2 changed files with 58 additions and 62 deletions

View File

@ -13,20 +13,7 @@ struct MyMaterial {
pub color: Color, pub color: Color,
} }
fn setup( const VERTEX_SHADER: &str = r#"
command_buffer: &mut CommandBuffer,
mut pipelines: ResMut<Assets<PipelineDescriptor>>,
mut shaders: ResMut<Assets<Shader>>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<MyMaterial>>,
mut render_graph: ResMut<RenderGraph>,
) {
// 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,
r#"
#version 450 #version 450
layout(location = 0) in vec3 Vertex_Position; layout(location = 0) in vec3 Vertex_Position;
layout(set = 0, binding = 0) uniform Camera { layout(set = 0, binding = 0) uniform Camera {
@ -38,11 +25,9 @@ fn setup(
void main() { void main() {
gl_Position = ViewProj * Model * vec4(Vertex_Position, 1.0); gl_Position = ViewProj * Model * vec4(Vertex_Position, 1.0);
} }
"#, "#;
)),
fragment: Some(shaders.add(Shader::from_glsl( const FRAGMENT_SHADER: &str = r#"
ShaderStage::Fragment,
r#"
#version 450 #version 450
layout(location = 0) out vec4 o_Target; layout(location = 0) out vec4 o_Target;
layout(set = 1, binding = 1) uniform MyMaterial_color { layout(set = 1, binding = 1) uniform MyMaterial_color {
@ -51,8 +36,21 @@ fn setup(
void main() { void main() {
o_Target = color; o_Target = color;
} }
"#, "#;
))),
fn setup(
command_buffer: &mut CommandBuffer,
mut pipelines: ResMut<Assets<PipelineDescriptor>>,
mut shaders: ResMut<Assets<Shader>>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<MyMaterial>>,
mut render_graph: ResMut<RenderGraph>,
) {
// 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", AssetUniformNode::<MyMaterial>::new(true)); render_graph.add_system_node("my_material", AssetUniformNode::<MyMaterial>::new(true));

View File

@ -19,20 +19,7 @@ struct MyMaterial {
pub always_red: bool, pub always_red: bool,
} }
fn setup( const VERTEX_SHADER: &str = r#"
command_buffer: &mut CommandBuffer,
mut pipelines: ResMut<Assets<PipelineDescriptor>>,
mut shaders: ResMut<Assets<Shader>>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<MyMaterial>>,
mut render_graph: ResMut<RenderGraph>,
) {
// 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,
r#"
#version 450 #version 450
layout(location = 0) in vec3 Vertex_Position; layout(location = 0) in vec3 Vertex_Position;
layout(set = 0, binding = 0) uniform Camera { layout(set = 0, binding = 0) uniform Camera {
@ -44,11 +31,9 @@ fn setup(
void main() { void main() {
gl_Position = ViewProj * Model * vec4(Vertex_Position, 1.0); gl_Position = ViewProj * Model * vec4(Vertex_Position, 1.0);
} }
"#, "#;
)),
fragment: Some(shaders.add(Shader::from_glsl( const FRAGMENT_SHADER: &str = r#"
ShaderStage::Fragment,
r#"
#version 450 #version 450
layout(location = 0) out vec4 o_Target; layout(location = 0) out vec4 o_Target;
layout(set = 1, binding = 1) uniform MyMaterial_color { layout(set = 1, binding = 1) uniform MyMaterial_color {
@ -61,8 +46,21 @@ fn setup(
o_Target = vec4(0.8, 0.0, 0.0, 1.0); o_Target = vec4(0.8, 0.0, 0.0, 1.0);
# endif # endif
} }
"#, "#;
))),
fn setup(
command_buffer: &mut CommandBuffer,
mut pipelines: ResMut<Assets<PipelineDescriptor>>,
mut shaders: ResMut<Assets<Shader>>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<MyMaterial>>,
mut render_graph: ResMut<RenderGraph>,
) {
// 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", AssetUniformNode::<MyMaterial>::new(true)); render_graph.add_system_node("my_material", AssetUniformNode::<MyMaterial>::new(true));
let main_pass: &mut PassNode = render_graph.get_node_mut("main_pass").unwrap(); let main_pass: &mut PassNode = render_graph.get_node_mut("main_pass").unwrap();