summaryrefslogtreecommitdiff
path: root/assets/final/shaders/ray_box.wgsl
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-03 08:18:13 +0100
committerskal <pascal.massimino@gmail.com>2026-02-03 08:18:13 +0100
commitf32afcbeffa0e8b947457c67c73566da4ebf33cc (patch)
tree8860e7c319b687871e6b9692dc0053eb4b1d583d /assets/final/shaders/ray_box.wgsl
parent7cbebea3a0cce82f3a756c26ab0e1323bbf1d169 (diff)
refactor: Shader Asset Integration (Task #24)
Extracted all hardcoded WGSL shaders into external assets. Updated AssetManager to handle shader snippets. Refactored Renderer3D, VisualDebug, and Effects to load shaders via the AssetManager, enabling better shader management and composition.
Diffstat (limited to 'assets/final/shaders/ray_box.wgsl')
-rw-r--r--assets/final/shaders/ray_box.wgsl16
1 files changed, 16 insertions, 0 deletions
diff --git a/assets/final/shaders/ray_box.wgsl b/assets/final/shaders/ray_box.wgsl
new file mode 100644
index 0000000..d56ea1b
--- /dev/null
+++ b/assets/final/shaders/ray_box.wgsl
@@ -0,0 +1,16 @@
+struct RayBounds {
+ t_entry: f32,
+ t_exit: f32,
+ hit: bool,
+};
+
+fn ray_box_intersection(ro: vec3<f32>, rd: vec3<f32>, extent: vec3<f32>) -> RayBounds {
+ let inv_rd = 1.0 / rd;
+ let t0 = (-extent - ro) * inv_rd;
+ let t1 = (extent - ro) * inv_rd;
+ let tmin_vec = min(t0, t1);
+ let tmax_vec = max(t0, t1);
+ let t_entry = max(0.0, max(tmin_vec.x, max(tmin_vec.y, tmin_vec.z)));
+ let t_exit = min(tmax_vec.x, min(tmax_vec.y, tmax_vec.z));
+ return RayBounds(t_entry, t_exit, t_entry <= t_exit);
+}