#2d-3d #bevy #graphics #shader #game-engine #gamedev

bevy_terminal_shader

An old school terminal shader for the bevy game engine

2 unstable releases

0.2.0 Jul 23, 2024
0.1.0 Jan 9, 2024

#1629 in Game dev

MIT OR Apache-2.0 OR CC0-1.0

1.5MB
99 lines

bevy_terminal_shader

Maintenance CI crates-io api-docs

This crate provides an old school terminal-like, or oscilloscope, effect that can be applied to 2D and 3D objects on the bevy game engine.

Terminal shader example

Install

cargo add bevy_terminal_shader

Usage

Add plugin to app

use bevy::prelude::*;
fn main() {
    App::new()
        .add_plugins(bevy_terminal_shader::TerminalShaderPlugin)
        .run()
}

Add settings to camera

use bevy::prelude::*;

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<TerminalMaterial>>) {
    commands.spawn(Camera2dBundle::default());
    
    commands.spawn(MaterialMesh2dBundle {
        mesh: meshes
            .add(shape::Quad::new(Vec2::new(1300., 800.)).into())
            .into(),
        material: materials.add(TerminalMaterial::green()),
        ..default()
    });

Example

Run the "quad" example like so:

cargo run --example quad

This will show a large quad like the one shown at the beginning of this README.

cargo run --example cube

This will show a rotating cube with the shader as its surfaces.

TODO

  • Consider renaming crate to bevy_oscilloscope_shader.

Compatibility

bevy_terminal_shader bevy
0.2 0.14
0.1 0.12.1

License

This crate is licensed under the MIT License or the Apache License 2.0 or CC0 License.

Acknowlegments

Dependencies

~41–81MB
~1.5M SLoC