Fix T48698: Rays from SSS act as diffuse for normal objects but have an undefined type for lamp objects

The problem here was that there are five path types internally (diffuse, glossy, transmission, subsurface and volume scatter), but subsurface isn't exposed to the user.
This caused some weird behaviour - if all four types are disabled on the lamp, Cycles doesn't even try sampling it, but if any type was active, the lamp would illuminate
the cube since none of the options set subsurface to zero.
In the future, it might be reasonable to add subsurface visibility as an option - but for now the weird and inconsistent behaviour can be fixed simply by setting both
diffuse and subsurface to zero if the user disables diffuse visibility.
This commit is contained in:
Lukas Stockner 2016-06-21 20:02:21 +02:00
parent db4a46bc3c
commit 028ba31903
Notes: blender-bot 2023-02-14 07:49:04 +01:00
Referenced by issue #48698, Rays from SSS act as diffuse for normal objects but have an undefined type for lamp objects
1 changed files with 3 additions and 1 deletions

View File

@ -124,8 +124,10 @@ ccl_device_noinline bool direct_emission(KernelGlobals *kg,
#ifdef __PASSES__
/* use visibility flag to skip lights */
if(ls->shader & SHADER_EXCLUDE_ANY) {
if(ls->shader & SHADER_EXCLUDE_DIFFUSE)
if(ls->shader & SHADER_EXCLUDE_DIFFUSE) {
eval->diffuse = make_float3(0.0f, 0.0f, 0.0f);
eval->subsurface = make_float3(0.0f, 0.0f, 0.0f);
}
if(ls->shader & SHADER_EXCLUDE_GLOSSY)
eval->glossy = make_float3(0.0f, 0.0f, 0.0f);
if(ls->shader & SHADER_EXCLUDE_TRANSMIT)