[Bf-blender-cvs] [5c5c09439ab] blender2.8: Clean node names and organize menus for eevee

Luca Rood noreply at git.blender.org
Tue Jun 20 18:41:10 CEST 2017


Commit: 5c5c09439abdf2f759fbc3c17a4e773b9005d77f
Author: Luca Rood
Date:   Tue Jun 20 14:33:13 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB5c5c09439abdf2f759fbc3c17a4e773b9005d77f

Clean node names and organize menus for eevee

This makes the node menus aware of the Cycles/Eevee distinction, and
only show the relevant nodes for the current engine. Names have also
been changed to accomodate for the new output node system.

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

M	release/scripts/startup/nodeitems_builtins.py
M	source/blender/blenkernel/BKE_node.h
M	source/blender/blenkernel/intern/node.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/editors/space_node/node_edit.c
M	source/blender/gpu/shaders/gpu_shader_material.glsl
M	source/blender/nodes/CMakeLists.txt
M	source/blender/nodes/NOD_shader.h
M	source/blender/nodes/NOD_static_types.h
R080	source/blender/nodes/shader/nodes/node_shader_output_metallic.c	source/blender/nodes/shader/nodes/node_shader_eevee_metallic.c
R080	source/blender/nodes/shader/nodes/node_shader_output_specular.c	source/blender/nodes/shader/nodes/node_shader_eevee_specular.c
M	source/blender/nodes/shader/nodes/node_shader_output_eevee_material.c

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

diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 59bf93696bc..f13222140b1 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -141,6 +141,20 @@ def object_shader_nodes_poll(context):
             snode.shader_type == 'OBJECT')
 
 
