Convert mmpx_enhanced shader from GLSL to WGSL

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};
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}