VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Friends
makVrv::DtOsgShadowTechnique Class Reference

The DtOsgShadowTechnique class implements a robust shadow mapping system.

Inheritance diagram for makVrv::DtOsgShadowTechnique:
Inheritance graph
[legend]

Classes

struct  CameraDescription
 

Public Member Functions

 DtOsgShadowTechnique (DtDe &de)
 
 DtOsgShadowTechnique (const DtOsgShadowTechnique &es, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 
virtual osg::Object * cloneType () const
 
virtual osg::Object * clone (const osg::CopyOp &copyop) const
 
virtual bool isSameKindAs (const osg::Object *obj) const
 
virtual const charlibraryName () const
 
virtual const charclassName () const
 
virtual void init ()
 
virtual void postConstructionInit ()
 
virtual void update (osg::NodeVisitor &nv)
 
virtual void cull (osgUtil::CullVisitor &cv)
 
virtual void cleanSceneGraph ()
 
void setChannelShadowState (DtOsgChannel *osgChannel, bool enable)
 
bool getChannelShadowSettings (DtOsgChannel *osgChannel, DtShadowSettingsObject **shadowSettingObject, bool *isPlanView)
 
bool getCameraCloudShadowMap (osg::Camera *camera, unsigned int *textureIndex, osg::Matrix *textureViewProjMatrix, unsigned int *textureIndex2, osg::Matrix *textureViewProjMatrix2)
 
void setGlobalLight (osg::LightSource *light)
 
const osg::LightSource * getGlobalLight () const
 
const osg::StateSet * mapCameraToStateSet (const osg::Camera *camera) const
 
virtual void resizeGLObjectBuffers (unsigned int maxSize) override
 
virtual void releaseGLObjects (osg::State *=0) const override
 

Static Public Member Functions

static const std::string & shadowCameraPrefixString (void)
 
static const std::string & shadowSDSMCameraPrefixString (void)
 

Public Attributes

class DtShadowTweakablesmyShadowUI
 

Static Public Attributes

static const int MAX_NUM_CASCADES = 6
 

Protected Types

typedef std::map< const
osg::Camera *, osg::ref_ptr
< DtPerChannelData > > 
PerChannelDataMap
 
typedef std::vector
< osg::ref_ptr
< DtPerChannelData > > 
PerChannelDataVector
 

Protected Member Functions

virtual void reInitialize (unsigned int quality)
 
virtual void cleanupOldPerChannelData ()
 
virtual bool configureShadowTraversalNodeMask (bool traverseEntities, bool traverseProps, bool traverseTerrain)
 
virtual void slot_refresh_maps ()
 
virtual std::string generateVertexShader (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
virtual std::string generateFragmentShader (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
virtual std::string generateCloudShadowVertexShader (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
unsigned int getFilterCount (DtShadowSettingsObject *shadowSettingObject)
 
bool getReceiveShadows (const DtShadowSettingsObject *shadowSettings) const
 
virtual ~DtOsgShadowTechnique ()
 

Protected Attributes

PerChannelDataMap myPerChannelDataMap
 
PerChannelDataVector myPerChannelDataDeleteList
 
osg::ref_ptr< osg::LightSource > myGlobalLight
 
osg::ref_ptr< osg::Uniform > myLightDirectionUniform
 
osg::ref_ptr< osg::Uniform > myReceiveShadowsUniform
 
DtDemyDe
 
osg::ref_ptr< osg::Program > myVsmBlurTextureProgram
 
osg::ref_ptr< osg::Program > myVsmBlurTexArrayProgram
 
osg::ref_ptr< osg::Program > myVsmPassthroughArrayProgram
 
osg::ref_ptr< osg::Program > myVsmPassthroughProgram
 
osg::ref_ptr< osg::Program > myEsmBlurTextureProgram
 
osg::ref_ptr< osg::Program > myEsmBlurTexArrayProgram
 
osg::ref_ptr< osg::Program > myEVsmBlurTextureProgram
 
osg::ref_ptr< osg::Program > myEVsmBlurTexArrayProgram
 
std::vector< osg::ref_ptr
< osg::Camera > > 
myDeferredDeleteCamera
 
tbb::mutex myDeferredCameraDeletionMutex
 
bool myMulticastIsSupported
 
bool myShadingRateIsSupported
 

Static Protected Attributes

static const std::string myShadowCameraPrefixString
 
static const std::string mySDSMShadowCameraPrefixString
 

Private Member Functions

std::string generateFragmentComputeShadowFunction (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
std::string generateFragmentUniformAndVariables (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
std::string generateFragmentMain (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
bool getCameraSettings (osg::Camera *viewCamera, DtPerChannelData **perChannelData, DtShadowSettingsObject **shadowSettingObject, bool *isPlanView)
 
void initPerChannelData (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
void installReceiverVPandSharedStateSet (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
void triggerExternalModuleShaderRefresh ()
 
void installSDSM (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
void traverseSDSMCameras (DtCurrentPassData &d, osgUtil::CullVisitor &cv)
 
void installCloudShadows (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
void updateCloudShadows (osg::RenderInfo &renderInfo, osg::Camera *shadowCamera)
 
void updateCascadeImportance (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject)
 
osg::Program * getProgramFromFile (const std::string &szVertexShader, const std::string &szFragmentShader)
 
void installPreFilter (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject, osg::Camera *depthCamera, osg::Camera *xBlurCamera, osg::Camera *yBlurCamera, osg::Texture2DArray *texture, osg::StateSet *stateSet, unsigned int textureUnit)
 
void installPreFilter (DtPerChannelData *perChannelData, DtShadowSettingsObject *shadowSettingObject, osg::Camera *depthCamera, osg::Camera *xBlurCamera, osg::Camera *yBlurCamera, unsigned int textureLayer, osg::Texture2DArray *texture2DArray, osg::Texture2DArray *preFilterTexture2DArray1, osg::Texture2DArray *preFilterTexture2DArray2)
 
void setupReverseZBuffer (osg::Camera *depthCamera, osg::Camera *xBlurCamera, osg::Camera *yBlurCamera)
 
void setupBlurCamera (osg::Camera *camera, osg::ref_ptr< osg::Program > &blurProgram, const osg::Vec2 &direction)
 
osg::Texture2D * createTexture2D (int width, int height, GLenum internalFormat, GLenum sourceFormat, GLenum sourceType, bool shadowComparisonMode, osg::Texture2D::FilterMode minFilter=osg::Texture2D::NEAREST, osg::Texture2D::FilterMode magFilter=osg::Texture2D::NEAREST)
 
osg::Texture2DArray * createTexture2DArray (int width, int height, int depth, GLenum internalFormat, GLenum sourceFormat, GLenum sourceType, bool shadowComparisonMode, osg::Texture2DArray::FilterMode minFilter=osg::Texture2DArray::NEAREST, osg::Texture2DArray::FilterMode magFilter=osg::Texture2DArray::NEAREST)
 
osg::Camera * createCamera (int width, int height, GLbitfield clearMask)
 
osg::Geode * createFullScreenQuad (const osg::Vec2 &size, const osg::Vec2 &uvStart, const osg::Vec2 &uvStop)
 
osg::Camera * createHudCamera (int width, int height, GLbitfield clearMask, const char *name=NULL)
 
double computeUniformSplit (double nearDistance, double farDistance, unsigned int splitIndex, unsigned int numSplits)
 
double computeLogarithmicSplit (double nearDistance, double farDistance, unsigned int splitIndex, unsigned int numSplits)
 
CameraDescription constructSplitLightCamera (const DtCurrentPassData &d, int split_index, bool farCascade=false)
 
void updateCameras (const DtCurrentPassData &d)
 
void getSplitCameraDistances (const DtCurrentPassData &d, int split_index, double &splitCamNear, double &splitCamFar)
 
void setDirty (bool dirty)
 
void frustumBoundingBoxLightViewSpace (const DtCurrentPassData &d, int split_index, const osg::Matrix &lightViewMatrix, double nearPlane, double farPlane, osg::Vec3d &minFrustum, osg::Vec3d &maxFrustum)
 

Friends

struct DtCurrentPassData
 
struct DtCloudShadowPreDrawCallback
 

Member Typedef Documentation

typedef std::map< const osg::Camera*, osg::ref_ptr<DtPerChannelData> > makVrv::DtOsgShadowTechnique::PerChannelDataMap
protected

Constructor & Destructor Documentation

makVrv::DtOsgShadowTechnique::DtOsgShadowTechnique ( DtDe de)

CTOR.

makVrv::DtOsgShadowTechnique::DtOsgShadowTechnique ( const DtOsgShadowTechnique es,
const osg::CopyOp &  copyop = osg::CopyOp::SHALLOW_COPY 
)

DTOR.

virtual makVrv::DtOsgShadowTechnique::~DtOsgShadowTechnique ( )
protectedvirtual

DTOR.

Member Function Documentation

virtual osg::Object* makVrv::DtOsgShadowTechnique::cloneType ( ) const
inlinevirtual

Creates a new object of Type DtOsgShadowTechnique.

virtual osg::Object* makVrv::DtOsgShadowTechnique::clone ( const osg::CopyOp &  copyop) const
inlinevirtual

Creates a new copy of DtOsgShadowTechnique object.

virtual bool makVrv::DtOsgShadowTechnique::isSameKindAs ( const osg::Object *  obj) const
inlinevirtual

Returns true if object is of the DtOsgShadowTechnique class. Otherwise, returns false.

virtual const char* makVrv::DtOsgShadowTechnique::libraryName ( ) const
inlinevirtual

Returns the namespace string.

virtual const char* makVrv::DtOsgShadowTechnique::className ( ) const
inlinevirtual

Returns the class name string.

virtual void makVrv::DtOsgShadowTechnique::init ( )
virtual

Overrides the osgShadow::ShadowTechnique::init method.

virtual void makVrv::DtOsgShadowTechnique::postConstructionInit ( )
virtual

another init function

virtual void makVrv::DtOsgShadowTechnique::update ( osg::NodeVisitor &  nv)
virtual

Overrides the osgShadow::ShadowTechnique::update method.

virtual void makVrv::DtOsgShadowTechnique::cull ( osgUtil::CullVisitor &  cv)
virtual

Overrides the osgShadow::ShadowTechnique::cull method.

virtual void makVrv::DtOsgShadowTechnique::cleanSceneGraph ( )
virtual

Overrides the osgShadow::ShadowTechnique::cleanSceneGraph method.

void makVrv::DtOsgShadowTechnique::setChannelShadowState ( DtOsgChannel osgChannel,
bool  enable 
)

Set the shadow mode for channels.

bool makVrv::DtOsgShadowTechnique::getChannelShadowSettings ( DtOsgChannel osgChannel,
DtShadowSettingsObject **  shadowSettingObject,
bool isPlanView 
)

Gets the shadow settings for this channel.

bool makVrv::DtOsgShadowTechnique::getCameraCloudShadowMap ( osg::Camera *  camera,
unsigned int textureIndex,
osg::Matrix *  textureViewProjMatrix,
unsigned int textureIndex2,
osg::Matrix *  textureViewProjMatrix2 
)

Gets the cloud shadow map for this camera.

void makVrv::DtOsgShadowTechnique::setGlobalLight ( osg::LightSource *  light)
inline

Sets global light source.

const osg::LightSource* makVrv::DtOsgShadowTechnique::getGlobalLight ( ) const
inline

Gets global light source.

static const std::string& makVrv::DtOsgShadowTechnique::shadowCameraPrefixString ( void  )
static
static const std::string& makVrv::DtOsgShadowTechnique::shadowSDSMCameraPrefixString ( void  )
static
const osg::StateSet* makVrv::DtOsgShadowTechnique::mapCameraToStateSet ( const osg::Camera *  camera) const

returns shared state set uniform infor for this camera, may be null

virtual void makVrv::DtOsgShadowTechnique::resizeGLObjectBuffers ( unsigned int  maxSize)
overridevirtual

override from osg::ShadowTechnique

virtual void makVrv::DtOsgShadowTechnique::releaseGLObjects ( osg::State *  = 0) const
overridevirtual

override from osg::ShadowTechnique

virtual void makVrv::DtOsgShadowTechnique::reInitialize ( unsigned int  quality)
protectedvirtual

Re-initialize perChannelData using the specified quality setting.

virtual void makVrv::DtOsgShadowTechnique::cleanupOldPerChannelData ( )
protectedvirtual

Since the perChannelData can hold graphics objects we need to clear them in the main render thread. only call this from the main render thread.

virtual bool makVrv::DtOsgShadowTechnique::configureShadowTraversalNodeMask ( bool  traverseEntities,
bool  traverseProps,
bool  traverseTerrain 
)
protectedvirtual
virtual void makVrv::DtOsgShadowTechnique::slot_refresh_maps ( )
protectedvirtual
virtual std::string makVrv::DtOsgShadowTechnique::generateVertexShader ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
protectedvirtual

Generates an optimized vertex shader given the shadow settings.

virtual std::string makVrv::DtOsgShadowTechnique::generateFragmentShader ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
protectedvirtual

Generates an optimized fragment shader given the shadow settings.

virtual std::string makVrv::DtOsgShadowTechnique::generateCloudShadowVertexShader ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
protectedvirtual

Generates an cloud shadow vertex shader given the shadow settings.

unsigned int makVrv::DtOsgShadowTechnique::getFilterCount ( DtShadowSettingsObject shadowSettingObject)
protected

Gets the number of taps for percentage closer filtering(PCF)

bool makVrv::DtOsgShadowTechnique::getReceiveShadows ( const DtShadowSettingsObject shadowSettings) const
protected

True if scene receives shadows from any light casting source. This is used to bypass some shadow work otherwise.

std::string makVrv::DtOsgShadowTechnique::generateFragmentComputeShadowFunction ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Generates an optimized fragment compute shadow function given the shadow settings.

std::string makVrv::DtOsgShadowTechnique::generateFragmentUniformAndVariables ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Generates an optimized fragment uniforms and variables given the shadow settings.

std::string makVrv::DtOsgShadowTechnique::generateFragmentMain ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Generates an optimized fragment main given the shadow settings.

bool makVrv::DtOsgShadowTechnique::getCameraSettings ( osg::Camera *  viewCamera,
DtPerChannelData **  perChannelData,
DtShadowSettingsObject **  shadowSettingObject,
bool isPlanView 
)
private

Gets camera shadow settings.

void makVrv::DtOsgShadowTechnique::initPerChannelData ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Initializes per channel data.

void makVrv::DtOsgShadowTechnique::installReceiverVPandSharedStateSet ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Initializes the virtual program and shared stateset for perChannelData.

void makVrv::DtOsgShadowTechnique::triggerExternalModuleShaderRefresh ( )
private
void makVrv::DtOsgShadowTechnique::installSDSM ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Install SDSM.

void makVrv::DtOsgShadowTechnique::traverseSDSMCameras ( DtCurrentPassData d,
osgUtil::CullVisitor &  cv 
)
private

Traverses SDSM Cameras.

void makVrv::DtOsgShadowTechnique::installCloudShadows ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Initializes per channel cloud shadows.

void makVrv::DtOsgShadowTechnique::updateCloudShadows ( osg::RenderInfo &  renderInfo,
osg::Camera *  shadowCamera 
)
private

Updates per camera cloud shadows.

void makVrv::DtOsgShadowTechnique::updateCascadeImportance ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject 
)
private

Updates Cascade Importance.

osg::Program* makVrv::DtOsgShadowTechnique::getProgramFromFile ( const std::string &  szVertexShader,
const std::string &  szFragmentShader 
)
private

Creates a Program with a vertex and fragment shader.

void makVrv::DtOsgShadowTechnique::installPreFilter ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject,
osg::Camera *  depthCamera,
osg::Camera *  xBlurCamera,
osg::Camera *  yBlurCamera,
osg::Texture2DArray *  texture,
osg::StateSet *  stateSet,
unsigned int  textureUnit 
)
private

Installs PreFilter for texture 2d.

void makVrv::DtOsgShadowTechnique::installPreFilter ( DtPerChannelData perChannelData,
DtShadowSettingsObject shadowSettingObject,
osg::Camera *  depthCamera,
osg::Camera *  xBlurCamera,
osg::Camera *  yBlurCamera,
unsigned int  textureLayer,
osg::Texture2DArray *  texture2DArray,
osg::Texture2DArray *  preFilterTexture2DArray1,
osg::Texture2DArray *  preFilterTexture2DArray2 
)
private

Installs PreFilter for texture 2d Array.

void makVrv::DtOsgShadowTechnique::setupReverseZBuffer ( osg::Camera *  depthCamera,
osg::Camera *  xBlurCamera,
osg::Camera *  yBlurCamera 
)
private
void makVrv::DtOsgShadowTechnique::setupBlurCamera ( osg::Camera *  camera,
osg::ref_ptr< osg::Program > &  blurProgram,
const osg::Vec2 &  direction 
)
private
osg::Texture2D* makVrv::DtOsgShadowTechnique::createTexture2D ( int  width,
int  height,
GLenum  internalFormat,
GLenum  sourceFormat,
GLenum  sourceType,
bool  shadowComparisonMode,
osg::Texture2D::FilterMode  minFilter = osg::Texture2D::NEAREST,
osg::Texture2D::FilterMode  magFilter = osg::Texture2D::NEAREST 
)
private

Creates 2d texture.

osg::Texture2DArray* makVrv::DtOsgShadowTechnique::createTexture2DArray ( int  width,
int  height,
int  depth,
GLenum  internalFormat,
GLenum  sourceFormat,
GLenum  sourceType,
bool  shadowComparisonMode,
osg::Texture2DArray::FilterMode  minFilter = osg::Texture2DArray::NEAREST,
osg::Texture2DArray::FilterMode  magFilter = osg::Texture2DArray::NEAREST 
)
private

Creates 2d texture array.

osg::Camera* makVrv::DtOsgShadowTechnique::createCamera ( int  width,
int  height,
GLbitfield  clearMask 
)
private

Creates a simple camera.

osg::Geode* makVrv::DtOsgShadowTechnique::createFullScreenQuad ( const osg::Vec2 &  size,
const osg::Vec2 &  uvStart,
const osg::Vec2 &  uvStop 
)
private

Creates a full screen quad.

osg::Camera* makVrv::DtOsgShadowTechnique::createHudCamera ( int  width,
int  height,
GLbitfield  clearMask,
const char name = NULL 
)
private

Creates a hud camera with a full screen quad.

double makVrv::DtOsgShadowTechnique::computeUniformSplit ( double  nearDistance,
double  farDistance,
unsigned int  splitIndex,
unsigned int  numSplits 
)
private

Compute uniform split distance for specified cascade.

double makVrv::DtOsgShadowTechnique::computeLogarithmicSplit ( double  nearDistance,
double  farDistance,
unsigned int  splitIndex,
unsigned int  numSplits 
)
private

Compute logarithm split distance for specified cascade.

CameraDescription makVrv::DtOsgShadowTechnique::constructSplitLightCamera ( const DtCurrentPassData d,
int  split_index,
bool  farCascade = false 
)
private

Compute logarithm split distance for specified cascade.

void makVrv::DtOsgShadowTechnique::updateCameras ( const DtCurrentPassData d)
private
void makVrv::DtOsgShadowTechnique::getSplitCameraDistances ( const DtCurrentPassData d,
int  split_index,
double splitCamNear,
double splitCamFar 
)
private
void makVrv::DtOsgShadowTechnique::setDirty ( bool  dirty)
inlineprivate

Sets dirty for shadow technique's to true or false.

void makVrv::DtOsgShadowTechnique::frustumBoundingBoxLightViewSpace ( const DtCurrentPassData d,
int  split_index,
const osg::Matrix &  lightViewMatrix,
double  nearPlane,
double  farPlane,
osg::Vec3d &  minFrustum,
osg::Vec3d &  maxFrustum 
)
private

Friends And Related Function Documentation

friend struct DtCurrentPassData
friend
friend struct DtCloudShadowPreDrawCallback
friend

Member Data Documentation

class DtShadowTweakables* makVrv::DtOsgShadowTechnique::myShadowUI
const int makVrv::DtOsgShadowTechnique::MAX_NUM_CASCADES = 6
static
PerChannelDataMap makVrv::DtOsgShadowTechnique::myPerChannelDataMap
protected
PerChannelDataVector makVrv::DtOsgShadowTechnique::myPerChannelDataDeleteList
protected
osg::ref_ptr<osg::LightSource> makVrv::DtOsgShadowTechnique::myGlobalLight
protected
osg::ref_ptr<osg::Uniform> makVrv::DtOsgShadowTechnique::myLightDirectionUniform
protected
osg::ref_ptr<osg::Uniform> makVrv::DtOsgShadowTechnique::myReceiveShadowsUniform
protected
DtDe& makVrv::DtOsgShadowTechnique::myDe
protected
const std::string makVrv::DtOsgShadowTechnique::myShadowCameraPrefixString
staticprotected
const std::string makVrv::DtOsgShadowTechnique::mySDSMShadowCameraPrefixString
staticprotected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myVsmBlurTextureProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myVsmBlurTexArrayProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myVsmPassthroughArrayProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myVsmPassthroughProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myEsmBlurTextureProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myEsmBlurTexArrayProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myEVsmBlurTextureProgram
protected
osg::ref_ptr<osg::Program> makVrv::DtOsgShadowTechnique::myEVsmBlurTexArrayProgram
protected
std::vector<osg::ref_ptr<osg::Camera> > makVrv::DtOsgShadowTechnique::myDeferredDeleteCamera
protected
tbb::mutex makVrv::DtOsgShadowTechnique::myDeferredCameraDeletionMutex
protected
bool makVrv::DtOsgShadowTechnique::myMulticastIsSupported
protected
bool makVrv::DtOsgShadowTechnique::myShadingRateIsSupported
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)