bevy_mod_billboard icon indicating copy to clipboard operation
bevy_mod_billboard copied to clipboard

Billboard text and texture support for bevy

trafficstars

bevy_mod_billboard

Billboard text and texture support for bevy

showcase

Todo

  • Add documentation
  • Follow Rust API Guidelines: https://rust-lang.github.io/api-guidelines/about.html
  • Batching

Features

  • Styled text with multiple fonts.
  • Textures.
  • Depth culling enabling/disabling (enabled by default).
  • Y-axis locking (disabled by default).
  • Full rotation lock for stuff like 3D world-space text (@robftm)
  • HDR support (@robtfm)

Bevy Compatibility

Bevy Version Crate Version
0.14 0.7.0
0.13 0.6.0
0.12 0.5.1
0.11 0.4.1
0.10 0.3.0
0.10 0.2.1
0.9 0.1.1

Example

Setup:

use bevy_mod_billboard::prelude::*;

App::new()
    .add_plugins((DefaultPlugins, BillboardPlugin));

Text:

commands.spawn(BillboardTextBundle {
    transform: Transform::from_translation(Vec3::new(0., 2., 0.))
        .with_scale(Vec3::splat(0.0085)),
    text: Text::from_sections([
        TextSection {
            value: "IMPORTANT".to_string(),
            style: TextStyle {
                font_size: 60.0,
                font: fira_sans_regular_handle.clone(),
                color: Color::ORANGE,
            }
        },
        TextSection {
            value: " text".to_string(),
            style: TextStyle {
                font_size: 60.0,
                font: fira_sans_regular_handle.clone(),
                color: Color::WHITE,
            }
        }
    ]).with_alignment(TextAlignment::CENTER),
    ..default()
});

Texture:

commands.spawn(BillboardTextureBundle {
    transform: Transform::from_translation(Vec3::new(0., 5., 0.)),
    texture: BillboardTextureHandle(handle.clone()),
    mesh: BillboardMeshHandle(meshes.add(Quad::new(Vec2::new(4.0, 4.0)).into()).into()),
    ..default()
});

Full examples at examples.

Changelog

[0.7.0] - 2024-07-11

  • Upgrade to Bevy 0.14 (@interwhy).
  • Add Billboard marker component.

[0.6.0] - 2024-06-09

  • Upgrade to Bevy 0.13 (@RobWalt).
  • Enable bevy's wayland & X11 features.

[0.5.1] - 2023-12-05

  • Fix billboard propagation not working.

[0.5.0] - 2023-12-04

  • Upgrade to Bevy 0.12 (@robftm).
  • Remove texture array implementation.
  • Use 1:N game world -> render world mapping.
  • Remove asset type BillboardTexture.
  • Add BillboardTextureHandle wrapper.
  • Reduce memory usage.
  • Increase performance for most used text case.
  • Add stress_test example (@alice-i-cecile).
  • Add rotating camera to most of the examples to showcase better.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.