Utility functions for use in constructing shaders using the Autodesk Shader Software Development Kit.
#include "adskColor.h"
#include "adskVector.h"
#include "adskRenderPassTypes.h"
#include "adskRenderPassUtilities.h"
#include "adskFrameBufferState.h"
#include <shader.h>
#include "adskShaderSDKNamespaceBegin.h"
#include "adskShaderSDKNamespaceEnd.h"
Functions |
|
void | adskFatal (const string &pString) |
Emit fatal error from shader. |
|
void | adskError (const string &pString) |
Emit error from shader. |
|
void | adskWarning (const string &pString) |
Emit fatal warning from shader. |
|
void | adskInfo (const string &pString) |
Emit information from shader. |
|
template<class T> | |
T * | adskNewMIObject () |
Allocate and construct an object on the
mental ray heap. |
|
template<class T> | |
T * | adskNewMIArray (size_t itemCount) |
Allocate and construct an object array on
the mental ray heap. |
|
template<class T> | |
void | adskDeleteMIObject (T *ptr) |
Destruct and deallocate an object on the
mental ray heap. |
|
template<class T> | |
void | adskDeleteMIArray (T *ptr, size_t itemCount) |
Destruct and deallocate an object array on
the mental ray heap. |
|
miUint | getNamedFrameBufferID (const miState *pState, const char *pBufferName) |
Obtain the numeric ID for a named frame
buffer. |
|
miUint | getNamedFrameBufferID (const miState *pState, const miTag pBufferTag) |
Obtain the numeric ID for a named frame
buffer. |
|
template<typename T, typename F> | |
T | applyScale (const T &value, const F &scale) |
Scaling function used internally by
operateOnFrameBuffer. |
|
template<> | |
miInteger | applyScale< miInteger, miScalar > (const miInteger &value, const miScalar &scale) |
Template specialization of applyScale for
integers and scalars. |
|
template<> | |
miInteger | applyScale< miInteger, miColor > (const miInteger &value, const miColor &scale) |
Template specialization of applyScale for
integers and colors. Should not be used. |
|
template<> | |
miScalar | applyScale< miScalar, miColor > (const miScalar &value, const miColor &scale) |
Template specialization of applyScale for
scalars and colors. |
|
template<> | |
miVector | applyScale< miVector, miColor > (const miVector &value, const miColor &scale) |
Template specialization of applyScale for
vectors and colors. |
|
template<typename T> | |
miBoolean | operateOnFrameBuffer (const miState *pState, const T &pValue, FrameBufferInfo &pFrameBufferInfo, const miInteger &pFrameBufferWriteOperation, const miInteger &pFrameBufferWriteFlags, const miScalar &pFrameBufferWriteFactor, const bool &pUseIrradiance, const miColor *const &pIrradianceNoShadow=0) |
Perform the desired operation on a frame
buffer. |
|
template<typename T> | |
miBoolean | accumulateLightSample (const miState *pState, const T &pValue, FrameBufferInfo &pFrameBufferInfo, const bool &pUseIrradiance, const miColor *const &pIrradianceNoShadow=0) |
Accumulates a frame buffer value for the
current light sample. |
|
template<typename T> | |
void | operateOnFrameBuffersOfType (const miState *pState, const T &pValue, FrameBufferInfo *const pFrameBufferInfo, PassTypeInfo *const pPassTypeInfo, const PassTypeID &pTypeID, const miInteger &pFrameBufferWriteOperation, const miInteger &pFrameBufferWriteFlags, const miScalar &pFrameBufferWriteFactor, const bool &pUseIrradiance, const miColor *const &pIrradianceNoShadow=0) |
Operate on all frame buffers of a given
material pass type. |
|
void | operateOnNormalMaterialFrameBuffersOfType (const miState *pState, miVector pValue, FrameBufferInfo *const pFrameBufferInfo, PassTypeInfo *const pPassTypeInfo, const miInteger &pFrameBufferWriteOperation, const miInteger &pFrameBufferWriteFlags, const miScalar &pFrameBufferWriteFactor) |
Operate on material normal frame buffers.
|
|
template<typename T> | |
T | MAYA_CLAMP (const T &x, const T &a, const T &b) |
Clamp value to range. |
|
template<typename T> | |
T | MAYA_MIN (const T &x, const T &y) |
Find minimum value. |
|
template<typename T> | |
T | MAYA_MAX (const T &x, const T &y) |
Find maximum value. |
|
bool | MAYA_ISZERO (const miScalar a) |
Is value effectively zero. |
|
template<typename T> | |
T | lerp (const T &t, const T &a, const T &b) |
Computer linear interpolation. |
|
template<typename T> | |
T | linearRamp (const T &a, const T &b, const T &x) |
Computer linear ramp. |
|
template<typename T> | |
T | remap (const T &pValue, const T &pOldMinimum, const T &pOldMaximum, const T &pNewMinimum, const T &pNewMaximum) |
Remap value to new range. |
|
template<typename T> | |
T | clampedRemap (const T &pValue, const T &pOldMinimum, const T &pOldMaximum, const T &pNewMinimum, const T &pNewMaximum) |
Remap value to new range and clamp to that
range. |
|
void | convertToNormalizedPixels (const miState *pState, miVector &vec) |
Convert pixel aspect ratio. |
|
void | tracePassInit (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, miState *pState) |
Prepare the frame buffer states for a series
of reflection and/or refraction trace recursions. |
|
void | tracePassAdd (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, miState *pState, miColor pFactor, bool pIsRefraction) |
Composite the frame buffer states after a
series of reflection and/or refraction trace recursions. |
|
bool | traceShadow (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, miColor &pFilter, const miColor &pLightColor, const miColor &pShadowColor, bool pUsingShadowMap, miState *pState) |
Trace a shadow ray using per frame-buffer
lighting Note: should only be called from a light shader. |
|
void | setLightIrradiance (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, const miColor &pLightColor) |
When not rendering with shadows, this
function is called to set the irradiance value for the current
light Note: should only be called from a light shader. |
|
void | traceShadowAccumulateBegin (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo) |
Initialize frame buffer states for shadow
area sampling, used for area lights, final gathering, etc. Note:
should only be called from a light shader when not using a shadow
map. |
|
bool | traceShadowAccumulate (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, miColor &pFilter, miState *pState) |
Trace a shadow ray and accumulate results
for per frame-buffer lighting Note: should only be called from a
light shader, between calls to traceShadowAccumulateBegin and
traceShadowAccumulateEnd. |
|
void | traceShadowAccumulateEnd (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, unsigned int pNumberOfRays, const miColor &pLightColor, const miColor &pShadowColor, miState *pState) |
Process accumulated shadow rays for light
sampling Note: should only be called from a light shader when not
using a shadow map. |
|
void | sampleLightBegin (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo) |
Function to be called before all light
sampling loops. Takes care of initializing light sample
accumulators. |
|
void | sampleLightEnd (miState *pState, unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, const int pSamples, const miInteger &pFrameBufferWriteOperation, const miInteger &pFrameBufferWriteFlags, const miScalar &pFrameBufferWriteFactor) |
Function to be called after all light
sampling loops. Takes care of combining sample values into the
material frame buffer values. |
|
void | setupLightContributions (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, miState *pState) |
Initializes the frame buffer states for
receiving illumination information Note: should be called at the
beginning of a light shader. |
|
miBoolean | applyShadowTransparencyToFrameBuffers (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, const miColor &pTransparency, miState *pState) |
Applies the shadow opacity of the current
object to all relevant frame buffer states. Note: should only be
called from shadow shaders. |
|
void | handleNonAdskLights (unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, const miColor &pLightColor, miTag pLightInstance, miState *pState) |
This function should be called at the
beginning of light sample loops in material shaders. It enables
renderpass contributions for lightshaders that were not developped
using the AdskShaderSDK. Whenever such light shaders are used, pass
contributions will continue to work for controlling light
contributions, but not for controlling shadow casters. Only
SDK-compliant light shaders support per-pass independent shadow
casting. |
|
void | hsv_to_rgb (const miColor *hsv, miColor *rgb) |
Convert HSV color to RGB. |
|
void | rgb_to_hsv (const miColor *rgb, miColor *hsv) |
Convert RGB color to HSV. |
|
void | get_derivs (miState *state, miVector *u, miVector *v, int space, int tangentSet) |
Retrieve derivatives at point. |
|
void | compute_refraction (miColor *resRefr, miColor *resTrsp, miInteger *pRefractionLimit, miScalar *pRefractiveIndex, miBoolean refractions, const miColor *transparency, miBoolean hideSource, miScalar *pRefractionBlur, miInteger *pRefractionBlurLimit, miInteger *pRefractionRays, miScalar *pSurfaceThickness, miScalar *pTransparencyDepth, miScalar *pLightAbsorbance, miBoolean *pChromaticAberration, miVector *normal, float dot_nd, miState *state, unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, PassTypeInfo *pPassTypeInfo, const miScalar &pFrameBufferScale) |
Compute the reflection at the current point.
|
|
void | compute_reflection (miColor *resRefl, miScalar reflectivity, const miColor *specularColor, miScalar glowIntensity, miColor *pReflectedColor, miInteger *pReflectionLimit, miScalar *pReflectionBlur, miInteger *pReflectionBlurLimit, miInteger *pReflectionRays, miBoolean hideSource, miVector *normal, float dot_nd, miState *state, unsigned int pNumberOfFrameBuffers, FrameBufferInfo *pFrameBufferInfo, PassTypeInfo *pPassTypeInfo, const miScalar &pFrameBufferScale) |
Compute the reflection at the current point.
|
|
void | compute_irradiance (miColor *resIrrad, miColor *pIrradianceColor, float diffuse, const miColor *color, const miColor *transparency, miScalar glowIntensity, miColor *pIrradiance, miState *state) |
Compute irradiance for material. |
|
float | compute_lambert_translucence (miState *state, float cos_nl, miVector *ldir, miScalar translucence, miScalar translucenceFocus, miScalar translucenceDepth, void *blindData) |
Compute lambertian translucence. |
|
float | compute_phong_specular (miVector *ldir, miScalar cosinePower, miScalar reflectionSpecularity, miVector *reflDirection, miState *state) |
Compute phong specular value. |
|
float | compute_blinn_specular (float cos_nl, float cos_nv, miVector *ldir, miScalar eccentricity, miScalar specularRollOff, miScalar reflectionSpecularity, miVector *normal, miState *state) |
Compute blinn specular value. |
|
float | compute_hairtubeshader_specular (miScalar specularPower, const miVector *lightDir, const miVector *viewDir, const miVector *tubeDir) |
Compute specular for hair tube shader.
|
|
float | arealight_lambertian_reflect (const miVector *point, const miVector *normal, const void *blindData) |
Compute area light lambertian reflection.
|
|
void | arealight_max_phong_spec_dir (const miVector *point, const miVector *direction, const void *blindData, miTag lightInst, miVector *result) |
Compute area light maximum phong specular
direction. |
miBoolean accumulateLightSample | ( | const miState * | pState, | |
const T & | pValue, | |||
FrameBufferInfo & | pFrameBufferInfo, | |||
const bool & | pUseIrradiance, | |||
const miColor *const & | pIrradianceNoShadow =
0 |
|||
) | [inline] |
Accumulates a frame buffer value for the current light sample.
T | The type to contribute to the frame buffer. |
[in] | pState | mental ray state. |
[in] | pValue | The value to accumulate. |
[in] | pFrameBufferInfo | The frame buffer info of the buffer to be written to. |
[in] | pUseIrradiance | Set to true if the value should be modulated by irradiance. This option should only be used inside a light loop. |
[in] | pIrradianceNoShadow | Sample irradiance without shadows, used to compute differential shadow passes. When non-null, the difference between pIrradianceNoShadow and the sample irradiance is used as a lighting factor, instead of the sample irradiance. |
void adskDeleteMIArray | ( | T * | ptr, | |
size_t | itemCount | |||
) | [inline] |
Destruct and deallocate an object array on the mental ray heap.
T | The type of object array to delete. |
[in] | ptr | reference to the object to be deleted. |
[in] | itemCount | number of objects in the array. |
void adskDeleteMIObject | ( | T * | ptr | ) | [inline] |
Destruct and deallocate an object on the mental ray heap.
T | The type of object to delete. |
[in] | ptr | reference to the object to be deleted. |
void adskError | ( | const string & | pString | ) |
Emit error from shader.
[in] | pString | The error message. |
void adskFatal | ( | const string & | pString | ) |
Emit fatal error from shader.
[in] | pString | The error message. |
void adskInfo | ( | const string & | pString | ) |
Emit information from shader.
[in] | pString | The information message. |
T* adskNewMIArray | ( | size_t | itemCount | ) | [inline] |
Allocate and construct an object array on the mental ray heap.
T | The type of object array to construct. |
[in] | itemCount | number of objects in the array. |
T* adskNewMIObject | ( | ) | [inline] |
Allocate and construct an object on the mental ray heap.
T | The type of object to construct. |
void adskWarning | ( | const string & | pString | ) |
Emit fatal warning from shader.
[in] | pString | The warning message. |
T applyScale | ( | const T & | value, | |
const F & | scale | |||
) | [inline] |
Scaling function used internally by operateOnFrameBuffer.
This function ensures that proper rounding takes place when and only when dealing with miInteger frame buffer values. It also takes care of using the color luminance when scaling a scalar using a color.
T | Type to scale. | |
F | Type to scale by. |
[in] | value | Value to scale. |
[in] | scale | Amount to scale by. |
miInteger applyScale< miInteger, miColor > | ( | const miInteger & | value, | |
const miColor & | scale | |||
) | [inline] |
Template specialization of applyScale for integers and colors. Should not be used.
[in] | value | Value to scale. |
[in] | scale | Amount to scale by. |
miInteger applyScale< miInteger, miScalar > | ( | const miInteger & | value, | |
const miScalar & | scale | |||
) | [inline] |
Template specialization of applyScale for integers and scalars.
[in] | value | Value to scale. |
[in] | scale | Amount to scale by. |
miScalar applyScale< miScalar, miColor > | ( | const miScalar & | value, | |
const miColor & | scale | |||
) | [inline] |
Template specialization of applyScale for scalars and colors.
[in] | value | Value to scale. |
[in] | scale | Amount to scale by. |
miVector applyScale< miVector, miColor > | ( | const miVector & | value, | |
const miColor & | scale | |||
) | [inline] |
Template specialization of applyScale for vectors and colors.
[in] | value | Value to scale. |
[in] | scale | Amount to scale by. |
miBoolean applyShadowTransparencyToFrameBuffers | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
const miColor & | pTransparency, | |||
miState * | pState | |||
) |
Applies the shadow opacity of the current object to all relevant frame buffer states. Note: should only be called from shadow shaders.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pTransparency | The shadow transparency of the current material |
[in] | pState | the shading state |
float arealight_lambertian_reflect | ( | const miVector * | point, | |
const miVector * | normal, | |||
const void * | blindData | |||
) |
Compute area light lambertian reflection.
[in] | point | The point to compute at. |
[in] | normal | The normal |
[in] | blindData | Custom light data |
void arealight_max_phong_spec_dir | ( | const miVector * | point, | |
const miVector * | direction, | |||
const void * | blindData, | |||
miTag | lightInst, | |||
miVector * | result | |||
) |
Compute area light maximum phong specular direction.
[in] | point | The point to compute at. |
[in] | direction | The direction |
[in] | blindData | Custom light data |
[in] | lightInst | The light instance |
[out] | result | The direction result |
T clampedRemap | ( | const T & | pValue, | |
const T & | pOldMinimum, | |||
const T & | pOldMaximum, | |||
const T & | pNewMinimum, | |||
const T & | pNewMaximum | |||
) | [inline] |
Remap value to new range and clamp to that range.
T | Type to perform computation with. |
[in] | pValue | Value to remap. |
[in] | pOldMinimum | Old minimum value. |
[in] | pOldMaximum | Old maximum value. |
[in] | pNewMinimum | New minimum value. |
[in] | pNewMaximum | New maximum value. |
float compute_blinn_specular | ( | float | cos_nl, | |
float | cos_nv, | |||
miVector * | ldir, | |||
miScalar | eccentricity, | |||
miScalar | specularRollOff, | |||
miScalar | reflectionSpecularity, | |||
miVector * | normal, | |||
miState * | state | |||
) |
Compute blinn specular value.
[in] | cos_nl | Dot product of normal and light |
[in] | cos_nv | Dot product of normal and direction |
[in] | ldir | Light direction |
[in] | eccentricity | Eccentricity |
[in] | specularRollOff | Specular rolloff |
[in] | reflectionSpecularity | Reflection specularity |
[in] | normal | normal |
[in] | state | Pointer to mental ray state |
float compute_hairtubeshader_specular | ( | miScalar | specularPower, | |
const miVector * | lightDir, | |||
const miVector * | viewDir, | |||
const miVector * | tubeDir | |||
) |
Compute specular for hair tube shader.
[in] | specularPower | Specular power |
[in] | lightDir | Light direction |
[in] | viewDir | View direction |
[in] | tubeDir | Tube direction |
void compute_irradiance | ( | miColor * | resIrrad, | |
miColor * | pIrradianceColor, | |||
float | diffuse, | |||
const miColor * | color, | |||
const miColor * | transparency, | |||
miScalar | glowIntensity, | |||
miColor * | pIrradiance, | |||
miState * | state | |||
) |
Compute irradiance for material.
[out] | resIrrad | Irradiance result |
[in] | pIrradianceColor | Irradiance color |
[in] | diffuse | Diffuse factor |
[in] | color | Diffuse color |
[in] | transparency | Transparency |
[in] | glowIntensity | Glow intensity |
[in] | pIrradiance | Irradiance |
[in,out] | state | Pointer to mental ray state |
float compute_lambert_translucence | ( | miState * | state, | |
float | cos_nl, | |||
miVector * | ldir, | |||
miScalar | translucence, | |||
miScalar | translucenceFocus, | |||
miScalar | translucenceDepth, | |||
void * | blindData | |||
) |
Compute lambertian translucence.
[in,out] | state | Pointer to mental ray state |
[in] | cos_nl | Dot product of normal and light |
[in] | ldir | Light direction |
[in] | translucence | translucence |
[in] | translucenceFocus | Translucence focus |
[in] | translucenceDepth | Translucence depth |
[in] | blindData | Light data |
float compute_phong_specular | ( | miVector * | ldir, | |
miScalar | cosinePower, | |||
miScalar | reflectionSpecularity, | |||
miVector * | reflDirection, | |||
miState * | state | |||
) |
Compute phong specular value.
[in] | ldir | Light direction |
[in] | cosinePower | Cosine power |
[in] | reflectionSpecularity | Reflection specularity |
[in] | reflDirection | Reflection direction |
[in,out] | state | Pointer to mental ray state |
void compute_reflection | ( | miColor * | resRefl, | |
miScalar | reflectivity, | |||
const miColor * | specularColor, | |||
miScalar | glowIntensity, | |||
miColor * | pReflectedColor, | |||
miInteger * | pReflectionLimit, | |||
miScalar * | pReflectionBlur, | |||
miInteger * | pReflectionBlurLimit, | |||
miInteger * | pReflectionRays, | |||
miBoolean | hideSource, | |||
miVector * | normal, | |||
float | dot_nd, | |||
miState * | state, | |||
unsigned int | pNumberOfFrameBuffers, | |||
FrameBufferInfo * | pFrameBufferInfo, | |||
PassTypeInfo * | pPassTypeInfo, | |||
const miScalar & | pFrameBufferScale | |||
) |
Compute the reflection at the current point.
[out] | resRefl | Reflection result |
[in] | reflectivity | Reflectivity of material |
[in] | specularColor | Specular color |
[in] | glowIntensity | Glow intensity |
[in] | pReflectedColor | Reflected color |
[in] | pReflectionLimit | Reflection limit |
[in] | pReflectionBlur | Reflection blur |
[in] | pReflectionBlurLimit | Reflection blur limit |
[in] | pReflectionRays | Reflection rays |
[in] | hideSource | Hide source |
[in] | normal | normal |
[in] | dot_nd | Dot product of normal and direction |
[in,out] | state | Pointer to mental ray state |
[in] | pNumberOfFrameBuffers | Number of frame buffers |
[in] | pFrameBufferInfo | Frame buffer information |
[in] | pPassTypeInfo | The array pass type info structures. |
[in] | pFrameBufferScale | Frame buffer scale |
void compute_refraction | ( | miColor * | resRefr, | |
miColor * | resTrsp, | |||
miInteger * | pRefractionLimit, | |||
miScalar * | pRefractiveIndex, | |||
miBoolean | refractions, | |||
const miColor * | transparency, | |||
miBoolean | hideSource, | |||
miScalar * | pRefractionBlur, | |||
miInteger * | pRefractionBlurLimit, | |||
miInteger * | pRefractionRays, | |||
miScalar * | pSurfaceThickness, | |||
miScalar * | pTransparencyDepth, | |||
miScalar * | pLightAbsorbance, | |||
miBoolean * | pChromaticAberration, | |||
miVector * | normal, | |||
float | dot_nd, | |||
miState * | state, | |||
unsigned int | pNumberOfFrameBuffers, | |||
FrameBufferInfo * | pFrameBufferInfo, | |||
PassTypeInfo * | pPassTypeInfo, | |||
const miScalar & | pFrameBufferScale | |||
) |
Compute the reflection at the current point.
[out] | resRefr | Refraction result |
[out] | resTrsp | Transparency result |
[in] | pRefractionLimit | Refraction limit |
[in] | pRefractiveIndex | Refractive index |
[in] | refractions | refractions |
[in] | transparency | transparency |
[in] | hideSource | Hide source |
[in] | pRefractionBlur | Refraction blur |
[in] | pRefractionBlurLimit | Refraction blur limit |
[in] | pRefractionRays | Refraction rays |
[in] | pSurfaceThickness | Surface thickness |
[in] | pTransparencyDepth | Transparency depth |
[in] | pLightAbsorbance | Light absorbance |
[in] | pChromaticAberration | Chromatic aberration |
[in] | normal | normal |
[in] | dot_nd | Dot product of normal and direction |
[in,out] | state | Pointer to mental ray state |
[in] | pNumberOfFrameBuffers | Number of frame buffers |
[in] | pFrameBufferInfo | Frame buffer information |
[in] | pPassTypeInfo | Pass type information |
[in] | pFrameBufferScale | Frame buffer scale |
void convertToNormalizedPixels | ( | const miState * | pState, | |
miVector & | vec | |||
) | [inline] |
Convert pixel aspect ratio.
[in,out] | pState | Pointer to mental ray state. |
[out] | vec | Result vector. |
void get_derivs | ( | miState * | state, | |
miVector * | u, | |||
miVector * | v, | |||
int | space, | |||
int | tangentSet | |||
) |
Retrieve derivatives at point.
[in,out] | state | Pointer to the mental ray state. |
[in] | u | u-coordinate for derivative. |
[in] | v | v-coordinate for derivative. |
[in] | space | Space to compute derivatives in. |
[in] | tangentSet | Tangent set to retrieve derivatives for. |
miUint getNamedFrameBufferID | ( | const miState * | pState, | |
const miTag | pBufferTag | |||
) |
Obtain the numeric ID for a named frame buffer.
[in] | pState | mental ray state |
[in] | pBufferTag | The tag for the named frame buffer. |
miUint getNamedFrameBufferID | ( | const miState * | pState, | |
const char * | pBufferName | |||
) |
Obtain the numeric ID for a named frame buffer.
[in] | pState | mental ray state |
[in] | pBufferName | The name of the buffer to look up. |
void handleNonAdskLights | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
const miColor & | pLightColor, | |||
miTag | pLightInstance, | |||
miState * | pState | |||
) |
This function should be called at the beginning of light sample loops in material shaders. It enables renderpass contributions for lightshaders that were not developped using the AdskShaderSDK. Whenever such light shaders are used, pass contributions will continue to work for controlling light contributions, but not for controlling shadow casters. Only SDK-compliant light shaders support per-pass independent shadow casting.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pLightColor | The light color used for the Master Beauty pass |
[in] | pLightInstance | The light instance currently being evaluated |
[in] | pState | the shading state |
void hsv_to_rgb | ( | const miColor * | hsv, | |
miColor * | rgb | |||
) |
Convert HSV color to RGB.
[in] | hsv | The HSV color. |
[out] | rgb | The result RGB color. |
T lerp | ( | const T & | t, | |
const T & | a, | |||
const T & | b | |||
) | [inline] |
Computer linear interpolation.
T | Type to perform computation with. |
[in] | t | Split parameter. |
[in] | a | Start value. |
[in] | b | End value. |
T linearRamp | ( | const T & | a, | |
const T & | b, | |||
const T & | x | |||
) | [inline] |
Computer linear ramp.
T | Type to perform computation with. |
[in] | a | a value. |
[in] | b | b value. |
[in] | x | x value. |
T MAYA_CLAMP | ( | const T & | x, | |
const T & | a, | |||
const T & | b | |||
) | [inline] |
Clamp value to range.
T | Type of value to clamp. |
[in] | x | Value to clamp. |
[in] | a | Minimum value for clamp. |
[in] | b | Minimum value for clamp. |
bool MAYA_ISZERO | ( | const miScalar | a | ) | [inline] |
Is value effectively zero.
[in] | a | Value. |
T MAYA_MAX | ( | const T & | x, | |
const T & | y | |||
) | [inline] |
Find maximum value.
T | Type of value to find minimum. |
[in] | x | First value. |
[in] | y | Second value. |
T MAYA_MIN | ( | const T & | x, | |
const T & | y | |||
) | [inline] |
Find minimum value.
T | Type of value to find minimum. |
[in] | x | First value. |
[in] | y | Second value. |
miBoolean operateOnFrameBuffer | ( | const miState * | pState, | |
const T & | pValue, | |||
FrameBufferInfo & | pFrameBufferInfo, | |||
const miInteger & | pFrameBufferWriteOperation, | |||
const miInteger & | pFrameBufferWriteFlags, | |||
const miScalar & | pFrameBufferWriteFactor, | |||
const bool & | pUseIrradiance, | |||
const miColor *const & | pIrradianceNoShadow =
0 |
|||
) | [inline] |
Perform the desired operation on a frame buffer.
This function will retrieve the existing value in a frame buffer at the sample location in raster space, and will perform the desired operation with the given value, and write it back to the frame buffer.
[in] | pState | mental ray state. |
[in] | pValue | The value to use in the operation. |
[in] | pFrameBufferInfo | The info structure on the frame buffer to operate on. |
[in] | pFrameBufferWriteOperation | The operation to be performed. |
[in] | pFrameBufferWriteFlags | The flags pertaining to the operation. |
[in] | pFrameBufferWriteFactor | The scaling factor to be used based on the flags. |
[in] | pUseIrradiance | Set to true if the value should be modulated by irradiance. This option should only be used inside a light loop. |
[in] | pIrradianceNoShadow | Sample irradiance without shadows, used to compute differential shadow passes. When non-null, the difference between pIrradianceNoShadow and the sample irradiance is used as a lighting factor, instead of the sample irradiance. |
miTRUE
on success,
miFALSE
on error.void operateOnFrameBuffersOfType | ( | const miState * | pState, | |
const T & | pValue, | |||
FrameBufferInfo *const | pFrameBufferInfo, | |||
PassTypeInfo *const | pPassTypeInfo, | |||
const PassTypeID & | pTypeID, | |||
const miInteger & | pFrameBufferWriteOperation, | |||
const miInteger & | pFrameBufferWriteFlags, | |||
const miScalar & | pFrameBufferWriteFactor, | |||
const bool & | pUseIrradiance, | |||
const miColor *const & | pIrradianceNoShadow =
0 |
|||
) | [inline] |
Operate on all frame buffers of a given material pass type.
For all frame buffers of a given type, this function will perform the desired operation. If in light sampling mode (called between lightSampleBegin and lightSampleEnd), the value will simply be accumulated in a temporary location and the actual operation will be performed by lightSampleEnd.
T | The type to contribute to the frame buffer. |
[in] | pState | mental ray state. |
[in] | pValue | The value to add. |
[in] | pFrameBufferInfo | The array of frame buffer info structures. |
[in] | pPassTypeInfo | The array pass type info structures. |
[in] | pTypeID | Only frame buffers of this type will be written to. |
[in] | pFrameBufferWriteOperation | The operation to be performed. |
[in] | pFrameBufferWriteFlags | The flags pertaining to the operation. |
[in] | pFrameBufferWriteFactor | The scaling factor to be used based on the flags. |
[in] | pUseIrradiance | Set to true if the value should be modulated by irradiance. This option should only be used inside a light loop. |
[in] | pIrradianceNoShadow | Sample irradiance without shadows, used to compute differential shadow passes. When non-null, the difference between pIrradianceNoShadow and the sample irradiance is used as a lighting factor, instead of the sample irradiance. |
void operateOnNormalMaterialFrameBuffersOfType | ( | const miState * | pState, | |
miVector | pValue, | |||
FrameBufferInfo *const | pFrameBufferInfo, | |||
PassTypeInfo *const | pPassTypeInfo, | |||
const miInteger & | pFrameBufferWriteOperation, | |||
const miInteger & | pFrameBufferWriteFlags, | |||
const miScalar & | pFrameBufferWriteFactor | |||
) | [inline] |
Operate on material normal frame buffers.
For all material normal frame buffers, this function will perform the desired operation.
[in] | pState | mental ray state. |
[in] | pValue | The value to add. |
[in] | pFrameBufferInfo | The array of frame buffer info structures. |
[in] | pPassTypeInfo | The array pass type info structures. |
[in] | pFrameBufferWriteOperation | The operation to be performed. |
[in] | pFrameBufferWriteFlags | The flags pertaining to the operation. |
[in] | pFrameBufferWriteFactor | The scaling factor to be used based on the flags. |
T remap | ( | const T & | pValue, | |
const T & | pOldMinimum, | |||
const T & | pOldMaximum, | |||
const T & | pNewMinimum, | |||
const T & | pNewMaximum | |||
) | [inline] |
Remap value to new range.
T | Type to perform computation with. |
[in] | pValue | Value to remap. |
[in] | pOldMinimum | Old minimum value. |
[in] | pOldMaximum | Old maximum value. |
[in] | pNewMinimum | New minimum value. |
[in] | pNewMaximum | New maximum value. |
void rgb_to_hsv | ( | const miColor * | rgb, | |
miColor * | hsv | |||
) |
Convert RGB color to HSV.
[in] | rgb | The RGB color. |
[out] | hsv | The result HSV color. |
void sampleLightBegin | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo | |||
) |
Function to be called before all light sampling loops. Takes care of initializing light sample accumulators.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
void sampleLightEnd | ( | miState * | pState, | |
unsigned int | pNumberOfFrameBuffers, | |||
FrameBufferInfo * | pFrameBufferInfo, | |||
const int | pSamples, | |||
const miInteger & | pFrameBufferWriteOperation, | |||
const miInteger & | pFrameBufferWriteFlags, | |||
const miScalar & | pFrameBufferWriteFactor | |||
) |
Function to be called after all light sampling loops. Takes care of combining sample values into the material frame buffer values.
[in] | pState | the shading state |
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pSamples | The number of times the current light was sampled |
[in] | pFrameBufferWriteOperation | The operation to be performed. |
[in] | pFrameBufferWriteFlags | The flags pertaining to the operation. |
[in] | pFrameBufferWriteFactor | The scaling factor to be used based on the flags. |
void setLightIrradiance | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
const miColor & | pLightColor | |||
) |
When not rendering with shadows, this function is called to set the irradiance value for the current light Note: should only be called from a light shader.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pLightColor | unattenuated irradiance |
void setupLightContributions | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
miState * | pState | |||
) |
Initializes the frame buffer states for receiving illumination information Note: should be called at the beginning of a light shader.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pState | the shading state |
void tracePassAdd | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
miState * | pState, | |||
miColor | pFactor, | |||
bool | pIsRefraction | |||
) |
Composite the frame buffer states after a series of reflection and/or refraction trace recursions.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pState | shading state |
[in] | pFactor | the light transport factor |
[in] | pIsRefraction | must be set to true if the the traced rays were refraction rays. |
void tracePassInit | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
miState * | pState | |||
) |
Prepare the frame buffer states for a series of reflection and/or refraction trace recursions.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pState | shading state |
bool traceShadow | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
miColor & | pFilter, | |||
const miColor & | pLightColor, | |||
const miColor & | pShadowColor, | |||
bool | pUsingShadowMap, | |||
miState * | pState | |||
) |
Trace a shadow ray using per frame-buffer lighting Note: should only be called from a light shader.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[out] | pFilter | attenuation factor cause by shadows |
[in] | pLightColor | unattenuated irradiance |
[in] | pShadowColor | Shadow Color |
[in] | pUsingShadowMap | must be set to true if shadow maps are used |
[in] | pState | shading state |
bool traceShadowAccumulate | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
miColor & | pFilter, | |||
miState * | pState | |||
) |
Trace a shadow ray and accumulate results for per frame-buffer lighting Note: should only be called from a light shader, between calls to traceShadowAccumulateBegin and traceShadowAccumulateEnd.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[out] | pFilter | attenuation factor cause by shadows |
[in] | pState | shading state |
void traceShadowAccumulateBegin | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo | |||
) |
Initialize frame buffer states for shadow area sampling, used for area lights, final gathering, etc. Note: should only be called from a light shader when not using a shadow map.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
void traceShadowAccumulateEnd | ( | unsigned int | pNumberOfFrameBuffers, | |
FrameBufferInfo * | pFrameBufferInfo, | |||
unsigned int | pNumberOfRays, | |||
const miColor & | pLightColor, | |||
const miColor & | pShadowColor, | |||
miState * | pState | |||
) |
Process accumulated shadow rays for light sampling Note: should only be called from a light shader when not using a shadow map.
[in] | pNumberOfFrameBuffers | the number of frame buffers in the state |
[in,out] | pFrameBufferInfo | the array of frame buffer info structures |
[in] | pNumberOfRays | the number of rays cast during the accumulation process |
[in] | pLightColor | unattenuated irradiance |
[in] | pShadowColor | Shadow Color |
[in] | pState | shading state |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |