How snowdeenn/learn_wgpu works
Velum is a Rust 2D rendering and scene library for applications. An application builds a scene with typed render data and ordered render passes; the renderer executes those passes against backend resources and targets. The repository also provides particle effects, post-processing, camera/input, text and debug tooling. Relationships among unsampled modules are limited to dependencies named in the source index; the README is empty, so broader capability descriptions are based on the source tree and sampled code.
Main entry points: setup.rs Scene setup · mod.rs Windowed app · render.rs Scene rendering · resources.rs Scene resources
Components 30
Scene API
- Scene API and data
src/api/scene.rs - Scene manager
src/api/velum.rs - Scene setup
src/scene/setup.rs - Scene rendering
src/scene/render.rs - Scene resources
src/scene/resources.rs - Scene instances
src/scene/instance.rs
Application Runtime
- Windowed app
src/app/mod.rs - Input events
src/app/events.rs - Frame update
src/app/update.rs - 2D camera
src/camera/d2.rs - Debug tools
src/debug/manager.rs
Rendering Backend
- Frame renderer
src/backend/renderer.rs - GPU context
src/backend/context.rs - Render passes
src/backend/pass - Pipelines
src/backend/pipeline - GPU resources
src/backend/buffer.rs - Draw phases
src/backend/phase.rs - Render metrics
src/backend/metrics.rs - Texture loading
src/backend/texture/loading.rs - Text rendering
src/backend/text/draw.rs
Effects and Geometry
- Meshes and primitives
src/geometry/mesh.rs - Post-processing
src/effects/blur.rs - Composition
src/effects/composite.rs - Frame presentation
src/effects/present.rs
Particle System
- Particle data
src/particle/data.rs - Effect simulation
src/particle/effect.rs - Effect emitters
src/particle/emitter.rs - Particle modules
src/particle/modules - Effect registry
src/particle/storage.rs
Other components
- Embedding application
Connections 30
- Embedding application → Scene manager: builds scenes
- Scene manager → Scene API and data: manages scenes
src/api/velum.rs - Scene API and data → Render passes: executes passes
src/api/scene.rs - Windowed app → Frame renderer: uses renderer
src/app/mod.rs - Windowed app → 2D camera: uses controller
src/app/mod.rs - Windowed app → Debug tools: uses manager
src/app/mod.rs - Windowed app → Input events: declares events
src/app/mod.rs - Windowed app → Frame update: declares update
src/app/mod.rs - Input events → Render metrics: uses metrics
src/app/events.rs - Scene setup → Scene rendering: builds renderer
src/scene/setup.rs - Scene setup → Scene resources: registers resources
src/scene/setup.rs - Scene setup → Post-processing: creates blur
src/scene/setup.rs - Scene setup → Composition: creates composition
src/scene/setup.rs - Scene setup → Frame presentation: creates presenter
src/scene/setup.rs - Scene setup → Meshes and primitives: creates meshes
src/scene/setup.rs - Scene rendering → Scene resources: reads resources
src/scene/render.rs - Scene rendering → Scene API and data: uses scene API
src/scene/render.rs - Scene rendering → Frame renderer: uses renderer
src/scene/render.rs - Scene resources → Scene instances: stores instances
src/scene/resources.rs - Scene resources → Meshes and primitives: references meshes
src/scene/resources.rs - GPU context → GPU resources: owns buffers
src/backend/context.rs - GPU context → Texture loading: owns texture storage
src/backend/context.rs - Render passes → Pipelines: dispatches operations
- Frame renderer → Render passes: executes passes
- Draw phases → Render metrics: records draws
- Effect registry → Effect simulation: updates effects
src/particle/storage.rs - Effect simulation → Particle data: uses particle data
- Effect simulation → Particle modules: runs modules
- Effect registry → Particle modules: visits render output
src/particle/storage.rs - Effect emitters → Effect registry: spawns effects