adskFrameBufferState.h File Reference


Detailed Description

Structures and functions for manipulating the frame buffer state.

#include "adskMayaState.h"
#include "adskMIDataPtr.h"
#include "shader.h"
#include "adskShaderSDKNamespaceBegin.h"
#include "adskShaderSDKNamespaceEnd.h"
#include "adskExport.h"
#include "adskRenderPassTypes.h"

Include dependency graph for adskFrameBufferState.h:
This graph shows which files directly or indirectly include this file:

Classes

struct   FrameBufferState
  Data structure that stores state information used for frame buffer management. More...
struct   FrameBufferAccumulator
  Data structure that stores frame buffer state relative to a specific trace recursion level. More...
struct   FrameBufferInfo
  Data structure required to store the intermediate state for controlling frame buffer operations. More...
struct   PassTypeInfo
  Datastructure used internally to store type information on material render passes. More...
class   FrameBufferDisable
  Creating an object of this class will disable frame buffer contributions in indirect shader calls in the current thread for the lifetime of the object. More...

Enumerations

enum   FrameBufferFlagBits {
   FB_FLAG_NONE = 0, FB_FLAG_USE_TRANSPARENCY = 1 << 0, FB_FLAG_HOLDOUT = 1 << 1, FB_FLAG_REFLECT_HIDDEN = 1 << 2,
   FB_FLAG_REFRACT_HIDDEN = 1 << 3, FB_FLAG_HIDDEN_REFLECT = 1 << 4, FB_FLAG_HIDDEN_REFRACT = 1 << 5, FB_FLAG_TRANSPARENT_ATTENUATION = 1 << 6,
   FB_FLAG_COMPUTE_SHADOWS = 1 << 7, FB_FLAG_HIDDEN_SHADOWS = 1 << 8, FB_FLAG_LIGHT_ACTIVE = 1 << 9, FB_FLAG_SAMPLING_LIGHT = 1 << 10,
   FB_FLAG_NON_ADSK_LIGHT = 1 << 11, FB_FLAG_SHADOW_PASS = 1 << 12, FB_FLAG_DISABLE = 1 << 13, FB_FLAG_NO_COMPOSITING = 1 << 14,
   FB_FLAG_CUSTOM_PASS_EVAL = 1 << 15, FB_FLAG_CUSTOM_PASS_EVAL_GUARD = 1 << 16
}
  Bit flags used to describe the state and rendering options for render passes. The flags marked as "global" are only used on frame buffer 0, and store state information that is global to all frame buffers. More...
enum   FrameBufferAccumulatorFlagBits {
   FB_ACC_FLAG_NONE = 0, FB_ACC_FLAG_HIDDEN = 1 << 0, FB_ACC_FLAG_FORCE_PROPAGATION = 1 << 1, FB_ACC_FLAG_BLOCK_REFLECTION = 1 << 2,
   FB_ACC_FLAG_BLOCK_REFRACTION = 1 << 3, FB_ACC_FLAG_BLOCK_ALL = 1 << 4
}
  Bit flags that describe the state of frame buffer contributions for the current trace level. The *BLOCK* flags are use for ray-tracing optimization. More...
enum   FrameBufferStateFlagBits {
   FB_STATE_FLAG_NONE = 0, FB_STATE_ALLOCATE_TEMP_DATA = 1 << 0, FB_STATE_PRETEND_NO_HIT = 1 << 1, FB_STATE_TRACED_THROUGH = 1 << 2,
   FB_STATE_NO_MASTERBEAUTY = 1 << 3
}
  Bit flags used to describe internal state of the frame buffer framework. Unlike FrameBufferFlagBits, the flags are stored in a member of FrameBufferState, which exists even when there are no material passes. More...

Functions

bool  isVolumePass (int index, PassTypeInfo *pPassTypeInfo)
  Tests whether a given render pass is a volume rendering pass.
MIDataPtr< FrameBufferData >  getFrameBufferDataBlock (miState *pState)
  Retrieve the user data block that contains all the frame buffer configuration information for the current camera.
unsigned int  getFrameBufferInfo (const miState *const pState, PassTypeInfo *&pPassTypeInfo, FrameBufferInfo *&pFrameBufferInfo)
  Retrieve pass and frame buffer information.
FrameBufferState getFrameBufferState (const miState *const pState)
  Retrieve state information used for frame buffer management.
miInteger  getNonMaterialPassFrameBufferIndex (miState *pState, miInteger pPassNumber)
  Retrieve non material pass frame buffer index.

Enumeration Type Documentation

Bit flags that describe the state of frame buffer contributions for the current trace level. The *BLOCK* flags are use for ray-tracing optimization.

