diff options
author | Charlie Jolly <charlie> | 2021-05-07 17:25:32 +0300 |
---|---|---|
committer | Charlie Jolly <mistajolly@gmail.com> | 2021-05-07 17:27:15 +0300 |
commit | 7d90b0ab11ded1fc06e021b38820db73dbbd66b5 (patch) | |
tree | 8021cf7c8007f435311b073d079d1bec4531085c /source/blender/nodes | |
parent | 8e3a73bf811adec7859bfee59625a6860779ba8b (diff) |
Geometry Nodes: Parallelize Attribute Curve Map node
This adds `parallel_for` to the Attribute Curve Map node to improve performance.
Grain size set to 512.
Reviewed By: HooglyBoogly
Differential Revision: https://developer.blender.org/D11194
Diffstat (limited to 'source/blender/nodes')
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc index ba2e5b08352..2fc86269797 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc @@ -15,6 +15,7 @@ */ #include "BLI_blenlib.h" +#include "BLI_task.hh" #include "BKE_colortools.h" @@ -143,9 +144,11 @@ static void execute_on_component(const GeoNodeExecParams ¶ms, GeometryCompon GVArray_Typed<float> attribute_in = component.attribute_get_for_read<float>( input_name, result_domain, float(0.0f)); MutableSpan<float> results = attribute_result.as_span<float>(); - for (const int i : IndexRange(attribute_in.size())) { - results[i] = BKE_curvemapping_evaluateF(cumap, 3, attribute_in[i]); - } + parallel_for(IndexRange(attribute_in.size()), 512, [&](IndexRange range) { + for (const int i : range) { + results[i] = BKE_curvemapping_evaluateF(cumap, 3, attribute_in[i]); + } + }); break; } case CD_PROP_FLOAT3: { @@ -153,9 +156,11 @@ static void execute_on_component(const GeoNodeExecParams ¶ms, GeometryCompon GVArray_Typed<float3> attribute_in = component.attribute_get_for_read<float3>( input_name, result_domain, float3(0.0f)); MutableSpan<float3> results = attribute_result.as_span<float3>(); - for (const int i : IndexRange(attribute_in.size())) { - BKE_curvemapping_evaluate3F(cumap, results[i], attribute_in[i]); - } + parallel_for(IndexRange(attribute_in.size()), 512, [&](IndexRange range) { + for (const int i : range) { + BKE_curvemapping_evaluate3F(cumap, results[i], attribute_in[i]); + } + }); break; } case CD_PROP_COLOR: { @@ -163,9 +168,11 @@ static void execute_on_component(const GeoNodeExecParams ¶ms, GeometryCompon GVArray_Typed<Color4f> attribute_in = component.attribute_get_for_read<Color4f>( input_name, result_domain, Color4f(0.0f, 0.0f, 0.0f, 1.0f)); MutableSpan<Color4f> results = attribute_result.as_span<Color4f>(); - for (const int i : IndexRange(attribute_in.size())) { - BKE_curvemapping_evaluateRGBF(cumap, results[i], attribute_in[i]); - } + parallel_for(IndexRange(attribute_in.size()), 512, [&](IndexRange range) { + for (const int i : range) { + BKE_curvemapping_evaluateRGBF(cumap, results[i], attribute_in[i]); + } + }); break; } default: { |