openscenegraph
osgShadow::SoftShadowMap Class Reference

#include <SoftShadowMap>

Inheritance diagram for osgShadow::SoftShadowMap:
osgShadow::ShadowMap osgShadow::ShadowTechnique osg::Object osg::Referenced

Public Member Functions

 SoftShadowMap ()
 SoftShadowMap (const SoftShadowMap &es, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 META_Object (osgShadow, SoftShadowMap)
void setSoftnessWidth (float softnessWidth)
float getSoftnessWidth () const
void setJitteringScale (float jitteringScale)
float getJitteringScale () const
void setJitterTextureUnit (unsigned int jitterTextureUnit)
unsigned int getJitterTextureUnit () const
void setBias (float bias)
float getBias () const
Public Member Functions inherited from osgShadow::ShadowMap
 ShadowMap ()
 ShadowMap (const ShadowMap &es, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 META_Object (osgShadow, ShadowMap)
void setTextureUnit (unsigned int unit)
unsigned int getTextureUnit () const
void setPolygonOffset (const osg::Vec2 &polyOffset)
const osg::Vec2getPolygonOffset () const
void setAmbientBias (const osg::Vec2 &ambientBias)
const osg::Vec2getAmbientBias () const
void setTextureSize (const osg::Vec2s &textureSize)
const osg::Vec2sgetTextureSize () const
void setLight (osg::Light *light)
void setLight (osg::LightSource *ls)
void addShader (osg::Shader *shader)
template<class T>
void addShader (const osg::ref_ptr< T > &shader)
void clearShaderList ()
virtual void init ()
virtual void update (osg::NodeVisitor &nv)
virtual void cull (osgUtil::CullVisitor &cv)
virtual void cleanSceneGraph ()
virtual void resizeGLObjectBuffers (unsigned int maxSize)
virtual void releaseGLObjects (osg::State *=0) const
osg::ref_ptr< osg::CameramakeDebugHUD ()
Public Member Functions inherited from osgShadow::ShadowTechnique
 ShadowTechnique ()
 ShadowTechnique (const ShadowTechnique &es, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
virtual bool isSameKindAs (const osg::Object *obj) const
virtual const char * libraryName () const
virtual const char * className () const
virtual void setShadowedScene (ShadowedScene *ss)
ShadowedScenegetShadowedScene ()
const ShadowedScenegetShadowedScene () const
virtual void traverse (osg::NodeVisitor &nv)
virtual void dirty ()
Public Member Functions inherited from osg::Object
 Object ()
 Object (bool threadSafeRefUnref)
 Object (const Object &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
virtual ObjectcloneType () const =0
virtual Objectclone (const CopyOp &) const =0
std::string getCompoundClassName () const
virtual NodeasNode ()
virtual const NodeasNode () const
virtual NodeVisitorasNodeVisitor ()
virtual const NodeVisitorasNodeVisitor () const
virtual StateSetasStateSet ()
virtual const StateSetasStateSet () const
virtual StateAttributeasStateAttribute ()
virtual const StateAttributeasStateAttribute () const
virtual UniformasUniform ()
virtual const UniformasUniform () const
virtual CameraasCamera ()
virtual const CameraasCamera () const
virtual DrawableasDrawable ()
virtual const DrawableasDrawable () const
virtual CallbackasCallback ()
virtual const CallbackasCallback () const
virtual CallbackObjectasCallbackObject ()
virtual const CallbackObjectasCallbackObject () const
virtual UserDataContainerasUserDataContainer ()
virtual const UserDataContainerasUserDataContainer () const
virtual ValueObjectasValueObject ()
virtual const ValueObjectasValueObject () const
virtual ImageasImage ()
virtual const ImageasImage () const
virtual void setThreadSafeRefUnref (bool threadSafe)
virtual void setName (const std::string &name)
void setName (const char *name)
const std::string & getName () const
void setDataVariance (DataVariance dv)
DataVariance getDataVariance () const
virtual void computeDataVariance ()
void setUserDataContainer (osg::UserDataContainer *udc)
template<class T>
void setUserDataContainer (const ref_ptr< T > &udc)
osg::UserDataContainergetUserDataContainer ()
const osg::UserDataContainergetUserDataContainer () const
osg::UserDataContainergetOrCreateUserDataContainer ()
virtual void setUserData (Referenced *obj)
template<class T>
void setUserData (const ref_ptr< T > &ud)
virtual ReferencedgetUserData ()
virtual const ReferencedgetUserData () const
template<typename T>
bool getUserValue (const std::string &name, T &value) const
template<typename T>
void setUserValue (const std::string &name, const T &value)
template<typename T>
BoolValueObject UCharValueObject UShortValueObject UIntValueObject DoubleValueObject Vec3fValueObject Vec2dValueObject Vec4dValueObject PlaneValueObject MatrixdValueObject BoundingBoxdValueObject BoundingSpheredValueObject bool getUserValue (const std::string &name, T &value) const
Public Member Functions inherited from osg::Referenced
 Referenced ()
 Referenced (bool threadSafeRefUnref)
 Referenced (const Referenced &)
Referencedoperator= (const Referenced &)
bool getThreadSafeRefUnref () const
OpenThreads::MutexgetRefMutex () const
int ref () const
int unref () const
int unref_nodelete () const
int referenceCount () const
ObserverSetgetObserverSet () const
ObserverSetgetOrCreateObserverSet () const
void addObserver (Observer *observer) const
void removeObserver (Observer *observer) const

Protected Member Functions

virtual ~SoftShadowMap (void)
void createUniforms ()
void createShaders ()
void initJittering (osg::StateSet *ss)
Protected Member Functions inherited from osgShadow::ShadowMap
virtual ~ShadowMap (void)
Protected Member Functions inherited from osgShadow::ShadowTechnique
osg::Vec3 computeOrthogonalVector (const osg::Vec3 &direction) const
virtual ~ShadowTechnique ()
Protected Member Functions inherited from osg::Object
virtual ~Object ()
Protected Member Functions inherited from osg::Referenced
virtual ~Referenced ()
void signalObserversAndDelete (bool signalDelete, bool doDelete) const
void deleteUsingDeleteHandler () const

Protected Attributes

osg::ref_ptr< osg::Uniform_softnessWidthUniform
osg::ref_ptr< osg::Uniform_jitteringScaleUniform
float _softnessWidth
float _jitteringScale
unsigned int _jitterTextureUnit
Protected Attributes inherited from osgShadow::ShadowMap
osg::ref_ptr< osg::Camera_camera
osg::ref_ptr< osg::TexGen_texgen
osg::ref_ptr< osg::Texture2D_texture
osg::ref_ptr< osg::StateSet_stateset
osg::ref_ptr< osg::Program_program
osg::ref_ptr< osg::Light_light
osg::ref_ptr< osg::LightSource_ls
osg::ref_ptr< osg::Uniform_ambientBiasUniform
UniformList _uniformList
ShaderList _shaderList
unsigned int _baseTextureUnit
unsigned int _shadowTextureUnit
osg::Vec2 _polyOffset
osg::Vec2 _ambientBias
osg::Vec2s _textureSize
Protected Attributes inherited from osgShadow::ShadowTechnique
ShadowedScene_shadowedScene
bool _dirty
Protected Attributes inherited from osg::Object
std::string _name
DataVariance _dataVariance
osg::UserDataContainer_userDataContainer
Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr _observerSet
OpenThreads::Atomic _refCount

Additional Inherited Members

Public Types inherited from osgShadow::ShadowMap
typedef std::vector< osg::ref_ptr< osg::Uniform > > UniformList
typedef std::vector< osg::ref_ptr< osg::Shader > > ShaderList
Public Types inherited from osg::Object
enum  DataVariance { DYNAMIC , STATIC , UNSPECIFIED }
Static Public Member Functions inherited from osg::Referenced
static OpenThreads::MutexgetGlobalReferencedMutex ()
static void setDeleteHandler (DeleteHandler *handler)
static DeleteHandlergetDeleteHandler ()

Detailed Description

SoftShadowMap provides an implementation of soft shadows with shadow maps.

Constructor & Destructor Documentation

◆ SoftShadowMap() [1/2]

osgShadow::SoftShadowMap::SoftShadowMap ( )

Referenced by META_Object(), and SoftShadowMap().

◆ SoftShadowMap() [2/2]

osgShadow::SoftShadowMap::SoftShadowMap ( const SoftShadowMap & es,
const osg::CopyOp & copyop = osg::CopyOp::SHALLOW_COPY )

◆ ~SoftShadowMap()

virtual osgShadow::SoftShadowMap::~SoftShadowMap ( void )
inlineprotectedvirtual

Member Function Documentation

◆ createShaders()

void osgShadow::SoftShadowMap::createShaders ( )
protectedvirtual

Reimplemented from osgShadow::ShadowMap.

◆ createUniforms()

void osgShadow::SoftShadowMap::createUniforms ( )
protectedvirtual

Create the managed Uniforms

Reimplemented from osgShadow::ShadowMap.

◆ getBias()

float osgShadow::SoftShadowMap::getBias ( ) const
inline

Return the bias value

References osgShadow::ShadowMap::getPolygonOffset().

◆ getJitteringScale()

float osgShadow::SoftShadowMap::getJitteringScale ( ) const
inline

Get the value used for jittering scale in the shader.

References _jitteringScale.

◆ getJitterTextureUnit()

unsigned int osgShadow::SoftShadowMap::getJitterTextureUnit ( ) const
inline

Get the texture unit that the jitter texture will be applied on.

References _jitterTextureUnit.

◆ getSoftnessWidth()

float osgShadow::SoftShadowMap::getSoftnessWidth ( ) const
inline

Get the value used for width of the soft penumbra in the shader.

References _softnessWidth.

◆ initJittering()

void osgShadow::SoftShadowMap::initJittering ( osg::StateSet * ss)
protected

◆ META_Object()

osgShadow::SoftShadowMap::META_Object ( osgShadow ,
SoftShadowMap  )

References SoftShadowMap().

◆ setBias()

void osgShadow::SoftShadowMap::setBias ( float bias)
inline

Add a small bias to the z-value, this can reduce shadow acne problem. This is the same as calling setPolygonOffset(osg::Vec2(bias,0)); Suitable values are 0-0.005 Default is 0.

References osgShadow::ShadowMap::setPolygonOffset().

◆ setJitteringScale()

void osgShadow::SoftShadowMap::setJitteringScale ( float jitteringScale)

Set the values for jittering scale the shader will use. Zero is no jittering (i.e. see the banding in penumbra) High values (>64) cause 'pixelization' of the penumbra. Usually but not necessarily power of two number. Default is 32.

◆ setJitterTextureUnit()

void osgShadow::SoftShadowMap::setJitterTextureUnit ( unsigned int jitterTextureUnit)

Set the texture unit that the jitter texture will be applied on.

◆ setSoftnessWidth()

void osgShadow::SoftShadowMap::setSoftnessWidth ( float softnessWidth)

Set the values for width of the soft penumbra the shader will use. Zero is for hard shadow (no penumbra). 0.01 is already very soft penumbra. Default is 0.005.

Member Data Documentation

◆ _jitteringScale

float osgShadow::SoftShadowMap::_jitteringScale
protected

Referenced by getJitteringScale().

◆ _jitteringScaleUniform

osg::ref_ptr<osg::Uniform> osgShadow::SoftShadowMap::_jitteringScaleUniform
protected

◆ _jitterTextureUnit

unsigned int osgShadow::SoftShadowMap::_jitterTextureUnit
protected

Referenced by getJitterTextureUnit().

◆ _softnessWidth

float osgShadow::SoftShadowMap::_softnessWidth
protected

Referenced by getSoftnessWidth().

◆ _softnessWidthUniform

osg::ref_ptr<osg::Uniform> osgShadow::SoftShadowMap::_softnessWidthUniform
protected

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