summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-08-19 22:56:49 +0200
committerHampusM <hampus@hampusmat.com>2026-08-19 22:56:49 +0200
commitf93ea96df00f31416589e5e5a09debf10d5a4bba (patch)
tree98cc47a2a5fafba33cce02271bdec3bb0aa9608f /engine
parente7f503a1e545aa83535e67eceafb0462780bfc2d (diff)
feat(engine): lossily convert color shader bindings to rgb
Diffstat (limited to 'engine')
-rw-r--r--engine/src/data_types/color.rs16
-rw-r--r--engine/src/rendering/main_render_pass.rs14
-rw-r--r--engine/src/rendering/shader/cursor.rs17
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
{