Blender  V3.3
Macros | Functions
math_matrix.h File Reference

Go to the source code of this file.

Macros

#define MAT(A, size, row, col)   A[(row) * (size) + (col)]
 
#define MATS(A, n, r, c, s)   MAT(A, n, r, c)
 
#define MATHS(A, r, c, s)   A[(r) * ((r) + 1) / 2 + (c)]
 
#define VECS(V, i, s)   V[i]
 
#define ROT(M, r1, c1, r2, c2, stride)
 

Functions

ccl_device_inline void math_vector_zero (ccl_private float *v, int n)
 
ccl_device_inline void math_matrix_zero (ccl_private float *A, int n)
 
ccl_device_inline void math_vector_add (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vector_mul (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vector_mul_strided (ccl_global float *a, ccl_private const float *ccl_restrict b, int astride, int n)
 
ccl_device_inline void math_vector_scale (ccl_private float *a, float b, int n)
 
ccl_device_inline void math_vector_max (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vec3_add (ccl_private float3 *v, int n, ccl_private float *x, float3 w)
 
ccl_device_inline void math_vec3_add_strided (ccl_global float3 *v, int n, ccl_private float *x, float3 w, int stride)
 
ccl_device_inline void math_trimatrix_add_diagonal (ccl_global float *A, int n, float val, int stride)
 
ccl_device_inline void math_matrix_add_gramian (ccl_private float *A, int n, ccl_private const float *ccl_restrict v, float weight)
 
ccl_device_inline void math_trimatrix_add_gramian_strided (ccl_global float *A, int n, ccl_private const float *ccl_restrict v, float weight, int stride)
 
ccl_device_inline void math_trimatrix_add_gramian (ccl_global float *A, int n, ccl_private const float *ccl_restrict v, float weight)
 
ccl_device_inline void math_matrix_transpose (ccl_global float *A, int n, int stride)
 
ccl_device void math_trimatrix_cholesky (ccl_global float *A, int n, int stride)
 
ccl_device_inline void math_trimatrix_vec3_solve (ccl_global float *A, ccl_global float3 *y, int n, int stride)
 
ccl_device void math_matrix_jacobi_eigendecomposition (ccl_private float *A, ccl_global float *V, int n, int v_stride)
 

Macro Definition Documentation

◆ MAT

#define MAT (   A,
  size,
  row,
  col 
)    A[(row) * (size) + (col)]

Definition at line 9 of file math_matrix.h.

◆ MATHS

#define MATHS (   A,
  r,
  c,
 
)    A[(r) * ((r) + 1) / 2 + (c)]

Definition at line 19 of file math_matrix.h.

◆ MATS

#define MATS (   A,
  n,
  r,
  c,
 
)    MAT(A, n, r, c)

Definition at line 18 of file math_matrix.h.

◆ ROT

#define ROT (   M,
  r1,
  c1,
  r2,
  c2,
  stride 
)
Value:
{ \
float M1 = MATS(M, n, r1, c1, stride); \
float M2 = MATS(M, n, r2, c2, stride); \
MATS(M, n, r1, c1, stride) -= s * (M2 + tan_phi_2 * M1); \
MATS(M, n, r2, c2, stride) += s * (M1 - tan_phi_2 * M2); \
}
_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 const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei stride
#define MATS(A, n, r, c, s)
Definition: math_matrix.h:18
#define M

◆ VECS

#define VECS (   V,
  i,
 
)    V[i]

Definition at line 20 of file math_matrix.h.

Function Documentation

◆ math_matrix_add_gramian()

ccl_device_inline void math_matrix_add_gramian ( ccl_private float A,
int  n,
ccl_private const float *ccl_restrict  v,
float  weight 
)

Definition at line 121 of file math_matrix.h.

References A, col, MAT, and v.

◆ math_matrix_jacobi_eigendecomposition()

ccl_device void math_matrix_jacobi_eigendecomposition ( ccl_private float A,
ccl_global float V,
int  n,
int  v_stride 
)

Definition at line 240 of file math_matrix.h.

References A, Freestyle::c, col, element, fabsf, MAT, MATS, ROT, sqrtf, threshold, V, and v.

