Fix #142202: missing anonymous attribute propagation when using some field nodes

Some fields were missing `for_each_field_input_recursive` implementations which
are required for anonymous attribute propagation to work.

Pull Request: https://projects.blender.org/blender/blender/pulls/143031
This commit is contained in:
Jacques Lucke
2025-07-24 10:16:46 +02:00
parent ea9b520a39
commit df625835c4
4 changed files with 30 additions and 0 deletions

View File

@@ -259,6 +259,12 @@ class AccumulateFieldInput final : public bke::GeometryFieldInput {
return attributes.adapt_domain(std::move(g_output), source_domain_, context.domain());
}
void for_each_field_input_recursive(FunctionRef<void(const FieldInput &)> fn) const final
{
input_.node().for_each_field_input_recursive(fn);
group_index_.node().for_each_field_input_recursive(fn);
}
uint64_t hash() const override
{
return get_default_hash(input_, group_index_, source_domain_, accumulation_mode_);
@@ -348,6 +354,12 @@ class TotalFieldInput final : public bke::GeometryFieldInput {
return attributes.adapt_domain(std::move(g_outputs), source_domain_, context.domain());
}
void for_each_field_input_recursive(FunctionRef<void(const FieldInput &)> fn) const final
{
input_.node().for_each_field_input_recursive(fn);
group_index_.node().for_each_field_input_recursive(fn);
}
uint64_t hash() const override
{
return get_default_hash(input_, group_index_, source_domain_);

View File

@@ -243,6 +243,12 @@ class FieldAverageInput final : public bke::GeometryFieldInput {
return attributes.adapt_domain(std::move(g_outputs), source_domain_, context.domain());
}
void for_each_field_input_recursive(FunctionRef<void(const FieldInput &)> fn) const final
{
input_.node().for_each_field_input_recursive(fn);
group_index_.node().for_each_field_input_recursive(fn);
}
uint64_t hash() const override
{
return get_default_hash(input_, group_index_, source_domain_, operation_);

View File

@@ -229,6 +229,12 @@ class FieldMinMaxInput final : public bke::GeometryFieldInput {
return attributes.adapt_domain(std::move(g_outputs), source_domain_, context.domain());
}
void for_each_field_input_recursive(FunctionRef<void(const FieldInput &)> fn) const final
{
input_.node().for_each_field_input_recursive(fn);
group_index_.node().for_each_field_input_recursive(fn);
}
uint64_t hash() const override
{
return get_default_hash(input_, group_index_, source_domain_, operation_);

View File

@@ -244,6 +244,12 @@ class FieldVarianceInput final : public bke::GeometryFieldInput {
return attributes.adapt_domain(std::move(g_outputs), source_domain_, context.domain());
}
void for_each_field_input_recursive(FunctionRef<void(const FieldInput &)> fn) const final
{
input_.node().for_each_field_input_recursive(fn);
group_index_.node().for_each_field_input_recursive(fn);
}
uint64_t hash() const override
{
return get_default_hash(input_, group_index_, source_domain_, operation_);