Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Jolly <charlie>2021-12-14 00:20:07 +0300
committerCharlie Jolly <mistajolly@gmail.com>2021-12-14 21:27:01 +0300
commit5b61737a8f41688699fd1d711a25b7cea86d1530 (patch)
treefcea899c2663e666a6b2e9f15b31dfe2064c7a42 /intern/cycles/blender/shader.cpp
parent44232a2ce6d8762f10366f6bb660a37ce3e1acbd (diff)
Nodes: Add vector support to Map Range node
This replaces lost functionality from the old GN Attribute Map Range node. This also adds vector support to the shader version of the node. Notes: This breaks forward compatibility as this node now uses data storage. Reviewed By: HooglyBoogly, brecht Differential Revision: https://developer.blender.org/D12760
Diffstat (limited to 'intern/cycles/blender/shader.cpp')
-rw-r--r--intern/cycles/blender/shader.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/intern/cycles/blender/shader.cpp b/intern/cycles/blender/shader.cpp
index 0f17834906d..70acfce6891 100644
--- a/intern/cycles/blender/shader.cpp
+++ b/intern/cycles/blender/shader.cpp
@@ -378,10 +378,19 @@ static ShaderNode *add_node(Scene *scene,
}
else if (b_node.is_a(&RNA_ShaderNodeMapRange)) {
BL::ShaderNodeMapRange b_map_range_node(b_node);
- MapRangeNode *map_range_node = graph->create_node<MapRangeNode>();
- map_range_node->set_clamp(b_map_range_node.clamp());
- map_range_node->set_range_type((NodeMapRangeType)b_map_range_node.interpolation_type());
- node = map_range_node;
+ if (b_map_range_node.data_type() == BL::ShaderNodeMapRange::data_type_FLOAT_VECTOR) {
+ VectorMapRangeNode *vector_map_range_node = graph->create_node<VectorMapRangeNode>();
+ vector_map_range_node->set_use_clamp(b_map_range_node.clamp());
+ vector_map_range_node->set_range_type(
+ (NodeMapRangeType)b_map_range_node.interpolation_type());
+ node = vector_map_range_node;
+ }
+ else {
+ MapRangeNode *map_range_node = graph->create_node<MapRangeNode>();
+ map_range_node->set_clamp(b_map_range_node.clamp());
+ map_range_node->set_range_type((NodeMapRangeType)b_map_range_node.interpolation_type());
+ node = map_range_node;
+ }
}
else if (b_node.is_a(&RNA_ShaderNodeClamp)) {
BL::ShaderNodeClamp b_clamp_node(b_node);