summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-09-12 13:01:14 +0200
committerHampusM <hampus@hampusmat.com>2026-09-12 13:01:14 +0200
commitd4eb8a9af800422fec7f5d6777ce8687ca453c15 (patch)
tree51e28c9ede0a31d7c242f741a3d3509ed466b5c4
parente5b2bc8abbe041d56beb57b95cc444c20e526367 (diff)
feat(engine): add border texture property
-rw-r--r--engine/src/rendering/backend/opengl.rs11
-rw-r--r--engine/src/texture.rs11
2 files changed, 22 insertions, 0 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs
index 25583b5..9df21c4 100644
--- a/engine/src/rendering/backend/opengl.rs
+++ b/engine/src/rendering/backend/opengl.rs
@@ -142,6 +142,7 @@ use crate::rendering::{
RENDER_PHASE,
};
use crate::texture::{
+ Border as TextureBorder,
CubeMapFace as CubeMapTextureFace,
Filtering as TextureFiltering,
Properties as TextureProperties,
@@ -1771,6 +1772,16 @@ fn create_gl_texture(
texture_filtering_to_gl(texture_properties.minifying_filter),
);
+ if let Some(border) = texture_properties.border.as_ref() {
+ gl_texture.set_float_border_values(
+ curr_gl_context,
+ match border {
+ TextureBorder::RgbaF32(color) => [color.r, color.g, color.b, color.a],
+ TextureBorder::Depth(depth) => [*depth, 0.0, 0.0, 0.0],
+ },
+ );
+ }
+
Ok(gl_texture)
}
diff --git a/engine/src/texture.rs b/engine/src/texture.rs
index 0c3e884..8361f12 100644
--- a/engine/src/texture.rs
+++ b/engine/src/texture.rs
@@ -2,6 +2,7 @@ use std::path::Path;
use crate::asset::{Assets, Submitter as AssetSubmitter};
use crate::builder;
+use crate::color::Rgba;
use crate::image::{Error as ImageError, Image};
#[derive(Debug, Clone)]
@@ -46,6 +47,7 @@ pub struct Properties
pub wrap: Wrapping,
pub magnifying_filter: Filtering,
pub minifying_filter: Filtering,
+ pub border: Option<Border>,
}
}
@@ -65,6 +67,7 @@ impl Default for Properties
wrap: Wrapping::Repeat,
magnifying_filter: Filtering::Linear,
minifying_filter: Filtering::Nearest,
+ border: None,
}
}
}
@@ -96,6 +99,14 @@ pub enum Wrapping
ClampToBorder,
}
+#[derive(Debug, Clone)]
+#[non_exhaustive]
+pub enum Border
+{
+ RgbaF32(Rgba<f32>),
+ Depth(f32),
+}
+
builder! {
#[builder(name = ImportSettingsBuilder, derives=(Debug, Clone))]
#[derive(Debug, Default, Clone)]