summaryrefslogtreecommitdiff
path: root/content/projects/bevy_terminal_display/index.md
blob: d47c28b406710a0f9e044c7f2616c9d2062f6902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
+++
title = "bevy_terminal_display"
[taxonomies]
categories = ["bevy plugin"]
languages = ["rust"]
[extra]
very_cool = true
github = ["exvacuum/bevy_terminal_display"]
crates = ["bevy_terminal_display"]
+++

this plugin allows you to render from a camera to the terminal using [unicode braille characters](https://en.wikipedia.org/wiki/Braille_Patterns)

![sponza](sponza.png)

it makes use of the [bevy_headless_render](@/projects/bevy_headless_render/index.md) plugin for headless rendering, and then uses the [bevy_dither_post_process](@/projects/bevy_dither_post_process/index.md) plugin to dither the captured frame before converting the black and white pixels into the appropriate characters and printing them to the terminal

this plugin uses the [ratatui](https://crates.io/crates/ratatui) and [crossterm](https://crates.io/crates/crossterm) for rendering to the terminal

this plugin manages a `TerminalInput` resource which keeps track of pressed keys

this plugin also has facilities for creating and rendering ratatui widgets

here's an example of a dialog box and option selection widget i've implemented in my [white (I)](@/projects/white_I/index.md) project

![dialog widget](dialog.png)

in that project, i also make use of the [bevy_outline_post_process](@/projects/bevy_outline_post_process/index.md) for additional visual contrast