From f3e8e5b379114bff3efdd4a387276231e6d1c56f Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Wed, 21 Aug 2024 15:38:02 -0400 Subject: headless render + terminal display pages --- content/projects/bevy_headless_render/index.md | 13 ++++++++++ content/projects/bevy_terminal_display/dialog.png | Bin 0 -> 38779 bytes content/projects/bevy_terminal_display/index.md | 28 ++++++++++++++++++++++ content/projects/bevy_terminal_display/sponza.png | Bin 0 -> 40621 bytes sass/style.scss | 23 ++++++++++++++++++ templates/projects.html | 12 +++++++++- 6 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 content/projects/bevy_headless_render/index.md create mode 100644 content/projects/bevy_terminal_display/dialog.png create mode 100644 content/projects/bevy_terminal_display/index.md create mode 100644 content/projects/bevy_terminal_display/sponza.png diff --git a/content/projects/bevy_headless_render/index.md b/content/projects/bevy_headless_render/index.md new file mode 100644 index 0000000..92dc46a --- /dev/null +++ b/content/projects/bevy_headless_render/index.md @@ -0,0 +1,13 @@ ++++ +title = "bevy_headless_render" +[taxonomies] +categories = ["bevy plugin"] +languages = ["rust"] +[extra] +github = ["exvacuum/bevy_headless_render"] +crates = ["bevy_headless_render"] ++++ + +this plugin is pretty simple, it just allows you to set up a render texture to be extracted for use on the CPU every frame + +i made this plugin as part of the [white (I)](@/projects/white_I/index.md) project super early on when i needed a copy of the rendered frame in the main world to be rendered as braille to the screen diff --git a/content/projects/bevy_terminal_display/dialog.png b/content/projects/bevy_terminal_display/dialog.png new file mode 100644 index 0000000..d9281f2 Binary files /dev/null and b/content/projects/bevy_terminal_display/dialog.png differ diff --git a/content/projects/bevy_terminal_display/index.md b/content/projects/bevy_terminal_display/index.md new file mode 100644 index 0000000..d47c28b --- /dev/null +++ b/content/projects/bevy_terminal_display/index.md @@ -0,0 +1,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 diff --git a/content/projects/bevy_terminal_display/sponza.png b/content/projects/bevy_terminal_display/sponza.png new file mode 100644 index 0000000..6568cf3 Binary files /dev/null and b/content/projects/bevy_terminal_display/sponza.png differ diff --git a/sass/style.scss b/sass/style.scss index bab3a7b..0a6684a 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -1,5 +1,28 @@ @use "everforest"; +/// Stole this from Stack Overflow (https://stackoverflow.com/a/54702294) {{{ + +.rainbow_text_animated { + background: linear-gradient(to right, everforest.$red, everforest.$orange, everforest.$yellow, everforest.$green, everforest.$blue, everforest.$purple); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + animation: rainbow_animation 1s ease-in-out infinite; + background-size: 400% 100%; +} + +@keyframes rainbow_animation { + 0%,100% { + background-position: 0 0; + } + + 50% { + background-position: 100% 0; + } +} + +/// }}} + body { color: everforest.$fg; background-color: everforest.$bg0; diff --git a/templates/projects.html b/templates/projects.html index 4b042a4..7b2df74 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -11,7 +11,17 @@ {{category.name}} {% endfor %} -- cgit v1.2.3