Blender V5.0
math_interp.cc File Reference
#include <cmath>
#include <cstring>
#include "BLI_math_base.h"
#include "BLI_math_base.hh"
#include "BLI_math_interp.hh"
#include "BLI_math_vector.h"
#include "BLI_math_vector_types.hh"
#include "BLI_simd.hh"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::math

Macros

#define EWA_MAXIDX   255

Enumerations

enum class  blender::math::eCubicFilter { blender::math::BSpline , blender::math::Mitchell }

Functions

BLI_INLINE int blender::math::wrap_coord (float u, int size, InterpWrapMode wrap)
void blender::math::interpolate_nearest_wrapmode_fl (const float *buffer, float *output, int width, int height, int components, float u, float v, InterpWrapMode wrap_u, InterpWrapMode wrap_v)
template<enum eCubicFilter filter>
static float4 blender::math::cubic_filter_coefficients (float f)
template<typename T, eCubicFilter filter>
BLI_INLINE void blender::math::bicubic_interpolation (const T *src_buffer, T *output, int width, int height, int components, float u, float v, InterpWrapMode wrap_u, InterpWrapMode wrap_v)
BLI_INLINE void blender::math::bilinear_fl_impl (const float *buffer, float *output, int width, int height, int components, float u, float v, InterpWrapMode wrap_x, InterpWrapMode wrap_y)
template<bool border>
BLI_INLINE uchar4 blender::math::bilinear_byte_impl (const uchar *buffer, int width, int height, float u, float v)
uchar4 blender::math::interpolate_bilinear_border_byte (const uchar *buffer, int width, int height, float u, float v)
uchar4 blender::math::interpolate_bilinear_byte (const uchar *buffer, int width, int height, float u, float v)
float4 blender::math::interpolate_bilinear_border_fl (const float *buffer, int width, int height, float u, float v)
void blender::math::interpolate_bilinear_border_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
float4 blender::math::interpolate_bilinear_fl (const float *buffer, int width, int height, float u, float v)
void blender::math::interpolate_bilinear_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
void blender::math::interpolate_bilinear_wrapmode_fl (const float *buffer, float *output, int width, int height, int components, float u, float v, InterpWrapMode wrap_u, InterpWrapMode wrap_v)
uchar4 blender::math::interpolate_bilinear_wrap_byte (const uchar *buffer, int width, int height, float u, float v)
float4 blender::math::interpolate_bilinear_wrap_fl (const float *buffer, int width, int height, float u, float v)
uchar4 blender::math::interpolate_cubic_bspline_byte (const uchar *buffer, int width, int height, float u, float v)
float4 blender::math::interpolate_cubic_bspline_fl (const float *buffer, int width, int height, float u, float v)
void blender::math::interpolate_cubic_bspline_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
void blender::math::interpolate_cubic_bspline_wrapmode_fl (const float *buffer, float *output, int width, int height, int components, float u, float v, InterpWrapMode wrap_u, InterpWrapMode wrap_v)
uchar4 blender::math::interpolate_cubic_mitchell_byte (const uchar *buffer, int width, int height, float u, float v)
float4 blender::math::interpolate_cubic_mitchell_fl (const float *buffer, int width, int height, float u, float v)
void blender::math::interpolate_cubic_mitchell_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
static void radangle2imp (float a2, float b2, float th, float *A, float *B, float *C, float *F)
void BLI_ewa_imp2radangle (float A, float B, float C, float F, float *a, float *b, float *th, float *ecc)
void BLI_ewa_filter (const int width, const int height, const bool intpol, const bool use_alpha, const float uv[2], const float du[2], const float dv[2], ewa_filter_read_pixel_cb read_pixel_cb, void *userdata, float result[4])

Variables

const float EWA_WTS [EWA_MAXIDX+1]

Macro Definition Documentation

◆ EWA_MAXIDX

#define EWA_MAXIDX   255

Definition at line 766 of file math_interp.cc.

Function Documentation

◆ BLI_ewa_filter()

void BLI_ewa_filter ( int width,
int height,
bool intpol,
bool use_alpha,
const float uv[2],
const float du[2],
const float dv[2],
ewa_filter_read_pixel_cb read_pixel_cb,
void * userdata,
float result[4] )

TODO(sergey): Consider making this function inlined, so the pixel read callback could also be inlined in order to avoid per-pixel function calls.

Definition at line 848 of file math_interp.cc.

References A, B, b, BLI_ewa_imp2radangle(), C, ceilf, EWA_MAXIDX, EWA_WTS, F, float, floorf, madd_v3_v3fl(), mul_v3_fl(), radangle2imp(), result, sqrtf, U, UNUSED_VARS, V, v, v2, and zero_v4().

Referenced by ewa_eval(), blender::compositor::Result::sample_ewa_extended(), and blender::compositor::Result::sample_ewa_zero().

◆ BLI_ewa_imp2radangle()

void BLI_ewa_imp2radangle ( float A,
float B,
float C,
float F,
float * a,
float * b,
float * th,
float * ecc )

Definition at line 818 of file math_interp.cc.

References A, atan2f, B, b, C, F, float, M_PI, and sqrtf.

Referenced by BLI_ewa_filter().

◆ radangle2imp()

void radangle2imp ( float a2,
float b2,
float th,
float * A,
float * B,
float * C,
float * F )
static

Definition at line 807 of file math_interp.cc.

References A, B, C, cosf, F, and sinf.

Referenced by BLI_ewa_filter().

Variable Documentation

◆ EWA_WTS

const float EWA_WTS[EWA_MAXIDX+1]

Definition at line 767 of file math_interp.cc.

Referenced by BLI_ewa_filter().