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-05-07 17:25:32 +0300
committerCharlie Jolly <mistajolly@gmail.com>2021-05-07 17:27:15 +0300
commit7d90b0ab11ded1fc06e021b38820db73dbbd66b5 (patch)
tree8021cf7c8007f435311b073d079d1bec4531085c
parent8e3a73bf811adec7859bfee59625a6860779ba8b (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
m---------release/datafiles/locale0
m---------release/scripts/addons0
m---------release/scripts/addons_contrib0
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_attribute_curve_map.cc25
4 files changed, 16 insertions, 9 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale
-Subproject f7b706dd6434db2d752f47c4b8c3148b2990fd7
+Subproject 2cef4877edc40875978c4e95322bb5193f5815b
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 4cb833e84acfd2be5fa08ce75118ce9cb60643b
+Subproject bcd08a9506d33bdd7358201031b04d041ef22d9
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
-Subproject 8970953d4a8a4ea3bf77c66370c817ed0cf1308
+Subproject f948f658ba33eb670a65e0bba058d43138abea7
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 &params, 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 &params, 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 &params, 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: {