Skip to main content

Crate lunar_render

Crate lunar_render 

Source
Expand description

rendering subsystem via wgpu

decoupled from game logic. handles 2D sprite and text rendering.

§rendering model

game code does not touch the GPU directly. two paths feed the renderer:

  1. components (preferred) — spawn entities with Sprite or Text alongside a Transform. built-in systems enqueue them automatically every frame.
  2. immediate mode (HUD / debug / one-shots) — call draw_sprite, draw_rect, draw_line, draw_text on RenderQueue from inside a system. useful when the thing you’re drawing isn’t a persistent entity.

[DrawCommand] / [DrawKind] / RenderQueue::push are internal plumbing and not part of the public contract — they’re hidden from rustdoc.

§example: component-driven

use lunar::prelude::*;

fn spawn_player(mut commands: Commands, mut assets: ResMut<AssetServer>) {
    commands.spawn((
        Transform::from_xy(100.0, 100.0),
        Sprite::new(assets.load_texture("player.png")),
    ));
}

§example: immediate mode

fn draw_hud(mut queue: ResMut<RenderQueue>) {
    queue.draw_rect(Vec2::ZERO, Vec2::new(200.0, 40.0), Color::rgba(0.0, 0.0, 0.0, 0.6));
}

Modules§

atlas
texture atlas integration for the render system.
layers
built-in layer constants for common rendering needs. lower values are drawn first (behind), higher values are drawn last (in front).
textbox
textbox component for rendering text with typewriter animation

Structs§

Camera
camera resource, affects how the render queue is projected.
CameraFollow2d
drives the camera to track a target entity each frame.
ColorTint
draws a semi-transparent colored overlay each frame.
DebugOverlay
debug overlay for displaying runtime stats.
DrawContext
drawing context for immediate mode rendering.
PostProcessStack
ordered stack of post-processing effects applied each frame after the main render.
RenderConfig
rendering configuration.
RenderEngine
render engine resource, owns all GPU rendering state.
RenderInfo
render info resource, tracks rendering statistics.
RenderPlugin
render plugin, registers render systems and resources.
RenderQueue
render queue resource, collects draw commands each frame.
RenderTargetId
opaque identifier for an offscreen render target created by RenderEngine::create_render_target.
RenderTargetStore
maps RenderTargetIdHandle<Texture> so game code can retrieve the drawable texture handle for a render target without keeping it separately.
ScreenFlash
draws a fullscreen colored overlay each frame.
ScreenShake
camera shake state. insert as a resource to enable shaking.
Sprite
renderable 2D sprite component.
SpriteParams
parameters for drawing a transformed sprite. used with RenderQueue::draw_sprite_transformed_on_layer to avoid too many function arguments.
Text
renderable text component.
YSort
marker component that opts a sprite into y-sort ordering.

Traits§

PostEffect
trait for a custom post-processing effect applied each frame after the main render.
RenderPass
trait for custom render passes that can be executed by the render engine.