Blender V4.3
BLI_math_interp.hh File Reference

Go to the source code of this file.

Namespaces

namespace  blender
 
namespace  blender::math
 

Macros

#define EWA_MAXIDX   255
 

Typedefs

using ewa_filter_read_pixel_cb = void (*)(void *userdata, int x, int y, float result[4])
 

Functions

void blender::math::interpolate_nearest_border_byte (const uchar *buffer, uchar *output, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_nearest_border_byte (const uchar *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_nearest_border_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
float4 blender::math::interpolate_nearest_border_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_nearest_byte (const uchar *buffer, uchar *output, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_nearest_byte (const uchar *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_nearest_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
float4 blender::math::interpolate_nearest_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_nearest_wrap_byte (const uchar *buffer, uchar *output, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_nearest_wrap_byte (const uchar *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_nearest_wrap_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
float4 blender::math::interpolate_nearest_wrap_fl (const float *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)
 
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)
 
uchar4 blender::math::interpolate_bilinear_byte (const uchar *buffer, int width, int height, 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)
 
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)
 
void blender::math::interpolate_bilinear_wrap_fl (const float *buffer, float *output, int width, int height, int components, float u, float v, bool wrap_x, bool wrap_y)
 
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)
 
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)
 
void BLI_ewa_imp2radangle (float A, float B, float C, float F, float *a, float *b, float *th, float *ecc)
 
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])
 

Variables

const float EWA_WTS [EWA_MAXIDX+1]
 

Detailed Description

2D image sampling with filtering functions.

All functions take (u, v) texture coordinate, non-normalized (i.e. ranging from (0,0) to (width,height) over the image).

Any filtering done on texel values just blends them without color space or gamma conversions.

Definition in file BLI_math_interp.hh.

Macro Definition Documentation

◆ EWA_MAXIDX

#define EWA_MAXIDX   255

Definition at line 304 of file BLI_math_interp.hh.

Referenced by feline_eval().

Typedef Documentation

◆ ewa_filter_read_pixel_cb

using ewa_filter_read_pixel_cb = void (*)(void *userdata, int x, int y, float result[4])

Definition at line 307 of file BLI_math_interp.hh.

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 710 of file math_interp.cc.

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

Referenced by ewa_eval(), and blender::compositor::MemoryBuffer::read_elem_filtered().

◆ 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 680 of file math_interp.cc.

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

Referenced by BLI_ewa_filter(), and imagewraposa_aniso().

Variable Documentation

◆ EWA_WTS

const float EWA_WTS[EWA_MAXIDX+1]
extern

Definition at line 629 of file math_interp.cc.

Referenced by BLI_ewa_filter(), and feline_eval().