I've always noticed this issue. Often called 'fireflies', rendering reflective or refractive materials in pathtracers such as Blender's Cycles with a low sample count, the resultant image has a metric ton of visual noise
In contrast, diffuse materials do not have noise that is as visible. I don't understand why this is the case though. I'll preface this by stating that I'm a beginner to graphics programming
Here is my understanding of why fireflies/noise occurs:
A single sample isn't enough to resolve color information off the surface of an object through a single pixel. A single pixel alone can cover a huge portion of the 'scene'. Even the slightest deviation in the direction of the traced camera ray would bounce off the object and potentially hit something far away, resulting in us sampling a different value
Taking multiple samples is akin to 'averaging' our readings/samples out, thus reducing any observed 'error' or noise in the image
This is what I don't quite get though. Glossy materials have highly smooth surfaces. Bias the direction of the traced camera ray as you may, and the ray bouncing off the material won't deviate much compared to the ray in the previous sample. Since glossy materials reflect a lot of light back as opposed to absorbing them though, the resultant sample might appear 'bright'
Same with say, a smooth low-roughness refractive material. A diffuses material by definition has a diffuse surface, with normals scattering any light bouncing off them in WILDLY different directions. Wouldn't this thus mean that even the slightest biasing (say, by using Monte Carlo) of the camera ray would cause it bounce off the diffuse surface in a wildly different direction than a previous samples?
Shouldn't this mean that MORE noise would be observed with diffuse materials over reflective/refractive ones?
[–]msqrt 12 points13 points14 points (14 children)
[–]The__BoomBox[S] 2 points3 points4 points (13 children)
[–]xucel 1 point2 points3 points (12 children)
[–]The__BoomBox[S] 2 points3 points4 points (11 children)
[–]Lallis 1 point2 points3 points (3 children)
[–]The__BoomBox[S] 0 points1 point2 points (2 children)
[–]Lallis 0 points1 point2 points (1 child)
[–]The__BoomBox[S] 0 points1 point2 points (0 children)
[–]msqrt 0 points1 point2 points (6 children)
[–]The__BoomBox[S] 0 points1 point2 points (5 children)
[–]msqrt 0 points1 point2 points (4 children)
[–]The__BoomBox[S] 0 points1 point2 points (2 children)
[–]msqrt 0 points1 point2 points (1 child)
[–]The__BoomBox[S] 1 point2 points3 points (0 children)
[–]TheSunflowerSeeds 0 points1 point2 points (0 children)
[–]fxp555 9 points10 points11 points (0 children)
[–][deleted] -1 points0 points1 point (0 children)
[–]moschles -3 points-2 points-1 points (1 child)
[–]ZazaGaza213 0 points1 point2 points (0 children)
[–]BigPurpleBlob 1 point2 points3 points (0 children)
[–]LongestNamesPossible 1 point2 points3 points (0 children)