From f93ea96df00f31416589e5e5a09debf10d5a4bba Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 19 Aug 2026 22:56:49 +0200 Subject: feat(engine): lossily convert color shader bindings to rgb --- engine/src/rendering/main_render_pass.rs | 14 +++++++------- engine/src/rendering/shader/cursor.rs | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 8 deletions(-) (limited to 'engine/src/rendering') diff --git a/engine/src/rendering/main_render_pass.rs b/engine/src/rendering/main_render_pass.rs index 225b89a..db1569d 100644 --- a/engine/src/rendering/main_render_pass.rs +++ b/engine/src/rendering/main_render_pass.rs @@ -501,15 +501,15 @@ fn add_set_3d_shader_bindings( } else { &env_lighting.ambient_color } - .clone()) + .to_rgb_lossy()) .into(), )?, material_shader_cursor .field("diffuse") - .binding(material.diffuse.clone().into())?, + .binding(material.diffuse.to_rgb_lossy().into())?, material_shader_cursor .field("specular") - .binding(material.specular.clone().into())?, + .binding(material.specular.to_rgb_lossy().into())?, shader_cursor .field("ambient_map") .binding(ShaderBindingValue::Texture( @@ -606,10 +606,10 @@ fn add_set_3d_shader_bindings( [ phong_shader_cursor .field("diffuse") - .binding(point_light.diffuse.clone().into())?, + .binding(point_light.diffuse.to_rgb_lossy().into())?, phong_shader_cursor .field("specular") - .binding(point_light.specular.clone().into())?, + .binding(point_light.specular.to_rgb_lossy().into())?, point_light_shader_cursor.field("position").binding( (point_light_transform.position + point_light.local_position).into(), )?, @@ -644,10 +644,10 @@ fn add_set_3d_shader_bindings( [ phong_shader_cursor .field("diffuse") - .binding(directional_light.diffuse.clone().into())?, + .binding(directional_light.diffuse.to_rgb_lossy().into())?, phong_shader_cursor .field("specular") - .binding(directional_light.specular.clone().into())?, + .binding(directional_light.specular.to_rgb_lossy().into())?, directional_light_shader_cursor .field("direction") .binding(directional_light.direction.into())?, diff --git a/engine/src/rendering/shader/cursor.rs b/engine/src/rendering/shader/cursor.rs index 82b5ec0..49f6b47 100644 --- a/engine/src/rendering/shader/cursor.rs +++ b/engine/src/rendering/shader/cursor.rs @@ -4,7 +4,7 @@ use std::hint::cold_path; use circular_buffer::FixedCircularBuffer; -use crate::color::Color; +use crate::color::{Color, Rgb, Rgba}; use crate::data_types::matrix::Matrix; use crate::data_types::vector::Vec3; use crate::rendering::object::Id as RenderingObjectId; @@ -319,6 +319,21 @@ impl From> for BindingValue BindingValue::Color(color) } } +impl From> for BindingValue +{ + fn from(color: Rgb) -> Self + { + BindingValue::Color(color.into()) + } +} + +impl From> for BindingValue +{ + fn from(color: Rgba) -> Self + { + BindingValue::Color(color.into()) + } +} impl From> for BindingValue { -- cgit v1.2.3-18-g5258