Kernel-Scope Built-in Functions
In this page, we list all the built-in functions available in taichi.js kernels.
Unary Functions
Common Math Functions
These can be applied to both scalars or vectors
ti.sin(x)ti.cos(x)ti.asin(x)ti.acos(x)ti.tan(x)ti.tanh(x)ti.exp(x)ti.log(x)ti.abs(x)ti.sgn(x)(sign function)ti.sqrt(x)ti.rsqrt(x)(reciprocal of square root)
Vector/Matrix operations:
ti.len(v)(Amount of components of vector)ti.sum(v)(Sum of all components)ti.norm(v)ti.normSqr(v)(square ofti.norm())ti.normalized(v)(ti.normalized(x) == x / ti.norm(x))ti.transpose(m)(transpose of matrix)
Casts
ti.i32(x)ti.f32(x)ti.bitcast_i32(x)ti.bitcast_f32(x)
Syntax
Notice that, for each of these unary functions, there are two ways of writing it:
ti.sin(x);
x.sin();
These two ways are semantically equivalent.
Binary Functions
Common Math Functions
These can be applied to both scalars or vectors
ti.min(a, b)ti.max(a, b)ti.pow(a, b)ti.atan2(a, b)
Vector/Matrix operations
ti.dot(v1, v2)(dot product, returns a scalar)ti.cross(v1, v2)(cross product for 3D vectors, returns a 3D vector perpendicular to bothv1andv2)ti.outerProduct(v1, v2)(outer product for 2 matrices of the same size, returns a matrix)ti.matmul(m, v)(matrix-vector product)ti.pow(a, b)ti.atan2(a, b)
Struct operations
ti.mergeStructs(a, b)Example:
let s0 = {i0: 0, f0: 0.0}
let s1 = {i1: 1, f1: 1.0}
let s = ti.mergeStructs(s0, s1) // {i0: 0, f0: 0.0, i1: 1, f1: 1.0}
Syntax
Notice that, for each of these unary functions, there are two ways of writing it:
ti.max(a, b);
a.max(b);
Random Generator
ti.random()returns a random value between 0.0 and 1.0
Javascript Built-ins
Functions available in taichi.js which are inherited from Javascript:
.slice(start, end)(can only be applied to vectors, must have 2 arguments).concat(...)
Atomic Built-ins
Atomic built-in functions are listed and described here.
Rendering Built-ins
There are also some built-in functions used specifically for rendering purposes. These are listed here.