diff options
author | Mai Lavelle <mai.lavelle@gmail.com> | 2016-08-17 02:42:08 +0300 |
---|---|---|
committer | Mai Lavelle <mai.lavelle@gmail.com> | 2016-09-02 05:44:42 +0300 |
commit | 9f1c42392e4ae8dfaa91ef8cc32119199ca7d723 (patch) | |
tree | 1efc93d7fc137b939e33827ae86a9b44e9b2d841 /intern/cycles/render/osl.cpp | |
parent | f0159d1d48a141483f61b1ccc262f99016b63570 (diff) |
Cycles: remove duplicate shader storage
Storing multiple copies of a shader was needed when the displacement method was
a mesh option and could be different for each mesh. Now that its a shader option
this is unnecessary.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D2156
Diffstat (limited to 'intern/cycles/render/osl.cpp')
-rw-r--r-- | intern/cycles/render/osl.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/intern/cycles/render/osl.cpp b/intern/cycles/render/osl.cpp index 1a6ae5f9277..8d5e29579c2 100644 --- a/intern/cycles/render/osl.cpp +++ b/intern/cycles/render/osl.cpp @@ -1146,13 +1146,14 @@ void OSLCompiler::compile(Scene *scene, OSLGlobals *og, Shader *shader) } /* push state to array for lookup */ - og->surface_state.push_back(shader->osl_surface_ref); - og->surface_state.push_back(shader->osl_surface_bump_ref); + if(shader->displacement_method == DISPLACE_TRUE || !shader->graph_bump) { + og->surface_state.push_back(shader->osl_surface_ref); + } + else { + og->surface_state.push_back(shader->osl_surface_bump_ref); + } og->volume_state.push_back(shader->osl_volume_ref); - og->volume_state.push_back(shader->osl_volume_ref); - - og->displacement_state.push_back(shader->osl_displacement_ref); og->displacement_state.push_back(shader->osl_displacement_ref); } |