Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2013-12-29 19:30:55 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2013-12-30 03:04:02 +0400
commitaf128c4c9655c57b860010746dc7b5707c6520ba (patch)
treefde6fb193c5750fb2488b781862ef6daa2bb20e1 /intern
parent30aa0c2482367fd5a99f2b791206b9e72d9ca7e3 (diff)
Fix cycles volume emission not working with OSL.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/osl/osl_shader.cpp18
1 files changed, 17 insertions, 1 deletions
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 */