diff options
author | Johnny Matthews <johnny.matthews@gmail.com> | 2021-12-29 19:24:29 +0300 |
---|---|---|
committer | Johnny Matthews <johnny.matthews@gmail.com> | 2021-12-29 19:25:39 +0300 |
commit | a836ded9902d67359ea94a03c45de7edd4f826fb (patch) | |
tree | 9e30821e1799bf9b0e3fc54b1880d75e894b1327 /source/blender/blenlib/BLI_hash.hh | |
parent | 279085e18e69735b30dae0e612cb7a160a734982 (diff) |
Geometry Nodes: Accumulate Fields Node
This function node creates a running total of a given Vector, Float, or
Int field.
Inputs:
- Value: The field to be accumulated
- Group Index: The values of this input are used to aggregate the input
into separate 'bins', creating multiple accumulations.
Outputs:
- Leading and Trailing: Returns the running totals starting
at either the first value of each accumulations or 0 respectively.
- Total: Returns the total accumulation at all positions of the field.
There's currently plenty of duplicate work happening when multiple outputs
are used that could be optimized by a future refactor to field inputs.
Differential Revision: https://developer.blender.org/D12743
Diffstat (limited to 'source/blender/blenlib/BLI_hash.hh')
-rw-r--r-- | source/blender/blenlib/BLI_hash.hh | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_hash.hh b/source/blender/blenlib/BLI_hash.hh index 11ff7d040aa..9132aacf7b9 100644 --- a/source/blender/blenlib/BLI_hash.hh +++ b/source/blender/blenlib/BLI_hash.hh @@ -243,6 +243,16 @@ uint64_t get_default_hash_3(const T1 &v1, const T2 &v2, const T3 &v3) return h1 ^ (h2 * 19349669) ^ (h3 * 83492791); } +template<typename T1, typename T2, typename T3, typename T4> +uint64_t get_default_hash_4(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4) +{ + const uint64_t h1 = get_default_hash(v1); + const uint64_t h2 = get_default_hash(v2); + const uint64_t h3 = get_default_hash(v3); + const uint64_t h4 = get_default_hash(v4); + return h1 ^ (h2 * 19349669) ^ (h3 * 83492791) ^ (h4 * 3632623); +} + template<typename T> struct DefaultHash<std::unique_ptr<T>> { uint64_t operator()(const std::unique_ptr<T> &value) const { |