Skip to content

Conversation

@vmarcella
Copy link
Member

Summary

Migrate rendering, audio, and minimal examples from crates/lambda-rs/examples/ to dedicated demo crates under demos/. This reorganization improves build times by excluding demo crates from default-members while keeping them accessible via explicit package selection.

The migration consolidates all runnable demos into a consistent structure (demos/audio/, demos/minimal/, demos/render/) with feature passthrough for validation flags, making it easier to test and develop against the engine.

Related Issues

Changes

  • Add demos/ directory structure with three crates:
    • lambda-demos-minimal - Minimal window + render context demo
    • lambda-demos-audio - Audio demos (sine wave, sound buffer, play sound)
    • lambda-demos-render - All rendering demos (triangle, textures, instancing, offscreen, etc.)
  • Migrate examples from crates/lambda-rs/examples/ to demo crates as binary targets
  • Update workspace Cargo.toml to include demo crates in members but exclude from default-members
  • Update CI workflows to account for new demo structure
  • Update all documentation (specs, tutorials) to reference new demo locations
  • Remove old examples from crates/lambda-rs/examples/ (keeping minimal reference examples)
  • Add demos/README.md with usage instructions and workspace behavior documentation
  • Add validation feature passthrough in render demo crate

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • Feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation (updates to docs, specs, tutorials, or comments)
  • Refactor (code change that neither fixes a bug nor adds a feature)
  • Performance (change that improves performance)
  • Test (adding or updating tests)
  • Build/CI (changes to build process or CI configuration)

Affected Crates

  • lambda-rs
  • lambda-rs-platform
  • lambda-rs-args
  • lambda-rs-logging
  • Other: lambda-demos-minimal, lambda-demos-audio, lambda-demos-render

Checklist

  • Code follows the repository style guidelines (cargo +nightly fmt --all)
  • Code passes clippy (cargo clippy --workspace --all-targets -- -D warnings)
  • Tests pass (cargo test --workspace)
  • New code includes appropriate documentation
  • Public API changes are documented
  • Breaking changes are noted in this PR description

Testing

Commands run:

cargo build --workspace
cargo test --workspace

# Verify default build excludes demos
cargo build

# Verify demo crates build correctly
cargo build -p lambda-demos-minimal
cargo build -p lambda-demos-audio
cargo build -p lambda-demos-render

# Run demos to verify functionality
cargo run -p lambda-demos-minimal --bin minimal
cargo run -p lambda-demos-audio --bin sine_wave
cargo run -p lambda-demos-audio --bin sound_buffer
cargo run -p lambda-demos-audio --bin play_sound
cargo run -p lambda-demos-render --bin triangle
cargo run -p lambda-demos-render --bin triangles
cargo run -p lambda-demos-render --bin immediates
cargo run -p lambda-demos-render --bin indexed_multi_vertex_buffers
cargo run -p lambda-demos-render --bin instanced_quads
cargo run -p lambda-demos-render --bin textured_quad
cargo run -p lambda-demos-render --bin textured_cube
cargo run -p lambda-demos-render --bin uniform_buffer_triangle
cargo run -p lambda-demos-render --bin offscreen_post
cargo run -p lambda-demos-render --bin reflective_room

# Verify validation feature passthrough
cargo run -p lambda-demos-render --bin triangle --features validation

Manual verification steps (if applicable):

  1. Verified all rendering demos display correctly (triangle, textures, instancing, offscreen effects)
  2. Verified audio demos produce expected output (sine wave, sound playback)
  3. Verified cargo build at repo root does not build demo crates
  4. Verified validation feature flags propagate correctly to lambda-rs

Screenshots/Recordings

Platform Testing

  • macOS
  • Windows
  • Linux

Additional Notes

@vmarcella vmarcella changed the title Vmarcella/add demo crates chore(lambda-rs): create dedicated crates for demos Feb 6, 2026
@github-actions
Copy link

github-actions bot commented Feb 6, 2026

✅ Coverage Report

📊 View Full HTML Report (download artifact)

Overall Coverage

Metric Value
Total Line Coverage 45.12%
Lines Covered 5012 / 11107

Changed Files in This PR

File Coverage Lines
crates/lambda-rs/examples/audio_sine_wave.rs N/A (no coverage data)
crates/lambda-rs/examples/immediates.rs N/A (no coverage data)
crates/lambda-rs/examples/indexed_multi_vertex_buffers.rs N/A (no coverage data)
crates/lambda-rs/examples/instanced_quads.rs N/A (no coverage data)
crates/lambda-rs/examples/offscreen_post.rs N/A (no coverage data)
crates/lambda-rs/examples/play_slash_sound.rs N/A (no coverage data)
crates/lambda-rs/examples/reflective_room.rs N/A (no coverage data)
crates/lambda-rs/examples/sound_buffer_load.rs N/A (no coverage data)
crates/lambda-rs/examples/textured_cube.rs N/A (no coverage data)
crates/lambda-rs/examples/textured_quad.rs N/A (no coverage data)
crates/lambda-rs/examples/triangle.rs N/A (no coverage data)
crates/lambda-rs/examples/triangles.rs N/A (no coverage data)
crates/lambda-rs/examples/uniform_buffer_triangle.rs N/A (no coverage data)
crates/lambda-rs/src/lib.rs N/A (no coverage data)
crates/lambda-rs/src/render/bind.rs 0.00% 0/193
crates/lambda-rs/src/render/buffer.rs 39.22% 80/204
crates/lambda-rs/src/render/mod.rs 5.19% 35/674

PR Files Coverage: 10.73% (115/1071 lines)


Generated by cargo-llvm-cov · Latest main coverage

Last updated: 2026-02-06 22:46:26 UTC · Commit: d248e50

@vmarcella vmarcella merged commit d9ae523 into main Feb 6, 2026
10 checks passed
@vmarcella vmarcella deleted the vmarcella/add-demo-crates branch February 6, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Organize demos into dedicated crates

1 participant