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 {