+def cycles_shader_nodes_poll(context):
+    return context.scene.render.engine == 'CYCLES'
+
+
+def object_cycles_shader_nodes_poll(context):
+    return (object_shader_nodes_poll(context) and
+            cycles_shader_nodes_poll(context))
+
+
+def object_eevee_shader_nodes_poll(context):
+    return (object_shader_nodes_poll(context) and
+            context.scene.render.engine == 'BLENDER_EEVEE')
+
+
 # All standard node categories currently used in nodes.
 
 shader_node_categories = [
@@ -216,36 +230,36 @@ shader_node_categories = [
         NodeItem("NodeGroupInput", poll=group_input_output_item_poll),
         ]),
     ShaderNewNodeCategory("SH_NEW_OUTPUT", "Output", items=[
-        NodeItem("ShaderNodeOutputMetallic", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeOutputSpecular", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeOutputMaterial", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeOutputEeveeMaterial", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeOutputLamp", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeOutputMaterial", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeOutputEeveeMaterial", poll=object_eevee_shader_nodes_poll),
+        NodeItem("ShaderNodeOutputLamp", poll=object_cycles_shader_nodes_poll),
         NodeItem("ShaderNodeOutputWorld", poll=world_shader_nodes_poll),
         NodeItem("ShaderNodeOutputLineStyle", poll=line_style_shader_nodes_poll),
         NodeItem("NodeGroupOutput", poll=group_input_output_item_poll),
         ]),
     ShaderNewNodeCategory("SH_NEW_SHADER", "Shader", items=[
-        NodeItem("ShaderNodeMixShader"),
-        NodeItem("ShaderNodeAddShader"),
-        NodeItem("ShaderNodeBsdfDiffuse", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfPrincipled", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfGlossy", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfTransparent", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfRefraction", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfGlass", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfTranslucent", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfAnisotropic", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfVelvet", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfToon", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeSubsurfaceScattering", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeEmission", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeBsdfHair", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeMixShader", poll=cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeAddShader", poll=cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfDiffuse", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfPrincipled", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfGlossy", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfTransparent", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfRefraction", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfGlass", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfTranslucent", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfAnisotropic", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfVelvet", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfToon", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeSubsurfaceScattering", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeEmission", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfHair", poll=object_cycles_shader_nodes_poll),
         NodeItem("ShaderNodeBackground", poll=world_shader_nodes_poll),
-        NodeItem("ShaderNodeAmbientOcclusion", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeHoldout", poll=object_shader_nodes_poll),
-        NodeItem("ShaderNodeVolumeAbsorption"),
-        NodeItem("ShaderNodeVolumeScatter"),
+        NodeItem("ShaderNodeAmbientOcclusion", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeHoldout", poll=object_cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeVolumeAbsorption", poll=cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeVolumeScatter", poll=cycles_shader_nodes_poll),
+        NodeItem("ShaderNodeEeveeMetallic", poll=object_eevee_shader_nodes_poll),
+        NodeItem("ShaderNodeEeveeSpecular", poll=object_eevee_shader_nodes_poll),
         ]),
     ShaderNewNodeCategory("SH_NEW_TEXTURE", "Texture", items=[
         NodeItem("ShaderNodeTexImage"),
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 44846a12961..a668ae9a7af 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -794,8 +794,8 @@ struct ShadeResult;
 #define SH_NODE_UVALONGSTROKE			191
 #define SH_NODE_TEX_POINTDENSITY		192
 #define SH_NODE_BSDF_PRINCIPLED         193
-#define SH_NODE_OUTPUT_METALLIC			194
-#define SH_NODE_OUTPUT_SPECULAR			195
+#define SH_NODE_EEVEE_METALLIC			194
+#define SH_NODE_EEVEE_SPECULAR			195
 #define SH_NODE_OUTPUT_EEVEE_MATERIAL	196
 
 /* custom defines options for Material node */
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 8d512f15949..8ccd652edd4 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -3587,11 +3587,11 @@ static void registerShaderNodes(void)
 	register_node_type_sh_add_shader();
 	register_node_type_sh_uvmap();
 	register_node_type_sh_uvalongstroke();
+	register_node_type_sh_eevee_metallic();
+	register_node_type_sh_eevee_specular();
 
 	register_node_type_sh_output_lamp();
 	register_node_type_sh_output_material();
-	register_node_type_sh_output_metallic();
-	register_node_type_sh_output_specular();
 	register_node_type_sh_output_eevee_material();
 	register_node_type_sh_output_world();
 	register_node_type_sh_output_linestyle();
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 97df428ee22..9379c605fe8 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -28,6 +28,8 @@
 /* allow readfile to use deprecated functionality */
 #define DNA_DEPRECATED_ALLOW
 
+#include <string.h>
+
 #include "DNA_object_types.h"
 #include "DNA_camera_types.h"
 #include "DNA_gpu_types.h"
@@ -47,12 +49,14 @@
 #include "BKE_layer.h"
 #include "BKE_main.h"
 #include "BKE_mesh.h"
+#include "BKE_node.h"
 #include "BKE_scene.h"
 #include "BKE_workspace.h"
 
 #include "BLI_listbase.h"
 #include "BLI_mempool.h"
 #include "BLI_string.h"
+#include "BLI_utildefines.h"
 
 #include "BLO_readfile.h"
 #include "readfile.h"
@@ -415,4 +419,25 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
 			}
 		}
 	}
+
+	{
+		{
+			/* Eevee shader nodes renamed because of the output node system.
+			 * Note that a new output node is not being added here, because it would be overkill
+			 * to handle this case in lib_verify_nodetree. */
+			FOREACH_NODETREE(main, ntree, id) {
+				if (ntree->type == NTREE_SHADER) {
+					for (bNode *node = ntree->nodes.first; node; node = node->next) {
+						if (node->type == SH_NODE_EEVEE_METALLIC && STREQ(node->idname, "ShaderNodeOutputMetallic")) {
+							BLI_strncpy(node->idname, "ShaderNodeEeveeMetallic", sizeof(node->idname));
+						}
+
+						if (node->type == SH_NODE_EEVEE_SPECULAR && STREQ(node->idname, "ShaderNodeOutputSpecular")) {
+							BLI_strncpy(node->idname, "ShaderNodeEeveeSpecular", sizeof(node->idname));
+						}
+					}
+				}
+			} FOREACH_NODETREE_END
+		}
+	}
 }
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 9ad40ea802e..33382af9087 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -400,7 +400,7 @@ void ED_node_shader_default(const bContext *C, ID *id)
 
 			if (BKE_scene_uses_blender_eevee(scene)) {
 				output_type = SH_NODE_OUTPUT_EEVEE_MATERIAL;
-				shader_type = SH_NODE_OUTPUT_METALLIC;
+				shader_type = SH_NODE_EEVEE_METALLIC;
 			}
 			else if (BKE_scene_use_new_shading_nodes(scene)) {
 				output_type = SH_NODE_OUTPUT_MATERIAL;
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index f423e541dc2..8b2e42a9e65 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -3875,7 +3875,7 @@ void world_normals_get(out vec3 N)
 	N = gl_FrontFacing ? worldNormal : -worldNormal;
 }
 
-void node_output_metallic(
+void node_eevee_metallic(
         vec4 basecol, float metallic, float specular, float roughness, vec4 emissive, float transp, vec3 normal,
         float clearcoat, float clearcoat_roughness, vec3 clearcoat_normal,
         float occlusion, out vec4 result)
@@ -3886,7 +3886,7 @@ void node_output_metallic(
 	result = vec4(eevee_surface_lit(normal, diffuse.rgb, f0.rgb, roughness, occlusion) + emissive.rgb, 1.0 - transp);
 }
 
-void node_output_specular(
+void node_eevee_specular(
         vec4 diffuse, vec4 specular, float roughness, vec4 emissive, float transp, vec3 normal,
         float clearcoat, float clearcoat_roughness, vec3 clearcoat_normal,
         float occlusion, out vec4 result)
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 690011ec2aa..2c46791ae18 100644
--- a/source/ble

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list