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:
Diffstat (limited to 'intern/cycles/render/nodes.cpp')
-rw-r--r--intern/cycles/render/nodes.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 848076cf818..21db1be706e 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -2229,6 +2229,10 @@ NODE_DEFINE(DisneyBsdfNode)
distribution_enum.insert("GGX", CLOSURE_BSDF_MICROFACET_GGX_GLASS_ID);
distribution_enum.insert("Multiscatter GGX", CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID);
SOCKET_ENUM(distribution, "Distribution", distribution_enum, CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID);
+ static NodeEnum surface_type_enum;
+ surface_type_enum.insert("Solid Surface", SOLID_SURFACE);
+ surface_type_enum.insert("Thin Surface", THIN_SURFACE);
+ SOCKET_ENUM(surface_type, "Surface Type", surface_type_enum, SOLID_SURFACE);
SOCKET_IN_COLOR(base_color, "Base Color", make_float3(0.8f, 0.8f, 0.8f));
SOCKET_IN_COLOR(subsurface_color, "Subsurface Color", make_float3(0.8f, 0.8f, 0.8f));
SOCKET_IN_FLOAT(metallic, "Metallic", 0.0f);
@@ -2238,14 +2242,16 @@ NODE_DEFINE(DisneyBsdfNode)
SOCKET_IN_FLOAT(roughness, "Roughness", 0.0f);
SOCKET_IN_FLOAT(specular_tint, "Specular Tint", 0.0f);
SOCKET_IN_FLOAT(anisotropic, "Anisotropic", 0.0f);
+ SOCKET_IN_FLOAT(anisotropic_rotation, "Anisotropic Rotation", 0.0f);
SOCKET_IN_FLOAT(sheen, "Sheen", 0.0f);
SOCKET_IN_FLOAT(sheen_tint, "Sheen Tint", 0.0f);
SOCKET_IN_FLOAT(clearcoat, "Clearcoat", 0.0f);
SOCKET_IN_FLOAT(clearcoat_gloss, "Clearcoat Gloss", 0.0f);
+ SOCKET_IN_FLOAT(spec_trans, "Specular Transmission", 0.0f);
SOCKET_IN_FLOAT(ior, "IOR", 0.0f);
- SOCKET_IN_FLOAT(transparency, "Transparency", 0.0f);
+ SOCKET_IN_FLOAT(flatness, "Flatness", 0.0f);
+ SOCKET_IN_FLOAT(diff_trans, "Diffuse Transmission", 0.0f);
SOCKET_IN_FLOAT(refraction_roughness, "Refraction Roughness", 0.0f);
- SOCKET_IN_FLOAT(anisotropic_rotation, "Anisotropic Rotation", 0.0f);
SOCKET_IN_NORMAL(normal, "Normal", make_float3(0.0f, 0.0f, 0.0f), SocketType::LINK_NORMAL);
SOCKET_IN_NORMAL(clearcoat_normal, "Clearcoat Normal", make_float3(0.0f, 0.0f, 0.0f), SocketType::LINK_NORMAL);
SOCKET_IN_NORMAL(tangent, "Tangent", make_float3(0.0f, 0.0f, 0.0f), SocketType::LINK_TANGENT);
@@ -2278,9 +2284,9 @@ void DisneyBsdfNode::attributes(Shader *shader, AttributeRequestSet *attributes)
}
void DisneyBsdfNode::compile(SVMCompiler& compiler, ShaderInput *p_metallic, ShaderInput *p_subsurface, ShaderInput *p_subsurface_radius,
- ShaderInput *p_specular, ShaderInput *p_roughness, ShaderInput *p_specular_tint, ShaderInput *p_anisotropic,
- ShaderInput *p_sheen, ShaderInput *p_sheen_tint, ShaderInput *p_clearcoat, ShaderInput *p_clearcoat_gloss,
- ShaderInput *p_ior, ShaderInput *p_transparency, ShaderInput *p_anisotropic_rotation, ShaderInput *p_refraction_roughness)
+ ShaderInput *p_specular, ShaderInput *p_specular_tint, ShaderInput *p_roughness, ShaderInput *p_anisotropic, ShaderInput *p_anisotropic_rotation,
+ ShaderInput *p_sheen, ShaderInput *p_sheen_tint, ShaderInput *p_clearcoat, ShaderInput *p_clearcoat_gloss, ShaderInput *p_spec_trans,
+ ShaderInput *p_ior, ShaderInput *p_flatness, ShaderInput *p_diff_trans, ShaderInput *p_refraction_roughness)
{
ShaderInput *base_color_in = input("Base Color");
ShaderInput *subsurface_color_in = input("Subsurface Color");
@@ -2299,14 +2305,16 @@ void DisneyBsdfNode::compile(SVMCompiler& compiler, ShaderInput *p_metallic, Sha
int roughness_offset = compiler.stack_assign(p_roughness);
int specular_tint_offset = compiler.stack_assign(p_specular_tint);
int anisotropic_offset = compiler.stack_assign(p_anisotropic);
+ int anisotropic_rotation_offset = compiler.stack_assign(p_anisotropic_rotation);
int sheen_offset = compiler.stack_assign(p_sheen);
int sheen_tint_offset = compiler.stack_assign(p_sheen_tint);
int clearcoat_offset = compiler.stack_assign(p_clearcoat);
int clearcoat_gloss_offset = compiler.stack_assign(p_clearcoat_gloss);
+ int spec_trans_offset = compiler.stack_assign(p_spec_trans);
int ior_offset = compiler.stack_assign(p_ior);
- int transparency_offset = compiler.stack_assign(p_transparency);
+ int flatness_offset = compiler.stack_assign(p_flatness);
+ int diff_trans_offset = compiler.stack_assign(p_diff_trans);
int refraction_roughness_offset = compiler.stack_assign(p_refraction_roughness);
- int anisotropic_rotation_offset = compiler.stack_assign(p_anisotropic_rotation);
int subsurface_radius_offset = compiler.stack_assign(p_subsurface_radius);
compiler.add_node(NODE_CLOSURE_BSDF,
@@ -2321,8 +2329,8 @@ void DisneyBsdfNode::compile(SVMCompiler& compiler, ShaderInput *p_metallic, Sha
compiler.encode_uchar4(specular_offset, roughness_offset, specular_tint_offset, anisotropic_offset),
compiler.encode_uchar4(sheen_offset, sheen_tint_offset, clearcoat_offset, clearcoat_gloss_offset));
- compiler.add_node(compiler.encode_uchar4(ior_offset, transparency_offset, anisotropic_rotation_offset, refraction_roughness_offset),
- distribution, SVM_STACK_INVALID, SVM_STACK_INVALID);
+ compiler.add_node(compiler.encode_uchar4(ior_offset, spec_trans_offset, anisotropic_rotation_offset, refraction_roughness_offset),
+ compiler.encode_uchar4(flatness_offset, diff_trans_offset, SVM_STACK_INVALID, SVM_STACK_INVALID), distribution, surface_type);
float3 bc_default = get_float3(base_color_in->socket_type);
@@ -2346,14 +2354,15 @@ bool DisneyBsdfNode::has_integrator_dependency()
void DisneyBsdfNode::compile(SVMCompiler& compiler)
{
compile(compiler, input("Metallic"), input("Subsurface"), input("Subsurface Radius"), input("Specular"),
- input("Roughness"), input("Specular Tint"), input("Anisotropic"), input("Sheen"), input("Sheen Tint"),
- input("Clearcoat"), input("Clearcoat Gloss"), input("IOR"), input("Transparency"),
- input("Anisotropic Rotation"), input("Refraction Roughness"));
+ input("Specular Tint"), input("Roughness"), input("Anisotropic"), input("Anisotropic Rotation"),
+ input("Sheen"), input("Sheen Tint"), input("Clearcoat"), input("Clearcoat Gloss"), input("Specular Transmission"),
+ input("IOR"), input("Flatness"), input("Diffuse Transmission"), input("Refraction Roughness"));
}
void DisneyBsdfNode::compile(OSLCompiler& compiler)
{
compiler.parameter(this, "distribution");
+ compiler.parameter(this, "surface_type");
compiler.add(this, "node_disney_bsdf");
}