Cg functions
From Wikiid
Revision as of 09:51, 6 October 2009 by SteveBaker (Talk | contribs)
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.