◆ math_matrix_transpose()

ccl_device_inline void math_matrix_transpose ( ccl_global float A,
int  n,
int  stride 
)

Definition at line 158 of file math_matrix.h.

References A, MATS, and stride.

◆ math_matrix_zero()

ccl_device_inline void math_matrix_zero ( ccl_private float A,
int  n 
)

Definition at line 32 of file math_matrix.h.

References A, col, and MAT.

◆ math_trimatrix_add_diagonal()

ccl_device_inline void math_trimatrix_add_diagonal ( ccl_global float A,
int  n,
float  val,
int  stride 
)

Definition at line 109 of file math_matrix.h.

References A, MATHS, and stride.

Referenced by math_trimatrix_vec3_solve().

◆ math_trimatrix_add_gramian()

ccl_device_inline void math_trimatrix_add_gramian ( ccl_global float A,
int  n,
ccl_private const float *ccl_restrict  v,
float  weight 
)

Definition at line 145 of file math_matrix.h.

References A, atomic_add_and_fetch_float, col, MATHS, and v.

◆ math_trimatrix_add_gramian_strided()

ccl_device_inline void math_trimatrix_add_gramian_strided ( ccl_global float A,
int  n,
ccl_private const float *ccl_restrict  v,
float  weight,
int  stride 
)

Definition at line 135 of file math_matrix.h.

References A, atomic_add_and_fetch_float, col, MATHS, stride, and v.

◆ math_trimatrix_cholesky()

ccl_device void math_trimatrix_cholesky ( ccl_global float A,
int  n,
int  stride 
)

Definition at line 174 of file math_matrix.h.

References A, col, MATHS, max, sqrtf, and stride.

Referenced by math_trimatrix_vec3_solve().

◆ math_trimatrix_vec3_solve()

ccl_device_inline void math_trimatrix_vec3_solve ( ccl_global float A,
ccl_global float3 y,
int  n,
int  stride 
)

Definition at line 204 of file math_matrix.h.

References A, col, math_trimatrix_add_diagonal(), math_trimatrix_cholesky(), MATHS, stride, sum(), VECS, and y.

◆ math_vec3_add()

ccl_device_inline void math_vec3_add ( ccl_private float3 v,
int  n,
ccl_private float x,
float3  w 
)

Definition at line 87 of file math_matrix.h.

References v, w(), and x.

◆ math_vec3_add_strided()

ccl_device_inline void math_vec3_add_strided ( ccl_global float3 v,
int  n,
ccl_private float x,
float3  w,
int  stride 
)

Definition at line 94 of file math_matrix.h.

References atomic_add_and_fetch_float, ccl_global, stride, v, w(), and x.

◆ math_vector_add()

ccl_device_inline void math_vector_add ( ccl_private float a,
ccl_private const float *ccl_restrict  b,
int  n 
)

Definition at line 43 of file math_matrix.h.

References Freestyle::a, and usdtokens::b().

◆ math_vector_max()

ccl_device_inline void math_vector_max ( ccl_private float a,
ccl_private const float *ccl_restrict  b,
int  n 
)

Definition at line 78 of file math_matrix.h.

References Freestyle::a, usdtokens::b(), and max.

◆ math_vector_mul()

ccl_device_inline void math_vector_mul ( ccl_private float a,
ccl_private const float *ccl_restrict  b,
int  n 
)

Definition at line 52 of file math_matrix.h.

References Freestyle::a, and usdtokens::b().

◆ math_vector_mul_strided()

ccl_device_inline void math_vector_mul_strided ( ccl_global float a,
ccl_private const float *ccl_restrict  b,
int  astride,
int  n 
)

Definition at line 61 of file math_matrix.h.

References Freestyle::a, and usdtokens::b().

◆ math_vector_scale()

ccl_device_inline void math_vector_scale ( ccl_private float a,
float  b,
int  n 
)

Definition at line 71 of file math_matrix.h.

References Freestyle::a, and usdtokens::b().

◆ math_vector_zero()

ccl_device_inline void math_vector_zero ( ccl_private float v,
int  n 
)

Definition at line 25 of file math_matrix.h.

References v.