From cb2dc03ec0dbd7655325a56ad8b91fb5ad8bfb29 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 22 Mar 2026 20:16:47 +0100 Subject: fix(cnn_v3): use model matrix for normal transform in gbuf_raster MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit inv_model applies the inverse rotation → normals pointing inward. model matrix is correct for uniform-scale objects (matches rotating_cube.wgsl). --- cnn_v3/shaders/gbuf_raster.wgsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cnn_v3/shaders/gbuf_raster.wgsl b/cnn_v3/shaders/gbuf_raster.wgsl index a5eb921..003f501 100644 --- a/cnn_v3/shaders/gbuf_raster.wgsl +++ b/cnn_v3/shaders/gbuf_raster.wgsl @@ -60,8 +60,8 @@ fn vs_main( let world_pos = obj.model * vec4f(p, 1.0); let clip_pos = globals.view_proj * world_pos; - // Transform normal by inverse-transpose (upper-left 3×3 of inv_model^T) - let world_normal = normalize((obj.inv_model * vec4f(n, 0.0)).xyz); + // Transform normal: use model matrix (correct for uniform scale + rotation). + let world_normal = normalize((obj.model * vec4f(n, 0.0)).xyz); var out: VertexOutput; out.position = clip_pos; -- cgit v1.2.3