Hi,
this patch splits the caustic option into 2 for more control, so artists can disable only Reflection/Refraction caustics or both.
Example Images:
Differential D766
Split "No Caustics" option into Reflection and Refraction caustic controls Authored by Thomas Dinges (dingto) on Aug 30 2014, 6:27 PM.
Details
Hi, Example Images:
Diff Detail Event TimelineComment Actions In general, you might also want to make it work more like the lightpath trick seen here. This would mean that disabling caustics in effect will not remove near as much realism as it does now, which would then serve as a good compromise for a lot of people doing things like animation. Comment Actions Regarding TODO 2 :
the first you should definitely do, the later is somewhat hacky... Comment Actions It's not a DNA value, it's only available in py. But I just found out that we have a version patching system for that too (just added by Sergey a few days ago). See intern\cycles\blender\addon\version_update.py That should do the trick. :) Comment Actions it is also available in DNA using properties API (everything in blender goes into DNA, there is no other way that data can end up in a blend file :), Comment Actions Did a few test renders of my own. Glad to see this functionality added so quickly after I mentioned it! These were done on 6 of the 8 cores on my 4790k. You can see the big time savings in scenes where you need reflective caustics, but where you can stand to not have/fake refractive ones. Comment Actions Hey @Brecht Van Lommel (brecht) and @Sergey Sharybin (sergey) :) I am not 100% sure how to make this work for OSL. I checked and it seems OSL distinguishes between scattering and event types. See https://github.com/imageworks/OpenShadingLanguage/blob/8ca9327413f3179f4be9c2714c533c705ad3e07c/src/include/OSL/oslclosure.h for example (Labels class). Do we need to add a m_event_label, next to m_scattering_label in CBSDFClosure()? Some hint would be appreciated. :) Comment Actions We don't use those labels from OSL, only our own LABEL_* flags, which are bitflags that you can combine. In osl_closures.cpp, bsdf_phong_ramp.cpp and osl_shader.cpp you can replace LABEL_GLOSSY by LABEL_GLOSSY|LABEL_REFLECT and LABEL_GLOSSY|LABEL_TRANSMIT depending if the BSDF reflects or transmits. Comment Actions By the way, the light path trick mentioned above is like a more aggressive version of filter glossy. Filter glossy will increase BSDF roughness up to 0.5, this trick replaces it with a diffuse BSDF. Filter glossy could be changed or made configured so it can go all the way up to 1.0, especially with the new glossy BSDF sampling that is less noisy for high roughness. Roughness 1 glossy is not quite the same as diffuse, but it's a very soft reflection too. Comment Actions OSL now works as well, thank you @Brecht Van Lommel (brecht) for the help. :) I will check on the filter_glossy option later, might be a good improvement too. I did not change all closure labels though, because in SVM the caustic option also only affects some shaders (Glossy, Glass, Aniso), we can make this affect more shaders later, but then it should be consistent for both backends. I consider this done now, ready for review.
Comment Actions Minot things:
| ||||||||||||||||||||||||||||||||||||||