Crate shdrlib

Crate shdrlib 

Source
Expand description

§shdrlib

A high-level shader compilation and rendering library for Rust, built on top of wgpu and naga.

shdrlib abstracts away the complexity of GPU programming, allowing developers to focus on shader logic rather than boilerplate setup. It provides a streamlined API for shader compilation, pipeline management, and GPU-accelerated rendering.

§Features

  • Multi-language shader support (WGSL, GLSL, SPIR-V)
  • Automatic GPU device and queue management
  • Pipeline builder pattern for render configuration
  • Asset management system for shaders and pipelines
  • Offscreen and window-based rendering support

§Quick Start

use shdrlib::{AssetManager, RuntimeManager, Language};

let shader_source = r#"
    @vertex
    fn vs_main(@builtin(vertex_index) idx: u32) -> @builtin(position) vec4<f32> {
        return vec4<f32>(0.0, 0.0, 0.0, 1.0);
    }
    @fragment
    fn fs_main() -> @location(0) vec4<f32> {
        return vec4<f32>(1.0, 0.0, 0.5, 1.0);
    }
"#;

// Initialize asset manager (handles GPU setup automatically)
let mut assets = AssetManager::new();

// Add shaders
assets.add_shader(
    "vertex",
    shader_source,
    naga::ShaderStage::Vertex,
    Language::WGSL,
).unwrap();

assets.add_shader(
    "fragment",
    shader_source,
    naga::ShaderStage::Fragment,
    Language::WGSL,
).unwrap();

// Create pipeline and render
assets.create_pipeline(
    "main_pipeline",
    "vertex",
    Some("fragment"),
    vec![],
    wgpu::TextureFormat::Rgba8UnormSrgb,
).unwrap();

Re-exports§

pub use front::compiler::compile_ir;
pub use front::compiler::compile_spirv;
pub use front::compiler::Language;
pub use front::compiler::IR;
pub use front::compiler::Metadata;
pub use front::storage::ShaderObject;
pub use back::GPUDevice;
pub use back::WGPUShader;
pub use back::RenderPipelineBuilder;
pub use managers::asset_manager::AssetManager;
pub use managers::asset_manager::Duo;
pub use managers::runtime_manager::RuntimeManager;

Modules§

back
Backend module for wgpu integration.
front
Frontend module for shader compilation.
managers
High-level management layer.