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
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-02-08 18:19:04 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-02-09 21:58:42 +0300
commita6968e87f1338081f30725f8f2ca3460e280fea2 (patch)
tree0fdc61c15c86953fb431894871e7cf0a75dc5031 /intern/cycles/blender
parent0df9b2c71517a98760a5e577f434d9d86e4e1910 (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.py7
-rw-r--r--intern/cycles/blender/blender_shader.cpp8
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)) {