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:
authorHans Goudey <h.goudey@me.com>2022-03-30 18:37:39 +0300
committerHans Goudey <h.goudey@me.com>2022-03-30 18:37:39 +0300
commit60a6fbf5b59911cba54d30bd1105626fcc577875 (patch)
treeaa7dbda40335765f75ebc1112a0ad8176dd3eaef /source/blender/blenlib/BLI_generic_span.hh
parentba28c10199b363df469cf70f2e9436be90deb258 (diff)
Curves: Port resample node to the new data-block
This commit re-implements the resample curve node to use the new curves type instead of CurveEval. The largest changes come from the need to keep track of offsets into the point attribute arrays, and the fact that the attributes for all curves are stored in a flat array. Another difference is that a bit more of the logic is handled by building of the field network inputs. The idea is to let the field evaluator handle potential optimizations while making the rest of the code simpler. When resampling 1 million small poly curves,the node is about 6 times faster compared to 3.1 on my hardware (500ms to 80ms). This also adds support for Catmull Rom curve inputs. Differential Revision: https://developer.blender.org/D14435
Diffstat (limited to 'source/blender/blenlib/BLI_generic_span.hh')
-rw-r--r--source/blender/blenlib/BLI_generic_span.hh12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_generic_span.hh b/source/blender/blenlib/BLI_generic_span.hh
index f4f93735e06..4c0bfc83ba8 100644
--- a/source/blender/blenlib/BLI_generic_span.hh
+++ b/source/blender/blenlib/BLI_generic_span.hh
@@ -164,6 +164,18 @@ class GMutableSpan {
{
return this->slice(range.start(), range.size());
}
+
+ /**
+ * Copy all values from another span into this span. This invokes undefined behavior when the
+ * destination contains uninitialized data and T is not trivially copy constructible.
+ * The size of both spans is expected to be the same.
+ */
+ void copy_from(GSpan values)
+ {
+ BLI_assert(type_ == &values.type());
+ BLI_assert(size_ == values.size());
+ type_->copy_assign_n(values.data(), data_, size_);
+ }
};
} // namespace blender