[Bf-blender-cvs] [4e251211229] principled-v2: Cleanup: Move Principled BSDF model selection to its own enum

Lukas Stockner noreply at git.blender.org
Mon Jul 4 23:56:12 CEST 2022


Commit: 4e251211229b9249076f4b1be7e099928fd3a106
Author: Lukas Stockner
Date:   Mon Jul 4 23:31:47 2022 +0200
Branches: principled-v2
https://developer.blender.org/rB4e251211229b9249076f4b1be7e099928fd3a106

Cleanup: Move Principled BSDF model selection to its own enum

Numerical values are the same as before, so compatiblity is not a concern.

===================================================================

M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc

===================================================================

diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 426008e887e..9fc6bf4242d 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1866,7 +1866,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
                    STREQ(node->idname, "ShaderNodeEeveeMetallic")) {
             node->type = SH_NODE_BSDF_PRINCIPLED;
             BLI_strncpy(node->idname, "ShaderNodeBsdfPrincipled", sizeof(node->idname));
-            node->custom1 = SHD_GLOSSY_MULTI_GGX;
+            node->custom1 = SHD_PRINCIPLED_MULTI_GGX;
             error |= NTREE_DOVERSION_TRANSPARENCY_EMISSION;
           }
         }
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 76d8207eead..49df30ce4a2 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1509,6 +1509,11 @@ typedef struct NodeCombSepColor {
 #define SHD_GLOSSY_ASHIKHMIN_SHIRLEY 3
 #define SHD_GLOSSY_MULTI_GGX 4
 
+/* principled bsdf mode
+ * Note: GGX and MULTI_GGX must align with SHD_GLOSSY for backwards compatibility */
+#define SHD_PRINCIPLED_GGX 2
+#define SHD_PRINCIPLED_MULTI_GGX 4
+
 /* vector transform */
 #define SHD_VECT_TRANSFORM_TYPE_VECTOR 0
 #define SHD_VECT_TRANSFORM_TYPE_POINT 1
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 386ef3f74a3..c1eb7004e9e 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -4662,13 +4662,8 @@ static EnumPropertyItem node_ies_mode_items[] = {
 };
 
 static const EnumPropertyItem node_principled_distribution_items[] = {
-    {SHD_GLOSSY_GGX, "GGX", 0, "GGX", ""},
-    {SHD_GLOSSY_MULTI_GGX,
-     "MULTI_GGX",
-     0,
-     "Multiscatter GGX",
-     "Slower than GGX but gives a more energy conserving results, which would otherwise be "
-     "visible as excessive darkening"},
+    {SHD_PRINCIPLED_GGX, "GGX", 0, "GGX", ""},
+    {SHD_PRINCIPLED_MULTI_GGX, "MULTI_GGX", 0, "Multiscatter GGX", ""},
     {0, NULL, 0, NULL, NULL},
 };
 
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc
index a63c7aede04..669f1d9663a 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc
@@ -115,7 +115,7 @@ static void node_shader_buts_principled(uiLayout *layout, bContext *UNUSED(C), P
 
 static void node_shader_init_principled(bNodeTree *UNUSED(ntree), bNode *node)
 {
-  node->custom1 = SHD_GLOSSY_GGX;
+  node->custom1 = SHD_PRINCIPLED_GGX;
   node->custom2 = SHD_SUBSURFACE_RANDOM_WALK;
 }
 
@@ -175,7 +175,7 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat,
     use_subsurf = GPU_material_sss_profile_create(mat, &socket_data->value[1]);
   }
 
-  float use_multi_scatter = (node->custom1 == SHD_GLOSSY_MULTI_GGX) ? 1.0f : 0.0f;
+  float use_multi_scatter = (node->custom1 != SHD_PRINCIPLED_GGX) ? 1.0f : 0.0f;
   float use_sss = (use_subsurf) ? 1.0f : 0.0f;
   float use_diffuse_f = (use_diffuse) ? 1.0f : 0.0f;
   float use_clear_f = (use_clear) ? 1.0f : 0.0f;
@@ -202,7 +202,7 @@ static void node_shader_update_principled(bNodeTree *ntree, bNode *node)
 
   LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
     if (STREQ(sock->name, "Transmission Roughness")) {
-      nodeSetSocketAvailability(ntree, sock, distribution == SHD_GLOSSY_GGX);
+      nodeSetSocketAvailability(ntree, sock, distribution == SHD_PRINCIPLED_GGX);
     }
 
     if (STR_ELEM(sock->name, "Subsurface IOR", "Subsurface Anisotropy")) {



More information about the Bf-blender-cvs mailing list