diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-08 18:19:04 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-09 21:58:42 +0300 |
commit | a6968e87f1338081f30725f8f2ca3460e280fea2 (patch) | |
tree | 0fdc61c15c86953fb431894871e7cf0a75dc5031 /intern/cycles/blender | |
parent | 0df9b2c71517a98760a5e577f434d9d86e4e1910 (diff) |
Cycles: add random walk subsurface scattering to Principled BSDF.
Differential Revision: https://developer.blender.org/D3054
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/addon/version_update.py | 7 | ||||
-rw-r--r-- | intern/cycles/blender/blender_shader.cpp | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py index 400d6dac454..90cecec215d 100644 --- a/intern/cycles/blender/addon/version_update.py +++ b/intern/cycles/blender/addon/version_update.py @@ -130,10 +130,13 @@ def displacement_nodes_insert(): if check_is_new_shading_material(material): displacement_node_insert(material, material.node_tree, traversed) -def displacement_node_space(node): +def displacement_principled_nodes(node): if node.bl_idname == 'ShaderNodeDisplacement': if node.space != 'WORLD': node.space = 'OBJECT' + if node.bl_idname == 'ShaderNodeBsdfPrincipled': + if node.subsurface_method != 'RANDOM_WALK': + node.subsurface_method = 'BURLEY' def mapping_node_order_flip(node): @@ -372,4 +375,4 @@ def do_versions(self): if not cmat.is_property_set("displacement_method"): cmat.displacement_method = 'BUMP' - foreach_cycles_node(displacement_node_space) + foreach_cycles_node(displacement_principled_nodes) diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index d6f7a08431d..33384709947 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -535,6 +535,14 @@ static ShaderNode *add_node(Scene *scene, principled->distribution = CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID; break; } + switch (b_principled_node.subsurface_method()) { + case BL::ShaderNodeBsdfPrincipled::subsurface_method_BURLEY: + principled->subsurface_method = CLOSURE_BSSRDF_PRINCIPLED_ID; + break; + case BL::ShaderNodeBsdfPrincipled::subsurface_method_RANDOM_WALK: + principled->subsurface_method = CLOSURE_BSSRDF_PRINCIPLED_RANDOM_WALK_ID; + break; + } node = principled; } else if(b_node.is_a(&RNA_ShaderNodeBsdfTranslucent)) { |