31 {0,
nullptr, 0,
nullptr,
nullptr},
37 .default_value({0.0f, 0.0f, 0.0f, 1.0f})
38 .structure_type(StructureType::Dynamic);
52 constexpr static float luminance_coefficients_bt709_[3] = {0.2126f, 0.7152f, 0.0722f};
59 if (
get_input(
"Image").is_single_value()) {
110 float luminance_coefficients[3];
137 float luminance_coefficients[3];
150 return std::sqrt(
sum / (
input.domain().size.x *
input.domain().size.y));
167 float luminance_coefficients[3];
181 const MenuValue menu_value =
input.get_single_value_default(default_menu_value);
201 ntype.
ui_description =
"Compute average and standard deviation of pixel values";
204 ntype.
declare = file_ns::cmp_node_levels_declare;
#define NODE_CLASS_CONVERTER
#define CMP_NODE_VIEW_LEVELS
@ CMP_NODE_LEVLES_LUMINANCE
@ CMP_NODE_LEVLES_LUMINANCE_BT709
BLI_INLINE void IMB_colormanagement_get_luminance_coefficients(float r_rgb[3])
#define NOD_REGISTER_NODE(REGISTER_FUNC)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static T sum(const btAlignedObjectArray< T > &items)
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
Result & get_input(StringRef identifier) const
void set_single_value(const T &value)
void allocate_single_value()
float compute_standard_deviation(float mean)
CMPNodeLevelsChannel get_channel()
void execute_single_value()
float compute_sum_squared_difference(float subtrahend)
NodeOperation(Context &context, DNode node)
void node_register_type(bNodeType &ntype)
float sum_red(Context &context, const Result &result)
float sum_red_squared_difference(Context &context, const Result &result, const float subtrahend)
float sum_luminance(Context &context, const Result &result, const float3 &luminance_coefficients)
float sum_blue_squared_difference(Context &context, const Result &result, const float subtrahend)
float sum_luminance_squared_difference(Context &context, const Result &result, const float3 &luminance_coefficients, const float subtrahend)
float sum_green_squared_difference(Context &context, const Result &result, const float subtrahend)
float sum_green(Context &context, const Result &result)
float sum_blue(Context &context, const Result &result)
T dot(const QuaternionBase< T > &a, const QuaternionBase< T > &b)
static void cmp_node_levels_declare(NodeDeclarationBuilder &b)
static const EnumPropertyItem channel_items[]
static NodeOperation * get_compositor_operation(Context &context, DNode node)
VecBase< float, 3 > float3
static void register_node_type_cmp_view_levels()
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
std::string ui_description
NodeGetCompositorOperationFunction get_compositor_operation
const char * enum_name_legacy
NodeDeclareFunction declare