From af128c4c9655c57b860010746dc7b5707c6520ba Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 29 Dec 2013 16:30:55 +0100 Subject: [PATCH] Fix cycles volume emission not working with OSL. --- intern/cycles/kernel/osl/osl_shader.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp index 6e1d8b2d404..6062996af36 100644 --- a/intern/cycles/kernel/osl/osl_shader.cpp +++ b/intern/cycles/kernel/osl/osl_shader.cpp @@ -415,11 +415,27 @@ static void flatten_volume_closure_tree(ShaderData *sd, } break; } + case CClosurePrimitive::Emissive: { + /* sample weight */ + float sample_weight = fabsf(average(weight)); + + sc.sample_weight = sample_weight; + sc.type = CLOSURE_EMISSION_ID; + sc.data0 = 0.0f; + sc.data1 = 0.0f; + sc.prim = NULL; + + /* flag */ + if(sd->num_closure < MAX_CLOSURE) { + sd->closure[sd->num_closure++] = sc; + sd->flag |= SD_EMISSION; + } + break; + } case CClosurePrimitive::Holdout: break; /* not implemented */ case CClosurePrimitive::Background: case CClosurePrimitive::BSDF: - case CClosurePrimitive::Emissive: case CClosurePrimitive::BSSRDF: case CClosurePrimitive::AmbientOcclusion: break; /* not relevant */