Commit: b08064d867255533ae243ee7945452adfea6fc97 Author: Weizhen Huang Date: Mon Dec 19 11:19:41 2022 +0100 Branches: microfacet_hair https://developer.blender.org/rBb08064d867255533ae243ee7945452adfea6fc97
Start with less parameters =================================================================== M intern/cycles/kernel/closure/bsdf_hair_microfacet.h M intern/cycles/kernel/svm/closure.h M intern/cycles/scene/shader_nodes.cpp M source/blender/nodes/shader/nodes/node_shader_bsdf_hair_microfacet.cc =================================================================== diff --git a/intern/cycles/kernel/closure/bsdf_hair_microfacet.h b/intern/cycles/kernel/closure/bsdf_hair_microfacet.h index 794c6930b96..92d32db6872 100644 --- a/intern/cycles/kernel/closure/bsdf_hair_microfacet.h +++ b/intern/cycles/kernel/closure/bsdf_hair_microfacet.h @@ -1169,14 +1169,11 @@ ccl_device int bsdf_microfacet_hair_sample_elliptic(const KernelGlobals kg, const float3 Y = safe_normalize(sd->dPdu); const float3 Z0 = safe_normalize(cross(X0, Y)); - /* rotate (Z,X) around Y */ - const float curve_parameter = bsdf->extra->attr_descr_intercept; - const float curve_length = bsdf->extra->attr_descr_length; - const float curve_twist_rate = bsdf->extra->twist_rate; - const float curve_twist_start = bsdf->extra->axis_rot; + /* const float curve_parameter = bsdf->extra->attr_descr_intercept; */ + /* const float curve_length = bsdf->extra->attr_descr_length; */ - const float twist_angle = M_2PI_F * (curve_twist_start + - curve_twist_rate * curve_parameter * curve_length); + /* TODO: compute the ellipse orientation based on the curve normal or user-defined normal? */ + const float twist_angle = 0.0f; const float sin_twist_angle = sinf(twist_angle); const float cos_twist_angle = cosf(twist_angle); diff --git a/intern/cycles/kernel/svm/closure.h b/intern/cycles/kernel/svm/closure.h index 55deefd136b..2db8ccbfeee 100644 --- a/intern/cycles/kernel/svm/closure.h +++ b/intern/cycles/kernel/svm/closure.h @@ -1023,20 +1023,14 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg, if (model_type == NODE_MICROFACET_HAIR_ELLIPTIC_GGX || model_type == NODE_MICROFACET_HAIR_ELLIPTIC_BECKMANN) { - uint eccentricity_ofs, twist_rate_ofs, axis_ofs; - svm_unpack_node_uchar4( - data_node7.x, &eccentricity_ofs, &twist_rate_ofs, &axis_ofs, &temp); + uint eccentricity_ofs; + svm_unpack_node_uchar4(data_node7.x, &eccentricity_ofs, &temp, &temp, &temp); float eccentricity = stack_load_float_default(stack, eccentricity_ofs, data_node7.y); - float twist_rate = stack_load_float_default(stack, twist_rate_ofs, data_node7.z); - float axis_rot = stack_load_float_default(stack, axis_ofs, data_node7.w); /* Eccentricity */ bsdf->extra->eccentricity = (eccentricity > 1.f) ? 1.f / eccentricity : eccentricity; - /* Angular twist rate per unit length */ - bsdf->extra->twist_rate = twist_rate; - const AttributeDescriptor attr_descr_intercept = find_attribute(kg, sd, data_node4.z); bsdf->extra->attr_descr_intercept = curve_attribute_float( kg, sd, attr_descr_intercept, NULL, NULL); @@ -1044,10 +1038,6 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg, const AttributeDescriptor attr_descr_length = find_attribute(kg, sd, data_node4.w); bsdf->extra->attr_descr_length = curve_attribute_float( kg, sd, attr_descr_length, NULL, NULL); - - bsdf->extra->axis_rot = axis_rot > 0.0f ? - random * axis_rot : - -axis_rot; // allowing this negative mode for debugging } sd->flag |= bsdf_microfacet_hair_setup(sd, bsdf); diff --git a/intern/cycles/scene/shader_nodes.cpp b/intern/cycles/scene/shader_nodes.cpp index 5b81c8dbe0c..345e8e8828b 100644 --- a/intern/cycles/scene/shader_nodes.cpp +++ b/intern/cycles/scene/shader_nodes.cpp @@ -3666,8 +3666,6 @@ NODE_DEFINE(MicrofacetHairBsdfNode) SocketType::VECTOR); SOCKET_IN_FLOAT(eccentricity, "Eccentricity", 0.85f); - SOCKET_IN_FLOAT(random_axis, "Random Axis", 0.0f); - SOCKET_IN_FLOAT(twist_rate, "Twist Rate", 0.0f); SOCKET_IN_FLOAT(offset, "Offset", 2.f * M_PI_F / 180.f); SOCKET_IN_FLOAT(roughness, "Roughness", 0.3f); @@ -3729,8 +3727,6 @@ void MicrofacetHairBsdfNode::compile(SVMCompiler &compiler) ShaderInput *Blur_in = input("Blur"); ShaderInput *eccentricity_in = input("Eccentricity"); - ShaderInput *random_axis_in = input("Random Axis"); - ShaderInput *twist_rate_in = input("Twist Rate"); int color_ofs = compiler.stack_assign(input("Color")); int tint_ofs = compiler.stack_assign(input("Tint")); @@ -3809,12 +3805,12 @@ void MicrofacetHairBsdfNode::compile(SVMCompiler &compiler) /* data node 7 */ compiler.add_node(compiler.encode_uchar4(compiler.stack_assign_if_linked(eccentricity_in), - compiler.stack_assign_if_linked(twist_rate_in), - compiler.stack_assign_if_linked(random_axis_in), + SVM_STACK_INVALID, + SVM_STACK_INVALID, SVM_STACK_INVALID), __float_as_uint(eccentricity), - __float_as_uint(twist_rate), - __float_as_uint(random_axis)); + 0, + 0); } /* Prepares the input data for the OSL shader. */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_microfacet.cc b/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_microfacet.cc index 9e2d8d654ec..0ca3595d115 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_microfacet.cc +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_microfacet.cc @@ -32,15 +32,6 @@ static void node_declare(NodeDeclarationBuilder &b) .min(0.0f) .max(1.0f) .subtype(PROP_FACTOR); - b.add_input<decl::Float>(N_("Random Axis")) - .default_value(0.0f) - .min(-1.0f) - .max(1.0f); - b.add_input<decl::Float>(N_("Twist Rate")) - .default_value(0.0f) - .min(0.0f) - .max(2.0f) - .subtype(PROP_FACTOR); b.add_input<decl::Float>(N_("Roughness")) .default_value(0.3f) .min(0.0f) @@ -106,9 +97,6 @@ static void node_shader_update_hair_microfacet(bNodeTree *ntree, bNode *node) int parametrization = node->custom1; int model_type = node->custom2; - bool circular = (model_type == SHD_MICROFACET_HAIR_CIRCULAR_GGX || - model_type == SHD_MICROFACET_HAIR_CIRCULAR_GGX_ANALYTIC || - model_type == SHD_MICROFACET_HAIR_CIRCULAR_BECKMANN); bool elliptical = (model_type == SHD_MICROFACET_HAIR_ELLIPTIC_GGX || model_type == SHD_MICROFACET_HAIR_ELLIPTIC_BECKMANN); @@ -139,12 +127,6 @@ static void node_shader_update_hair_microfacet(bNodeTree *ntree, bNode *node) else if (STREQ(sock->name, "Eccentricity")) { nodeSetSocketAvailability(ntree, sock, elliptical); } - else if (STREQ(sock->name, "Random Axis")) { - nodeSetSocketAvailability(ntree, sock, elliptical); - } - else if (STREQ(sock->name, "Twist Rate")) { - nodeSetSocketAvailability(ntree, sock, elliptical); - } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs