summaryrefslogtreecommitdiff
path: root/engine/src/rendering/backend
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-07-17 03:06:04 +0200
committerHampusM <hampus@hampusmat.com>2026-07-17 03:06:04 +0200
commit65e24308babb2ed4f33fb6f1d7b531df676bd70d (patch)
treedf9477d4b805cc6866a086833d6118505804dd3a /engine/src/rendering/backend
parent649d4d4ab2f54ca12f75d2cba50e1adef2350dbe (diff)
refactor(engine): change Color struct into a enum
Diffstat (limited to 'engine/src/rendering/backend')
-rw-r--r--engine/src/rendering/backend/opengl.rs49
1 files changed, 29 insertions, 20 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs
index 95aef27..bab916a 100644
--- a/engine/src/rendering/backend/opengl.rs
+++ b/engine/src/rendering/backend/opengl.rs
@@ -66,9 +66,10 @@ use opengl_bindings::{
};
use raw_window_handle::WindowHandle;
use safer_ffi::layout::ReprC;
-use zerocopy::{Immutable, IntoBytes};
+use zerocopy::IntoBytes;
use crate::asset::Assets;
+use crate::data_types::color::Color;
use crate::data_types::dimens::Dimens;
use crate::ecs::actions::Actions;
use crate::ecs::query::term::Without;
@@ -676,6 +677,7 @@ fn handle_commands(
);
let fvec3_value;
+ let mut color_value = [0.0; 4];
uniform_buffer
.store_at_byte_offset(
@@ -686,10 +688,34 @@ fn handle_commands(
ShaderBindingValue::Int(ref value) => value.as_bytes(),
ShaderBindingValue::Float(ref value) => value.as_bytes(),
ShaderBindingValue::FVec3(value) => {
- fvec3_value = CF32Vec3::from(value);
-
+ fvec3_value = [value.x, value.y, value.z];
fvec3_value.as_bytes()
}
+ ShaderBindingValue::Color(value) => match value {
+ Color::Rgb(value) => {
+ color_value[..3]
+ .copy_from_slice(&[value.r, value.g, value.b]);
+
+ color_value[..3].as_bytes()
+ }
+ Color::Rgba(value) => {
+ color_value[..4].copy_from_slice(&[
+ value.r, value.g, value.b, value.a,
+ ]);
+
+ color_value[..4].as_bytes()
+ }
+ Color::Luma(ref value) => {
+ color_value[0] = value.l;
+
+ color_value[0].as_bytes()
+ }
+ Color::LumaA(value) => {
+ color_value[..2].copy_from_slice(&[value.l, value.a]);
+
+ color_value[..2].as_bytes()
+ }
+ },
ShaderBindingValue::FMat4x4(ref value) => {
value.items().as_bytes()
}
@@ -1503,23 +1529,6 @@ impl From<crate::draw_flags::PolygonModeFace> for opengl_bindings::misc::Polygon
}
}
-#[derive(Debug, IntoBytes, Immutable)]
-#[repr(C)]
-pub struct CF32Vec3
-{
- x: f32,
- y: f32,
- z: f32,
-}
-
-impl From<Vec3<f32>> for CF32Vec3
-{
- fn from(src: Vec3<f32>) -> Self
- {
- Self { x: src.x, y: src.y, z: src.z }
- }
-}
-
fn blending_factor_to_gl(blending_factor: BlendingFactor) -> GlBlendingFactor
{
match blending_factor {