Skip to content
  • Content »
  • Fusion »
  • WebGL to DCTL »

Math Functions

Most shader languages are based on some kind of C and thereby seem to inherit a good bunch of the well known math.h functions. On the other hand does GLSL define additional functions which don't come with the C standard libraries, or it uses features like overloading, which leads to problems when a function like sin() is defined as sin(float) as well as for sin(double) - in these cases DCTL avoids the ambiguity by providing explicit functions to determine the required variant - in the example a _sinf() works for a float parameter and only a float parameter.

Function Remark
[[cos()]] Replace with DCTL's _cosf(float)
fract() Implementation needed for Cuda
pow() Corrected version needed for some shaders
max() Replace with _fmaxf()
[[min()]] Replace with _fmixf()
mod() Replace with mod_f()
sign() Implementation needed for Cuda
[[sin()]] Replace with DCTL's _sinf(float)

See also WebGL to DCTL for a differently formatted overview on how to convert which of these functions.

Functions that do not come with math.h and must be implemented separately - if they don't come with the Graphics API or DCTL already.

Function Description
clamp() Exists (at least clamp(float,float,float)
dot() Exists (at least dot(float,float); we'll have to check for Vector types
radians() Implement as radians(float) (missing in Cuda - maybe better radians_f())
distance() Implement as distance_f and distance_fx (missing in Cuda)
reflect() Missing in OpenCL (metal ? don't know exactly-please check)