diff options
| author | HampusM <hampus@hampusmat.com> | 2026-08-19 22:56:49 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-08-19 22:56:49 +0200 |
| commit | f93ea96df00f31416589e5e5a09debf10d5a4bba (patch) | |
| tree | 98cc47a2a5fafba33cce02271bdec3bb0aa9608f /engine/src | |
| parent | e7f503a1e545aa83535e67eceafb0462780bfc2d (diff) | |
feat(engine): lossily convert color shader bindings to rgb
Diffstat (limited to 'engine/src')
| -rw-r--r-- | engine/src/data_types/color.rs | 16 | ||||
| -rw-r--r-- | engine/src/rendering/main_render_pass.rs | 14 | ||||
| -rw-r--r-- | engine/src/rendering/shader/cursor.rs | 17 |
3 files changed, 39 insertions, 8 deletions
diff --git a/engine/src/data_types/color.rs b/engine/src/data_types/color.rs index 9803088..9664507 100644 --- a/engine/src/data_types/color.rs +++ b/engine/src/data_types/color.rs @@ -71,6 +71,22 @@ impl<Component: PixelComponent> Color<Component> } } +impl<Component> From<Rgb<Component>> for Color<Component> +{ + fn from(rgb: Rgb<Component>) -> Self + { + Self::Rgb(rgb) + } +} + +impl<Component> From<Rgba<Component>> for Color<Component> +{ + fn from(rgba: Rgba<Component>) -> Self + { + Self::Rgba(rgba) + } +} + impl<Component: Default> Default for Color<Component> { fn default() -> Self 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<Color<f32>> for BindingValue BindingValue::Color(color) } } +impl From<Rgb<f32>> for BindingValue +{ + fn from(color: Rgb<f32>) -> Self + { + BindingValue::Color(color.into()) + } +} + +impl From<Rgba<f32>> for BindingValue +{ + fn from(color: Rgba<f32>) -> Self + { + BindingValue::Color(color.into()) + } +} impl From<Matrix<f32, 4, 4>> for BindingValue { |
