diff --git a/.cargo/config.toml b/.cargo/config.toml index 7d71bea..35049cb 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,2 @@ -[build] -target-dir = "target" - [alias] xtask = "run --package xtask --" diff --git a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs index 64aa839..647dbea 100644 --- a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs @@ -9,16 +9,18 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + let target = "spirv-unknown-vulkan1.3"; let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let artifact = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_SPV_PATH={}", artifact.display()); Ok(()) } diff --git a/generated/graphics/ash/spirv-builder/mygraphics/build.rs b/generated/graphics/ash/spirv-builder/mygraphics/build.rs index 6d3cb07..2297612 100644 --- a/generated/graphics/ash/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/ash/spirv-builder/mygraphics/build.rs @@ -8,13 +8,15 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let target = "spirv-unknown-vulkan1.3"; + let mut builder = SpirvBuilder::new(crate_path, target); builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let artifact = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_SPV_PATH={}", artifact.display()); Ok(()) } diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs index 64aa839..33ab5ee 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs @@ -9,16 +9,18 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + let target = "spirv-unknown-naga-wgsl"; let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let artifact = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", artifact.display()); Ok(()) } diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs index 3083ff1..685b6f3 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs b/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs index 6d3cb07..59aed5a 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs @@ -8,13 +8,15 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let target = "spirv-unknown-naga-wgsl"; + let mut builder = SpirvBuilder::new(crate_path, target); builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let artifact = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", artifact.display()); Ok(()) } diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs index 3083ff1..685b6f3 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), diff --git a/graphics/mygraphics/build.rs b/graphics/mygraphics/build.rs index 64aa839..86feef4 100644 --- a/graphics/mygraphics/build.rs +++ b/graphics/mygraphics/build.rs @@ -12,13 +12,29 @@ pub fn main() -> anyhow::Result<()> { let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(&crate_path, ""); builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; - let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + // SPIR-V + { + builder.target = Some("spirv-unknown-vulkan1.3".to_owned()); + let compile_result = builder.build()?; + println!( + "cargo::rustc-env=SHADER_SPV_PATH={}", + compile_result.module.unwrap_single().display() + ); + } + + // wgsl + { + builder.target = Some("spirv-unknown-naga-wgsl".to_owned()); + let compile_result = builder.build()?; + println!( + "cargo::rustc-env=SHADER_WGSL_PATH={}", + compile_result.module.unwrap_single().display() + ); + } Ok(()) } diff --git a/graphics/mygraphics/build.rs.liquid b/graphics/mygraphics/build.rs.liquid index 16d4181..f958f49 100644 --- a/graphics/mygraphics/build.rs.liquid +++ b/graphics/mygraphics/build.rs.liquid @@ -14,21 +14,34 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + {% if api == "ash" -%} + let target = "spirv-unknown-vulkan1.3"; + {% endif -%} + {% if api == "wgpu" -%} + let target = "spirv-unknown-naga-wgsl"; + {% endif -%} + {% if integration == "spirv-builder" -%} - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = SpirvBuilder::new(crate_path, target); {% endif -%} {% if integration == "cargo-gpu" -%} let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); {% endif -%} builder.build_script.defaults = true; builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; - let spv_path = compile_result.module.unwrap_single(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let artifact = compile_result.module.unwrap_single(); + + {% if api == "ash" -%} + println!("cargo::rustc-env=SHADER_SPV_PATH={}", artifact.display()); + {% endif -%} + {% if api == "wgpu" -%} + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", artifact.display()); + {% endif -%} Ok(()) } diff --git a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs index 3083ff1..685b6f3 100644 --- a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"),