2
$\begingroup$

I'm building a geometric shape with meshes that have emissive shaders along the interior edges, and the faces of the shape are "two way mirrors". The idea is that these emissive shaders act as light strips and the mirrors result in the light bouncing all around.

Without the "two way mirrors" on the faces, this looks like this:

enter image description here

When adding in the two way mirrors and rendering with the Cycles renderer (and max light bounces of 36 and 64 rendering samples) gives this:

enter image description here

Which is pretty cool. But you can see that the coloring got a lot more "muddled". There's a general white cast to the entire image, rather than having the reflections being crisp and sharp. (BTW, I built one of these in real life, and the reflections are entirely crisp and sharp in real life.)

Increasing the number of render samples or light bounces doesn't help.

The shader I use for these two way mirror panes are a MixShader with 70% a perfect mirror, and 30% transparent. This one:

enter image description here

I've dropped the .blend file to https://bit.ly/muddled-dodec.

Any suggestions on what can be done here to make the resultant image less muddled and more crisp and sharp?

Also, here's what this looks like IRL from a similar angle. There's my reflection taking the pic, but there isn't all the 'creeping whiteness' that's in the rendering above that muddles the rendering.

enter image description here

$\endgroup$
2
  • $\begingroup$ It's a bit unclear to me what you mean by "muddled." If you have this object in real life, why not share a photo of it? If you can share your file, it will allow us to experiment with the render settings which will speed things up. $\endgroup$
    – Mr A
    Dec 8, 2023 at 19:26
  • $\begingroup$ @MrA - I just edited the post to add an in-real-life image and a pointer to the .blend file. What I mean by 'muddled' here is the whiteness that creeps in around the reflections and basically adds/muddles whiteness in there, vs. the crispness in the IRL image. $\endgroup$
    – gds
    Dec 8, 2023 at 20:18

1 Answer 1

2
$\begingroup$

Samples

The muddled look is caused by denoising when the input to the denoiser is too noisy. The following image shows a comparison between the output of 64 samples (on the left) and the output of 1024 samples (on the right). The top row shows the noisy renders, and the bottom row shows the denoised renders.

Samples

The settings I changed to get these renders are under Render Properties in the Sampling section. I turned off Noise Threshold to ensure that the full samples are processed.

Sampling

Light Paths

The settings for the light bounces can be found in the Light Paths section.

Light Paths

I started by setting them all to zero (marked red in the screenshot above). This is what I got.

No bounces

I tried adding bounces to each type separately, and it was clear that this scene needs Glossy and Transparent bounces the most (which makes sense considering how the glass shader was made). However, beyond around 32 bounces, they have very little effect on the render. The following is a render with 32 Glossy and 32 Transparent bounces.

32 bounces

It is probably possible to reduce the bounces below 32 and get similar results.

I also tried to tweak the clamping. It didn't reduce the noise that much. However, as expected, with no clamping (set to zero), the image is brighter.

Glass Shader

I looked at the current shader, and I think better results can be obtained by replacing the Transparent BSDF with a Refraction BSDF. It may also be desirable to use a mixing factor that depends on the viewing angle. I did that by adding a Layer Weight node and tweaked it using a Map Range node. Renders of both are attached below (bottom render has more samples).

Shaders

Please note that the above changes to the shader will require tweaking the bounces. The Transparent bounces are no longer needed and should be replaced with Transmission bounces.

This is a denoised render with 1024 samples using the revised shader with the Layer Weight node.

Final

Summary

  • Tweak the glass shader as suggested above.
  • Decide where the bounces are needed.
  • Increase the samples as much as possible.
$\endgroup$
6
  • $\begingroup$ Wow! Thanks so much for such a detailed response! $\endgroup$
    – gds
    Dec 10, 2023 at 8:27
  • 1
    $\begingroup$ I found that by far the most helpful things to do here were to go from the Transparent shader to the Refraction shader as you suggested, and focus the light bounces only on Glossy and Transmission (this also helped diminish extraneous diffuse lighting). I didn't find increasing the samples beyond like 64 or 128 helped very much. And in my case I'm animating this, so going 1000+ samples isn't really feasible. But even with 64 and the changes mentioned above, this looks much better. (more...) $\endgroup$
    – gds
    Dec 10, 2023 at 8:31
  • 1
    $\begingroup$ (... continued) I also found that updating Color Management and going with Filmic / Very High Contrast helped with this muddling as well and made things sharper (due to higher contrast). Plus, the viewing angle tweak to the shader also really does help! One thing I'm not clear on is why the refraction shader is actually better than the transparent shader. It definitely is, but any idea why? Again, thanks again for taking the time. $\endgroup$
    – gds
    Dec 10, 2023 at 8:33
  • $\begingroup$ I am not exactly sure. My reasoning for using it came from the fact that what we're simulating here are mainly transmission and reflection. Transmission allows light to pass through which lets us see through the glass. Reflection is what allows us to see multiple reflections. The trick is to find the best mixing factor. For reflection, the glossy shader is the best option. For transmission, the refraction shader is a more realistic option than the transparency shader, since the former simulates the bending of light while the latter doesn't. $\endgroup$
    – Mr A
    Dec 10, 2023 at 14:57
  • $\begingroup$ The fact that the transparent shaders doesn't simulate refraction could be the reason it breaks, but it could also be a bug, or it was just not designed to handle this situation. $\endgroup$
    – Mr A
    Dec 10, 2023 at 14:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .