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 { _______________________________________________ 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