As The last ship sailed towards the distant horizon I sat there watching on a rock My mind slowly drifting away Forming into my... Dreamtale
Cg Standard Library Functions
2018-01-03 / 9 min read

From:http://developer.download.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html

Mathematical Functions

Func Description
abs(x) Absolute value of x .
acos(x) Arccosine of x in range [0, p], x in [–1, 1].
all(x) Returns true if every component of x is not equal to 0. Returns false otherwise.
any(x) Returns true if any component of x is not equal to 0. Returns false otherwise.
asin(x) Arcsine of x in range [–p/2, p/2]; x should be in [–1, 1].
atan(x) Arctangent of x in range [–p/2, p/2].
atan2(y,x) Arctangent of y / x in range [–p, p].
ceil(x) Smallest integer not less than x .

clamp(x,a,b)|x clamped to the range [ a , b ] as follows: 1. Returns a if x is less than a. 2. Returns b if x is greater than b. 3. Returns x otherwise.
cos(x)|Cosine of x .
cosh(x)|Hyperbolic cosine of x .
cross(A,B)|Cross product of vectors A and B ;A and B must be three-component vectors.
degrees(x)|Radian-to-degree conversion.
determinant(m)|Determinant of matrix M .
dot(A,B)|Dot product of vectors A and B .
exp(x)|Exponential function e^x .
exp2(x)|Exponential function 2^x .
floor(x)|Largest integer not greater than x .
fmod(x,y)|Remainder of x / y , with the same sign as x .If y is 0, the result is implementation-defined.
frexp(x,out exp)|Splits x into a normalized fraction in the interval [½, 1), which is returned, and a power of 2, which is stored in exp .If x is 0, both parts of the result are 0.
frac(x)|Fractional part of x .
isfinite(x)|Returns true if x is finite.
isinf(x)|Returns true if x is infinite.
isnan(x)|Returns true if x is NaN (Not a Number).
ldexp(x,n)|x x 2^n .
lerp(a,b,f)|Linear interpolation: (1 – f )* a + b * f where a and b are matching vector or scalar types. f can be either a scalar or a vector of the same type as a and b .
lit(NdotL,NdotH,m)|Details check below
log(x)|Natural logarithm ln( x ) ; x must be greater than 0.
log2(x)|Base 2 logarithm of x ; x must be greater than 0.
log10(x)|Base 10 logarithm of x ; x must be greater than 0.
max(a,b)|Maximum of a and b .
min(a,b)|Minimum of a and b .
modf(x,out ip)|Splits x into integral and fractional parts, each with the same sign as x . Stores the integral part in ip and returns the fractional part.
mul(M,N)|Matrix product of matrix M and matrix N , as shown below: below: If M has size A x B , and N has size B x C , returns a matrix of size A x C .
mul(M,v)|Product of matrix M and column vector v , as shown below: If M is an A x B matrix and v is a B x 1 vector, returns an A x 1 vector.
mul(v,M)|Product of row vector v and matrix M , as shown below: If v is a 1 x A vector and M is an A x B matrix, returns a 1 x B vector.
noise(x)|Either a one-, two-, or three-dimensional noise function, depending on the type of its argument. The returned value is between 0 and 1, and is always the same for a given input value.
pow(x,y)|x^y .
radians(x)|Degree-to-radian conversion.
round(x)|Closest integer to x .
rsqrt(x)|Reciprocal square root of x ; x must be greater than 0.
saturate(x)|Clamps x to the [0, 1] range.
sign(x)|1 if x > 0; –1 if x < 0; 0 otherwise.
sin(x)|Sine of x .
sincos(float x, out s, out c)| s is set to the sine of x , and c is set to the cosine of x .If both sin( x ) and cos( x ) are needed, this function is more efficient than calculating each individually.
sinh(x)|Hyperbolic sine of x .
smoothstep(min,max,x)| Check details below
step(a,x)|0 if x < a ; 1 if x >= a .
sqrt(x)|Square root of x ; x must be greater than 0.
tan(x)|Tangent of x .
tanh(x)|Hyperbolic tangent of x .
transpose(M)|Matrix transpose of matrix M .If M is an A x B matrix, the transpose of M is a B x A matrix whose first column is the first row of M , whose second column is the second row of M , whose third column is the third row of M , and so on.

Geometric Functions

