1//! Convert `mmpx_enhanced` shader from GLSL to WGSL 2 3use naga::back::wgsl; 4use naga::front::glsl; 5use naga::valid::{Capabilities, ValidationFlags, Validator}; 6use naga::{FastHashMap, ShaderStage}; 7use std::error::Error; 8use std::path::Path; 9use std::{env, fs}; 10 11const MMPX_ENHANCED_GLSL: &str = include_str!("src/glsl/mmpx_enhanced.glsl"); 12 13fn main() -> Result<(), Box<dyn Error>> { 14 let mmpx_enhanced_module = glsl::Frontend::default().parse( 15 &glsl::Options { stage: ShaderStage::Compute, defines: FastHashMap::default() }, 16 MMPX_ENHANCED_GLSL, 17 )?; 18 19 let mmpx_enhanced_module_info = Validator::new(ValidationFlags::all(), Capabilities::all()) 20 .validate(&mmpx_enhanced_module)?; 21 22 let mut mmpx_enhanced_wgsl = String::new(); 23 let mut writer = wgsl::Writer::new(&mut mmpx_enhanced_wgsl, wgsl::WriterFlags::all()); 24 25 writer.write(&mmpx_enhanced_module, &mmpx_enhanced_module_info)?; 26 27 let out_dir = env::var("OUT_DIR")?; 28 let out_path = Path::new(&out_dir).join("mmpx_enhanced.wgsl"); 29 fs::write(&out_path, &mmpx_enhanced_wgsl)?; 30 31 println!("cargo::rerun-if-changed=src/glsl/mmpx_enhanced.glsl"); 32 33 Ok(()) 34}