[Bf-blender-cvs] [a42f307915e] master: Shader Nodes: Use layers from evaluated mesh
Martijn Versteegh
noreply at git.blender.org
Thu Jan 26 11:49:09 CET 2023
Commit: a42f307915e49500ca7c2e18e2092dcef85f7f6e
Author: Martijn Versteegh
Date: Mon Jan 23 19:59:46 2023 +0100
Branches: master
https://developer.blender.org/rBa42f307915e49500ca7c2e18e2092dcef85f7f6e
Shader Nodes: Use layers from evaluated mesh
The list was populated from the base (unevaluated) object, but now that
Geometry nodes can generate various layers this is impractical..
Differential Revision: https://developer.blender.org/D17093
===================================================================
M source/blender/nodes/shader/nodes/node_shader_normal_map.cc
M source/blender/nodes/shader/nodes/node_shader_tangent.cc
M source/blender/nodes/shader/nodes/node_shader_uvmap.cc
M source/blender/nodes/shader/nodes/node_shader_vertex_color.cc
===================================================================
diff --git a/source/blender/nodes/shader/nodes/node_shader_normal_map.cc b/source/blender/nodes/shader/nodes/node_shader_normal_map.cc
index 0bc1318a1f6..a29faff2093 100644
--- a/source/blender/nodes/shader/nodes/node_shader_normal_map.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_normal_map.cc
@@ -6,6 +6,8 @@
#include "BKE_context.h"
#include "BKE_node_runtime.hh"
+#include "DEG_depsgraph_query.h"
+
#include "UI_interface.h"
#include "UI_resources.h"
@@ -26,7 +28,11 @@ static void node_shader_buts_normal_map(uiLayout *layout, bContext *C, PointerRN
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
- PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
+ PointerRNA eval_obptr;
+
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ DEG_get_evaluated_rna_pointer(depsgraph, &obptr, &eval_obptr);
+ PointerRNA dataptr = RNA_pointer_get(&eval_obptr, "data");
uiItemPointerR(layout, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
}
else {
diff --git a/source/blender/nodes/shader/nodes/node_shader_tangent.cc b/source/blender/nodes/shader/nodes/node_shader_tangent.cc
index 9b09eb09bba..cb0c3f34e40 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tangent.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_tangent.cc
@@ -5,6 +5,8 @@
#include "BKE_context.h"
+#include "DEG_depsgraph_query.h"
+
#include "UI_interface.h"
#include "UI_resources.h"
@@ -29,7 +31,11 @@ static void node_shader_buts_tangent(uiLayout *layout, bContext *C, PointerRNA *
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
- PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
+ PointerRNA eval_obptr;
+
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ DEG_get_evaluated_rna_pointer(depsgraph, &obptr, &eval_obptr);
+ PointerRNA dataptr = RNA_pointer_get(&eval_obptr, "data");
uiItemPointerR(row, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
}
else {
diff --git a/source/blender/nodes/shader/nodes/node_shader_uvmap.cc b/source/blender/nodes/shader/nodes/node_shader_uvmap.cc
index 483e06f1192..de8221e3e97 100644
--- a/source/blender/nodes/shader/nodes/node_shader_uvmap.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_uvmap.cc
@@ -7,6 +7,8 @@
#include "DNA_customdata_types.h"
+#include "DEG_depsgraph_query.h"
+
#include "UI_interface.h"
#include "UI_resources.h"
@@ -25,7 +27,11 @@ static void node_shader_buts_uvmap(uiLayout *layout, bContext *C, PointerRNA *pt
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
- PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
+ PointerRNA eval_obptr;
+
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ DEG_get_evaluated_rna_pointer(depsgraph, &obptr, &eval_obptr);
+ PointerRNA dataptr = RNA_pointer_get(&eval_obptr, "data");
uiItemPointerR(layout, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
}
}
diff --git a/source/blender/nodes/shader/nodes/node_shader_vertex_color.cc b/source/blender/nodes/shader/nodes/node_shader_vertex_color.cc
index 8f7e30b99df..0e0f9496851 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vertex_color.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_vertex_color.cc
@@ -5,6 +5,8 @@
#include "BKE_context.h"
+#include "DEG_depsgraph_query.h"
+
#include "UI_interface.h"
#include "UI_resources.h"
@@ -20,8 +22,11 @@ static void node_shader_buts_vertex_color(uiLayout *layout, bContext *C, Pointer
{
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
- PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
+ PointerRNA eval_obptr;
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ DEG_get_evaluated_rna_pointer(depsgraph, &obptr, &eval_obptr);
+ PointerRNA dataptr = RNA_pointer_get(&eval_obptr, "data");
uiItemPointerR(layout, ptr, "layer_name", &dataptr, "color_attributes", "", ICON_GROUP_VCOL);
}
else {
More information about the Bf-blender-cvs
mailing list