Enumerator:
FB_ACC_FLAG_NONE  No flags.
FB_ACC_FLAG_HIDDEN  Indicates that the current ray-material intersection does not contribute.
FB_ACC_FLAG_FORCE_PROPAGATION  Indicates that child rays must be cast even if the hidden flag is on.
FB_ACC_FLAG_BLOCK_REFLECTION  The pass does not require child reflection rays to be cast.
FB_ACC_FLAG_BLOCK_REFRACTION  The pass does not require child refraction rays to be cast.
FB_ACC_FLAG_BLOCK_ALL  The pass does not require any child rays to be cast, including transparency.

Bit flags used to describe the state and rendering options for render passes. The flags marked as "global" are only used on frame buffer 0, and store state information that is global to all frame buffers.

Enumerator:
FB_FLAG_NONE  No flags.
FB_FLAG_USE_TRANSPARENCY  The render pass uses transparency.
FB_FLAG_HOLDOUT  The render pass uses holdout.
FB_FLAG_REFLECT_HIDDEN  Hidden objects are visible in reflections for the current render pass.
FB_FLAG_REFRACT_HIDDEN  Hidden objects are visible in refractions for the current render pass.
FB_FLAG_HIDDEN_REFLECT  Hidden objects cast reflections for the current render pass.
FB_FLAG_HIDDEN_REFRACT  Hidden objects cast refractions for the current render pass.
FB_FLAG_TRANSPARENT_ATTENUATION  The render pass is to be modulated by its opacity.
FB_FLAG_COMPUTE_SHADOWS  The renderpass contains shadows.
FB_FLAG_HIDDEN_SHADOWS  Hidden objects cast shadows for in the render pass.
FB_FLAG_LIGHT_ACTIVE  Indicates whether the current light contributes to the render pass.
FB_FLAG_SAMPLING_LIGHT  Indicates that the shader is inside a light sampling loop (global).
FB_FLAG_NON_ADSK_LIGHT  Indicates that the current light shader is not compliant with the SDK (global).
FB_FLAG_SHADOW_PASS  The render pass is illuminated by shadow light differentials.
FB_FLAG_DISABLE  Turn off frame buffer contribution (global), useful for invoking upstream shaders.
FB_FLAG_NO_COMPOSITING  Indicates a render pass type that does not support any form of compositing.
FB_FLAG_CUSTOM_PASS_EVAL  Indicates that the shading engine is currently evaluating custom render pass nodes in forced evaluation mode.
FB_FLAG_CUSTOM_PASS_EVAL_GUARD  Recursion guard for custom render passes in forced evaluation mode.

Bit flags used to describe internal state of the frame buffer framework. Unlike FrameBufferFlagBits, the flags are stored in a member of FrameBufferState, which exists even when there are no material passes.

Enumerator:
FB_STATE_FLAG_NONE  No flags.
FB_STATE_ALLOCATE_TEMP_DATA  Indicate whether temp data should be allocated on the heap.
FB_STATE_PRETEND_NO_HIT  Result of cutaway opacity calculation.
FB_STATE_TRACED_THROUGH  Indicates whether a transparency ray was cast from the current intersection.
FB_STATE_NO_MASTERBEAUTY  Indicates that the current ray was cast solely for render passes and does not contribute to the master beauty.

Function Documentation

MIDataPtr<FrameBufferData> getFrameBufferDataBlock ( miState *  pState  ) 

Retrieve the user data block that contains all the frame buffer configuration information for the current camera.

Parameters:
[in]  pState  the shading state
Returns:
The data block

unsigned int getFrameBufferInfo ( const miState *const   pState,
PassTypeInfo *&  pPassTypeInfo,
FrameBufferInfo *&  pFrameBufferInfo  
)

Retrieve pass and frame buffer information.

Parameters:
[in]  pState  the shading state
[out]  pPassTypeInfo  pointer to the pass type info shader state
[out]  pFrameBufferInfo  pointer to the frame buffer info shader state
Returns:
Number of frame buffers

FrameBufferState* getFrameBufferState ( const miState *const   pState  ) 

Retrieve state information used for frame buffer management.

Parameters:
[in]  pState  the shading state
Returns:
reference to the frame buffer state structure

miInteger getNonMaterialPassFrameBufferIndex ( miState *  pState,
miInteger  pPassNumber  
)

Retrieve non material pass frame buffer index.

Parameters:
[in]  pState  the shading state
[in]  pPassNumber  the number of the pass
Returns:
The frame buffer index.

bool isVolumePass ( int  index,
PassTypeInfo pPassTypeInfo  
) [inline]

Tests whether a given render pass is a volume rendering pass.

Parameters:
[in]  index  the render pass index
[in]  pPassTypeInfo  pointer to the pass type info array
Returns:
true if the pass is a volume pass

Autodesk® Maya® 2012 © 2010 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6