From 9f3223129c1405d5858f3740be6e3b1ca731ec67 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 17 Apr 2026 23:51:40 -0400 Subject: Update --- crates/teleia/src/assets/shaders/uber/vert.glsl | 4 ++++ crates/teleia/src/renderer.rs | 18 +++++++++++++++++- crates/teleia/src/state.rs | 7 +++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/crates/teleia/src/assets/shaders/uber/vert.glsl b/crates/teleia/src/assets/shaders/uber/vert.glsl index b9be83b..6de3e7e 100644 --- a/crates/teleia/src/assets/shaders/uber/vert.glsl +++ b/crates/teleia/src/assets/shaders/uber/vert.glsl @@ -11,6 +11,7 @@ uniform mat4 normal_matrix; uniform mat4 lightspace_matrix; uniform vec3 camera_pos; uniform vec3 offset; +uniform float yskew; out vec2 vertex_texcoord; out vec3 vertex_normal; @@ -31,4 +32,7 @@ void main() { vertex_view_vector = camera_pos - pos; gl_Position = projection * view * vec4(pos, 1.0); gl_Position.xyz += offset; + if (flag(YSKEW)) { + gl_Position.y += yskew * pos.z; + } } diff --git a/crates/teleia/src/renderer.rs b/crates/teleia/src/renderer.rs index 8313319..94c78d8 100644 --- a/crates/teleia/src/renderer.rs +++ b/crates/teleia/src/renderer.rs @@ -13,7 +13,7 @@ bitflags! { const LIGHT_POINT = 0b000100000; const SPRITE = 0b001000000; const EFFECTS = 0b010000000; - const SCREENSPACE = 0b100000000; + const YSKEW = 0b100000000; } } impl UberFlags { @@ -250,6 +250,22 @@ impl Renderer { self.render_square(ctx, st); } + pub fn texture_screen_recolor(&mut self, + ctx: &context::Context, st: &mut state::State, + texture: A::Texture, hue: f32, + pos: glam::Vec2, + dims: glam::Vec2, + ) { + self.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::EFFECTS); + self.bind_texture(ctx, st, texture); + self.set_f32(ctx, st, "effect_huescale", 0.0); + self.set_f32(ctx, st, "effect_hueshift", hue); + self.set_position_2d(ctx, st, pos, dims); + self.render_square(ctx, st); + self.set_f32(ctx, st, "effect_huescale", 1.0); + self.set_f32(ctx, st, "effect_hueshift", 0.0); + } + /// Common case: text in the default font (units are pixels, pos is top left) pub fn text_screen(&mut self, ctx: &context::Context, st: &mut state::State, diff --git a/crates/teleia/src/state.rs b/crates/teleia/src/state.rs index 7544356..8f4462a 100644 --- a/crates/teleia/src/state.rs +++ b/crates/teleia/src/state.rs @@ -34,6 +34,7 @@ pub enum Key { Up, Down, Left, Right, A, B, X, Y, L, R, Start, Select, + Debug, } pub struct Keys { pub pressed: EnumMap, @@ -47,12 +48,14 @@ impl Keys { Key::A => false, Key::B => false, Key::X => false, Key::Y => false, Key::L => false, Key::R => false, Key::Start => false, Key::Select => false, + Key::Debug => false, }, new: enum_map! { Key::Up => false, Key::Down => false, Key::Left => false, Key::Right => false, Key::A => false, Key::B => false, Key::X => false, Key::Y => false, Key::L => false, Key::R => false, Key::Start => false, Key::Select => false, + Key::Debug => false, }, } } @@ -68,6 +71,7 @@ impl Keys { pub fn r(&self) -> bool { self.pressed[Key::R] } pub fn start(&self) -> bool { self.pressed[Key::Start] } pub fn select(&self) -> bool { self.pressed[Key::Select] } + pub fn debug(&self) -> bool { self.pressed[Key::Debug] } pub fn new_up(&mut self) -> bool { let ret = self.new[Key::Up]; self.new[Key::Up] = false; ret } pub fn new_down(&mut self) -> bool { let ret = self.new[Key::Down]; self.new[Key::Down] = false; ret } pub fn new_left(&mut self) -> bool { let ret = self.new[Key::Left]; self.new[Key::Left] = false; ret } @@ -80,6 +84,7 @@ impl Keys { pub fn new_r(&mut self) -> bool { let ret = self.new[Key::R]; self.new[Key::R] = false; ret } pub fn new_start(&mut self) -> bool { let ret = self.new[Key::Start]; self.new[Key::Start] = false; ret } pub fn new_select(&mut self) -> bool { let ret = self.new[Key::Select]; self.new[Key::Select] = false; ret } + pub fn new_debug(&mut self) -> bool { let ret = self.new[Key::Debug]; self.new[Key::Debug] = false; ret } } pub struct PointLight { @@ -209,6 +214,7 @@ pub fn default_keybindings() -> BiHashMap { (Keycode::new(winit::keyboard::KeyCode::KeyE), Key::R), (Keycode::new(winit::keyboard::KeyCode::Tab), Key::Start), (Keycode::new(winit::keyboard::KeyCode::Space), Key::Select), + (Keycode::new(winit::keyboard::KeyCode::Backquote), Key::Debug), ]) } @@ -227,6 +233,7 @@ pub fn default_keybindings() -> BiHashMap { (Keycode::new(glfw::Key::E), Key::R), (Keycode::new(glfw::Key::Tab), Key::Start), (Keycode::new(glfw::Key::Space), Key::Select), + (Keycode::new(glfw::Key::GraveAccent), Key::Debug), ]) } -- cgit v1.2.3