83 const std::shared_ptr<const FieldInputs> &
field_inputs()
const;
107 return node_ !=
nullptr;
114 return *
a.node_ == *
b.node_ &&
a.node_output_index_ ==
b.node_output_index_;
198 static constexpr
bool is_field_v = std::is_base_of_v<detail::TypedFieldBase, T> &&
199 !std::is_same_v<detail::TypedFieldBase, T>;
209 std::shared_ptr<const MultiFunction> owned_function_;
225 static std::shared_ptr<FieldOperation>
Create(std::shared_ptr<const MultiFunction>
function,
321 struct OutputPointerInfo {
335 bool is_evaluated_ =
false;
368 selection_field_ = std::move(selection);
414 output_pointer_infos_.
append(OutputPointerInfo{
434 return evaluated_varrays_[field_index];
549 return (
bool)this->
field;
602 return this == &other;
607 return a.is_equal_to(
b);
633 int output_counter = 0;
637 if (output_counter == output_index) {
644 return CPPType::get<float>();
#define BLI_assert_unreachable()
#define UNUSED_VARS_NDEBUG(...)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
VArray< T > typed() const
int64_t append_and_get_index(const T &value)
void append(const T &value)
FieldConstant(const CPPType &type, const void *value)
const CPPType & type() const
const CPPType & output_cpp_type(int output_index) const override
virtual ~FieldContext()=default
virtual GVArray get_varray_for_input(const FieldInput &field_input, IndexMask mask, ResourceScope &scope) const
VArray< T > get_evaluated(const int field_index)
IndexMask get_evaluated_selection_as_mask()
FieldEvaluator(const FieldContext &context, const int64_t size)
FieldEvaluator(const FieldContext &context, const IndexMask *mask)
void set_selection(Field< bool > selection)
int add(GField field, GVArray *varray_ptr)
IndexMask get_evaluated_as_mask(int field_index)
int add(Field< T > field, VArray< T > *varray_ptr)
int add_with_destination(Field< T > field, MutableSpan< T > dst)
const GVArray & get_evaluated(const int field_index) const
int add_with_destination(GField field, GVMutableArray dst)
int add_with_destination(Field< T > field, VMutableArray< T > dst)
FieldNodeType node_type() const
std::shared_ptr< const FieldInputs > field_inputs_
virtual bool is_equal_to(const FieldNode &other) const
virtual const CPPType & output_cpp_type(int output_index) const =0
virtual uint64_t hash() const
FieldNode(FieldNodeType node_type)
bool depends_on_input() const
const std::shared_ptr< const FieldInputs > & field_inputs() const
const MultiFunction & multi_function() const
static std::shared_ptr< FieldOperation > Create(const MultiFunction &function, Vector< GField > inputs={})
Span< GField > inputs() const
static std::shared_ptr< FieldOperation > Create(std::shared_ptr< const MultiFunction > function, Vector< GField > inputs={})
const CPPType & output_cpp_type(int output_index) const override
FieldOperation(std::shared_ptr< const MultiFunction > function, Vector< GField > inputs={})
Field(std::shared_ptr< FieldNode > node, const int node_output_index=0)
GFieldBase(NodePtr node, const int node_output_index)
const FieldNode & node() const
const CPPType & cpp_type() const
int node_output_index() const
friend bool operator==(const GFieldBase &a, const GFieldBase &b)
GFieldRef(const FieldNode &node, const int node_output_index=0)
GFieldRef(const GField &field)
GField(std::shared_ptr< FieldNode > node, const int node_output_index=0)
const CPPType & single_type() const
MFDataType data_type() const
MFParamType param_type(int param_index) const
IndexRange param_indices() const
SyclQueue void void size_t num_bytes void
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
bool operator==(const FieldNode &a, const FieldNode &b)
bool operator!=(const FieldNode &a, const FieldNode &b)
GField make_constant_field(const CPPType &type, const void *value)
GField make_field_constant_if_possible(GField field)
Vector< GVArray > evaluate_fields(ResourceScope &scope, Span< GFieldRef > fields_to_evaluate, IndexMask mask, const FieldContext &context, Span< GVMutableArray > dst_varrays={})
Field< bool > invert_boolean_field(const Field< bool > &field)
void evaluate_constant_field(const GField &field, void *r_value)
static constexpr bool is_field_v
uint64_t get_default_hash(const T &v)
uint64_t get_default_hash_2(const T1 &v1, const T2 &v2)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
unsigned __int64 uint64_t
Field< T > as_field() const
ValueOrField(Field< T > field)