summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Silas Bartha <[email protected]>2024-08-21 15:38:02 -0400
committerLibravatar Silas Bartha <[email protected]>2024-08-21 15:38:02 -0400
commitf3e8e5b379114bff3efdd4a387276231e6d1c56f (patch)
tree3f865f11e589577b743e6152e9e41d5c748b7cba
parent2e5297636edf320c78e2dc295425b2a70766c2fe (diff)
headless render + terminal display pages
-rw-r--r--content/projects/bevy_headless_render/index.md13
-rw-r--r--content/projects/bevy_terminal_display/dialog.pngbin0 -> 38779 bytes
-rw-r--r--content/projects/bevy_terminal_display/index.md28
-rw-r--r--content/projects/bevy_terminal_display/sponza.pngbin0 -> 40621 bytes
-rw-r--r--sass/style.scss23
-rw-r--r--templates/projects.html12
6 files changed, 75 insertions, 1 deletions
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
--- /dev/null
+++ b/content/projects/bevy_terminal_display/dialog.png
Binary files 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
--- /dev/null
+++ b/content/projects/bevy_terminal_display/sponza.png
Binary files 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 @@
<b>{{category.name}}</b>
<ul>
{% for page in category.pages %}
- <li><a href="{{ page.permalink | safe }}">{{ page.title }}{% if page.description %}: {{ page.description }}{% endif %}</a>{% if page.extra.wip %} (<span class="wip-indicator">wip</span>){% endif %}</li>
+ <li>
+ <a href="{{ page.permalink | safe }}">
+ {{ page.title }}{% if page.description %}: {{ page.description }}{% endif %}
+ </a>
+ {% if page.extra.wip %}
+ (<span class="wip-indicator">wip</span>)
+ {% endif %}
+ {% if page.extra.very_cool %}
+ (<span class="rainbow_text_animated">VERY COOL</span>)
+ {% endif %}
+ </li>
{% endfor %}
</ul>
{% endfor %}