diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-22 20:16:47 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-22 20:16:47 +0100 |
| commit | cb2dc03ec0dbd7655325a56ad8b91fb5ad8bfb29 (patch) | |
| tree | 77abcdbc4b9b495907f0c7cbb2e12a56d6ff09ab | |
| parent | aa5c8e6730b03ea901ead59bc7cb1c31dac62012 (diff) | |
fix(cnn_v3): use model matrix for normal transform in gbuf_raster
inv_model applies the inverse rotation → normals pointing inward.
model matrix is correct for uniform-scale objects (matches rotating_cube.wgsl).
| -rw-r--r-- | cnn_v3/shaders/gbuf_raster.wgsl | 4 |
1 files 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; |
