summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/final/shaders/mesh_render.wgsl3
-rw-r--r--assets/final/shaders/renderer_3d.wgsl3
2 files changed, 4 insertions, 2 deletions
diff --git a/assets/final/shaders/mesh_render.wgsl b/assets/final/shaders/mesh_render.wgsl
index 3faf7ca..068efbc 100644
--- a/assets/final/shaders/mesh_render.wgsl
+++ b/assets/final/shaders/mesh_render.wgsl
@@ -34,8 +34,9 @@ fn vs_main(in: VertexInput, @builtin(instance_index) instance_index: u32) -> Ver
out.world_pos = world_pos.xyz;
// Use transpose of inverse for normals
+ // Note: mat3x3 constructor takes columns, so passing rows gives us transpose
let normal_matrix = mat3x3<f32>(obj.inv_model[0].xyz, obj.inv_model[1].xyz, obj.inv_model[2].xyz);
- out.normal = normalize(transpose(normal_matrix) * in.normal);
+ out.normal = normalize(normal_matrix * in.normal);
out.uv = in.uv;
out.color = obj.color;
diff --git a/assets/final/shaders/renderer_3d.wgsl b/assets/final/shaders/renderer_3d.wgsl
index 4733f6f..2f4f79c 100644
--- a/assets/final/shaders/renderer_3d.wgsl
+++ b/assets/final/shaders/renderer_3d.wgsl
@@ -181,8 +181,9 @@ fn fs_main(in: VertexOutput) -> FragmentOutput {
let d_z2 = get_dist(q_z2, obj.params) - disp_strength * h_z2;
let n_local = normalize(vec3<f32>(d_x1 - d_x2, d_y1 - d_y2, d_z1 - d_z2));
+ // Note: mat3x3 constructor takes columns, so passing rows gives us transpose
let normal_matrix = mat3x3<f32>(obj.inv_model[0].xyz, obj.inv_model[1].xyz, obj.inv_model[2].xyz);
- normal = normalize(transpose(normal_matrix) * n_local);
+ normal = normalize(normal_matrix * n_local);
// Apply texture to SDF color
if (in.instance_index == 0u || obj_type == 4.0) { // Floor (index 0) or PLANE