use shdrlib::{AssetManager, RuntimeManager, Language};
fn main() {
let my_shader = r#"
@vertex
fn vs_main(@builtin(vertex_index) idx: u32) -> @builtin(position) vec4<f32> {
var pos = array<vec2<f32>, 3>(
vec2(0.0, 0.5), vec2(-0.5, -0.5), vec2(0.5, -0.5)
);
return vec4<f32>(pos[idx], 0.0, 1.0);
}
@fragment
fn fs_main() -> @location(0) vec4<f32> {
return vec4<f32>(1.0, 0.0, 0.5, 1.0);
}
"#;
let mut assets = AssetManager::new();
assets.add_shader("vert", my_shader, naga::ShaderStage::Vertex, Language::WGSL).unwrap();
assets.add_shader("frag", my_shader, naga::ShaderStage::Fragment, Language::WGSL).unwrap();
assets.create_pipeline(
"my_pipeline",
"vert",
Some("frag"),
vec![],
wgpu::TextureFormat::Rgba8UnormSrgb,
).unwrap();
let runtime = RuntimeManager::new(&assets);
let texture = runtime.render_to_texture(
"my_pipeline",
800, 600,
wgpu::TextureFormat::Rgba8UnormSrgb,
wgpu::Color::BLACK,
3, ).unwrap();
println!("✅ Rendered! Texture: {}x{}", texture.width(), texture.height());
}