You know how raytracers pretty much just trace geometrical rays? I was wondering if Cycles has any wave optic features, where it would act as an actual electro-magnetic wave. Some really useful features would be diffraction, Interference, and polarization. Is there a method to getting/tricking Cycles into working this way?
2 Answers
I don't believe Cycles simulates light as waves. But Dispersion (Diffraction) effects are on the way, and can already be 'faked' in many ways.
If you are interested in optics experiment with cycles, take a look at the pinhole camera and shaped bokeh.
-
1$\begingroup$ +1 Interesting. Thanks. Do you have any idea when dispersion is coming out? $\endgroup$ May 22, 2013 at 23:08
-
-
1$\begingroup$ I have been trying for so long to get nice iridescent materials.. can't wait for dispersion and diffraction (+ absorption, opalescence and all the rest too, why not? ;) ) $\endgroup$– gandalf3 ♦Jun 21, 2013 at 0:28
As Cycles is a RGB-based raytracer, not a spectral raytracer, it's based on single paths for all colors(with the colors changing at every bounce/transmit). Therefore, dispersion cannot be simulated directly.
You can fake it, though, by separating shaders by color and mixing them, though this would often require changes to the entire scene. It can be done, though, by mixing a red refraction/glass, a blue refraction/glass, and a white refraction/glass at the necessary IORs. One can also do a small amount of reflection for the coating seen on some glasses or lenses.
-
2$\begingroup$ Strictly speaking Cycles wouldn't need to be a spectral renderer to support dispersion, it can be fit in without that. At the same time spectral renderers usually do not support effects such as interference and polarization, I've only seen that in research code, not in any production renderer. $\endgroup$– brechtMay 30, 2013 at 19:21
-
5$\begingroup$ interference and polarization would really be cool.. :D $\endgroup$– gandalf3 ♦Jun 21, 2013 at 0:26
-
$\begingroup$ Is there a way to fake polarisation? I guess you could use normal and camera rays? $\endgroup$ Jul 2, 2016 at 7:55
-
2$\begingroup$ @3pointedit You could possibly use two render layers, each of which renders the contribution of each of two orthogonal polarizations, and then finally combine them. $\endgroup$ Jul 2, 2016 at 16:27