Func Description
distance(pt1,pt2) Euclidean distance between points pt1 and pt2 .
faceforward(N,l,Ng) N if dot( Ng , I ) < 0; - N otherwise.
length(v) Euclidean length of a vector.
normalize(v) Returns a vector of length 1 that points in the same direction as vector v .
reflect(l,N) Computes reflection vector from entering ray direction I and surface normal N .Valid only for three-component vectors.
refract(l,N,eta) Check details below

Texture Map Functions

Func Description
tex1D(sampler1D tex,float s) 1D nonprojective texture query
tex1D(sampler1D tex,float s,float dsdx,float dsdy) 1D nonprojective texture query with derivatives
tex1D(sampler1D tex,float2 sz) 1D nonprojective depth compare texture query
tex1D(sampler1D tex,float2 sz,float dsdx,float dsdy) 1D nonprojective depth compare texture query with derivatives
tex1Dproj(sampler1D tex,float2 sq) 1D projective texture query
tex1Dproj(sampler1D tex,float3 szq) 1D projective depth compare texture query
tex2D(sampler2D tex,float2 s) 2D nonprojective texture query
tex2D(sampler2D tex , float2 s , float2 dsdx , float2 dsdy ) 2D nonprojective texture query with derivatives
tex2D(sampler2D tex , float3 sz ) 2D nonprojective depth compare texture query
tex2D(sampler2D tex , float3 sz , float2 dsdx , float2 dsdy ) 2D nonprojective depth compare texture query with derivatives
tex2Dproj(sampler2D tex , float3 sq ) 2D projective texture query
tex2Dproj(sampler2D tex , float4 szq ) 2D projective depth compare texture query
texRECT(samplerRECT tex , float2 s ) 2D nonprojective texture rectangle texture query (OpenGL only)
texRECT(samplerRECT tex , float2 s , float2 dsdx , float2 dsdy ) 2D nonprojective texture rectangle texture query with derivatives (OpenGL only)
texRECT(samplerRECT tex , float3 sz ) 2D nonprojective texture rectangle depth compare texture query (OpenGL only)
texRECT(samplerRECT tex , float3 sz , float2 dsdx , float2 dsdy ) 2D nonprojective depth compare texture query with derivatives (OpenGL only)
texRECTproj(samplerRECT tex , float3 sq ) 2D texture rectangle projective texture query (OpenGL only)
texRECTproj(samplerRECT tex , float3 szq ) 2D texture rectangle projective depth compare texture query (OpenGL only)
tex3D(sampler3D tex , float3 s ) 3D nonprojective texture query
tex3D(sampler3D tex , float3 s , float3 dsdx , float3 dsdy ) 3D nonprojective texture query with derivatives
tex3Dproj(sampler3D tex , float4 sq ) 3D projective texture query
texCUBE(samplerCUBE tex , float3 s ) Cube map nonprojective texture query
texCUBE(samplerCUBE tex , float3 s , float3 dsdx , float3 dsdy ) Cube map nonprojective texture query with derivatives
texCUBEproj(samplerCUBE tex , float4 sq ) Cube map projective texture query (ignores q)

Derivative Functions

Func Description
ddx(a) Approximate partial derivative of a with respect to screen-space x coordinate
ddy(b) Approximate partial derivative of a with respect to screen-space y coordinate

Details for some functions

lit( NdotL , NdotH , m )

Computes lighting coefficients for ambient, diffuse, and specular light contributions.

Expects the NdotL parameter to contain N • L and the NdotH parameter to contain N • H .

Returns a four-component vector as follows:

  • The x component of the result vector contains the ambient coefficient, which is always 1.0.
  • The y component contains the diffuse coefficient, which is 0 if ( N • L ) < 0; otherwise ( N • L ).
  • The z component contains the specular coefficient, which is 0 if either ( N • L ) < 0 or ( N • H ) < 0; ( N • H ) m otherwise.
  • The w component is 1.0.
    There is no vectorized version of this function.
smoothstep(min,max,x)

For values of x between min and max , returns a smoothly varying value that ranges from 0 at x = min to 1 at x = max .

x is clamped to the range [ min , max ] and then the interpolation formula is evaluated:

–2*(( x – min )/( max – min ))^3 + 3*(( x – min )/( max – min ))^2

refract( I , N , eta )

Given entering ray direction I , surface normal N , and relative index of refraction eta , computes refraction vector.

If the angle between I and N is too large for a given eta , returns (0, 0, 0).

Valid only for three-component vectors.