summaryrefslogtreecommitdiff
path: root/cnn_v3/shaders/gbuf_raster.wgsl
diff options
context:
space:
mode:
Diffstat (limited to 'cnn_v3/shaders/gbuf_raster.wgsl')
-rw-r--r--cnn_v3/shaders/gbuf_raster.wgsl17
1 files changed, 2 insertions, 15 deletions
diff --git a/cnn_v3/shaders/gbuf_raster.wgsl b/cnn_v3/shaders/gbuf_raster.wgsl
index c762db2..a5eb921 100644
--- a/cnn_v3/shaders/gbuf_raster.wgsl
+++ b/cnn_v3/shaders/gbuf_raster.wgsl
@@ -3,6 +3,7 @@
// Uses GlobalUniforms, ObjectData, ObjectsBuffer from common_uniforms.
#include "common_uniforms"
+#include "math/normal"
@group(0) @binding(0) var<uniform> globals: GlobalUniforms;
@group(0) @binding(1) var<storage, read> object_data: ObjectsBuffer;
@@ -15,20 +16,6 @@ struct VertexOutput {
@location(3) @interpolate(flat) instance_index: u32,
}
-// Octahedral encoding: maps unit normal to [-1,1]^2
-fn oct_encode(n: vec3f) -> vec2f {
- let inv_l1 = 1.0 / (abs(n.x) + abs(n.y) + abs(n.z));
- var p = n.xy * inv_l1;
- // Fold lower hemisphere
- if (n.z < 0.0) {
- let s = vec2f(
- select(-1.0, 1.0, p.x >= 0.0),
- select(-1.0, 1.0, p.y >= 0.0)
- );
- p = (1.0 - abs(p.yx)) * s;
- }
- return p; // in [-1, 1]
-}
@vertex
fn vs_main(
@@ -96,7 +83,7 @@ fn fs_main(in: VertexOutput) -> GBufOutput {
let mat_id = f32(in.instance_index) / 255.0;
// Oct-encode world normal, remap [-1,1] → [0,1] for storage
- let oct = oct_encode(normalize(in.world_normal)) * 0.5 + vec2f(0.5);
+ let oct = oct_encode_unorm(normalize(in.world_normal));
var out: GBufOutput;
out.albedo = vec4f(in.color.rgb, 1.0);