From b69ebd80e995fd807b8d4792e0966cca6b77edf1 Mon Sep 17 00:00:00 2001 From: numzero Date: Fri, 3 Jan 2025 19:50:19 +0300 Subject: [PATCH] Fix diffuse reflection --- src/trace.wgsl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/trace.wgsl b/src/trace.wgsl index 27afd3b..727b320 100644 --- a/src/trace.wgsl +++ b/src/trace.wgsl @@ -113,7 +113,8 @@ fn trace_fragment(in: Varying) -> vec3f { let normal = (pos - s.center) / s.radius; if (all(s.emit_color == vec3(0.))) { color *= s.reflect_color; - let diffuse = normal + rand_sphere(); + let sp = rand_sphere(); + let diffuse = sign(dot(sp, normal)) * sp; let specular = reflect(ray, normal); ray = normalize(mix(diffuse, specular, s.glossiness)); } else {