Cg functions

From Wikiid
Revision as of 09:51, 6 October 2009 by SteveBaker (Talk | contribs)

Jump to: navigation, search

The Cg function table:

Functions

Function 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: Returns a if x is less than a . Returns b if x is greater than b . 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.
ddx( a ) Approximate partial derivative of a with respect to screen-space x coordinate
ddy( a ) Approximate partial derivative of a with respect to screen-space y coordinate
void debug(float4 x ) If the compiler's DEBUG option is enabled, calling this function causes the value x to be copied to the COLOR output of the program, and execution of the program is terminated. If the compiler's DEBUG option is not enabled, this function does nothing.
degrees( x ) Radian-to-degree conversion.
determinant( M ) Determinant of matrix M .
distance( pt1 , pt2 ) Euclidean distance between points pt1 and pt2 .
dot( A , B ) Dot product of vectors A and B .
exp( x ) Exponential function e x .
exp2( x ) Exponential function 2 x .
faceforward( N , I , Ng ) N if dot( Ng , I ) < 0; - N otherwise.
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.
frac( x ) Fractional part of x .
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.
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 .
length( v ) Euclidean length of a vector.
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 ) 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 di

ffuse 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.

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: 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.
normalize( v ) Returns a vector of length 1 that points in the same direction as vector v .
pow( x , y ) xy .
radians( x ) Degree-to-radian conversion.
reflect( I , N ) Computes reflection vector from entering ray direction I and surface normal N . Valid only for three-component vectors.
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.
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 ) 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
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 .
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)
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.

NOTES:

  • s indicates a one-, two-, or three-component texture coordinate.
  • z indicates a depth comparison value for shadow map lookups.
  • q indicates a perspective value, and is used to divide the texture coordinate ( s ) before the texture lookup is performed.

When you use the texture functions that allow specifying a depth comparison value, the associated texture unit must be configured for depth-compare texturing. Otherwise, no depth comparison will actually be performed.