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

DtShaderEffectRain injects custom shaders into the scene, Handles rain on the ground causing the ground to look damp. Also adds an effect to puddled areas which show rain drops in the puddles.

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

Public Member Functions

 DtShaderEffectRain (DtDe &de)
 
virtual ~DtShaderEffectRain ()
 
 DtShaderEffectRain ()=delete
 
 DtShaderEffectRain (const DtShaderEffectRain &)=delete
 
DtShaderEffectRainoperator= (const DtShaderEffectRain &)=delete
 
virtual void initializeEffect (const std::vector< osg::StateSet * > &stateSets)
 
virtual void registerWeatherEffectsObject (DtOsgWeatherEffectsObject *weatherEffectsObject)
 
virtual void releaseGLObjects (osg::State *state) override
 
virtual void updateImGui ()
 
virtual void updateUniforms ()
 
virtual void setCameraLocation (const DtVector &location)
 
virtual const DtVector & cameraLocation () const
 
virtual int rainEffectTextureSize (void) const
 
- Public Member Functions inherited from makVrv::DtShaderEffect
virtual ~DtShaderEffect ()
 
 DtShaderEffect ()=delete
 
 DtShaderEffect (const DtShaderEffect &)=delete
 
DtShaderEffectoperator= (const DtShaderEffect &)=delete
 
virtual void updateTextureUniforms ()
 
virtual void setWindSpeed (float speed)
 
virtual void setWindDirection (float direction)
 
virtual void setEffectDirty (bool dirty)
 
virtual bool effectDirty ()
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 
virtual ~DtVirtualBaseClass ()
 

Static Public Member Functions

static const std::string & theClassName ()
 

Protected Member Functions

virtual void installShader (const std::vector< osg::StateSet * > &stateSets)
 
virtual void uninstallShader (const std::vector< osg::StateSet * > &stateSets)
 
virtual DtRainEffectGenerationcreateRainEffectOp ()
 
virtual void removeRainEffectGenerationOp (void)
 
virtual void slot_rainAccumulationChanged (double depth)
 
virtual void updateEnabledState (const float depth)
 
- Protected Member Functions inherited from makVrv::DtShaderEffect
 DtShaderEffect (DtDe &de)
 
virtual int loadShaderEffectTexture (const std::string &filename, const std::string &uniformName)
 
virtual int addShaderEffectTexture (osg::Texture *shaderEffectTexture, const DtIndirectTexturePrototype *vrvTexture, const std::string &uniformName)
 

Protected Attributes

DtSignalConnectionManager myConnections
 
osg::ref_ptr< osg::Uniform > myEnableRainUniform
 
osg::ref_ptr< osg::Uniform > myRainUpThresholdUniform
 
osg::ref_ptr< osg::Uniform > myRainColorUniform
 
osg::ref_ptr< osg::Uniform > myRainMaskedRoadUniform
 
const DtIndirectTexturePrototypemyRainEffectVrvTexture = nullptr
 
DtIndirectGlTextureObjectmyRainEffectTextureBindless = nullptr
 
bool myRainEnabled
 
float myRainUpThresholdRange
 
float myRainUpThresholdMin
 
float myRainMaskedRoadMax
 
float myRainMaskedRoadRange
 
float myRainAccumulationDepth
 
bool myEnablePuddleEffects
 
osg::Vec4 myRainColor
 
DtOsgWeatherEffectsObjectmyWeatherEffectsObject
 
DtRainEffectGenerationmyRainEffectGenerationOp = nullptr
 
DtVector myCameraLocation
 
double myCameraAltitude
 
float myPrecipitationIntensity
 
const int myRainEffectTextureSize = 512
 
- Protected Attributes inherited from makVrv::DtShaderEffect
DtDemyDe
 
TextureDataPtrVector myShaderEffectTextures
 
bool myEffectDirty
 
DtIndirectGlTextureObjectManagermyIndirectGlTextureObjectManager
 
DtOsgRenderermyOsgRenderer
 

Friends

class DtRainEffectGeneration
 

Additional Inherited Members

- Public Types inherited from makVrv::DtShaderEffect
typedef std::vector
< DtShaderEffectTextureData
TextureDataPtrVector
 

Constructor & Destructor Documentation

makVrv::DtShaderEffectRain::DtShaderEffectRain ( DtDe de)

constructor

virtual makVrv::DtShaderEffectRain::~DtShaderEffectRain ( )
virtual

DTOR.

makVrv::DtShaderEffectRain::DtShaderEffectRain ( )
delete

unimplemented private default constructor

makVrv::DtShaderEffectRain::DtShaderEffectRain ( const DtShaderEffectRain )
delete

Copy Constructor not implemented – Copy not allowed.

Member Function Documentation

DtShaderEffectRain& makVrv::DtShaderEffectRain::operator= ( const DtShaderEffectRain )
delete

Assignment Operator not implemented – Copy not allowed.

virtual void makVrv::DtShaderEffectRain::initializeEffect ( const std::vector< osg::StateSet * > &  stateSets)
virtual

initializes or reinitializes the effects. Called by DtOsgRenderer at startup and whenever reload shaders is triggered reloads the shader changes if triggered from reload shaders but the texture is not reloaded off disk due to osgFileCache

Reimplemented from makVrv::DtShaderEffect.

virtual void makVrv::DtShaderEffectRain::registerWeatherEffectsObject ( DtOsgWeatherEffectsObject weatherEffectsObject)
virtual

called by the DtOsgWeatherEffectsObject constructor to register itself when it is created.

Implements makVrv::DtShaderEffect.

virtual void makVrv::DtShaderEffectRain::releaseGLObjects ( osg::State *  state)
overridevirtual

handle destruction of graphics objects when the context is destroyed

Reimplemented from makVrv::DtShaderEffect.

virtual void makVrv::DtShaderEffectRain::updateImGui ( )
virtual

update the imgui widgets and readback any changes from them

Implements makVrv::DtShaderEffect.

virtual void makVrv::DtShaderEffectRain::updateUniforms ( )
virtual

update the uniforms that may need to be changed based on the imgui or regular gui inputs.

Implements makVrv::DtShaderEffect.

virtual void makVrv::DtShaderEffectRain::setCameraLocation ( const DtVector &  location)
virtual

sets the location for localized effects.

Reimplemented from makVrv::DtShaderEffect.

virtual const DtVector& makVrv::DtShaderEffectRain::cameraLocation ( ) const
virtual
virtual int makVrv::DtShaderEffectRain::rainEffectTextureSize ( void  ) const
virtual

size of the rain effect texture

virtual void makVrv::DtShaderEffectRain::installShader ( const std::vector< osg::StateSet * > &  stateSets)
protectedvirtual

Install the virtual program shader.

virtual void makVrv::DtShaderEffectRain::uninstallShader ( const std::vector< osg::StateSet * > &  stateSets)
protectedvirtual

Install the virtual program shader.

virtual DtRainEffectGeneration* makVrv::DtShaderEffectRain::createRainEffectOp ( )
protectedvirtual

wrapper around the op creation to make it easy to override later.

virtual void makVrv::DtShaderEffectRain::removeRainEffectGenerationOp ( void  )
protectedvirtual

remove the op from the arena

virtual void makVrv::DtShaderEffectRain::slot_rainAccumulationChanged ( double  depth)
protectedvirtual

handle changes to the ground rain accumulation from the weather effects object

virtual void makVrv::DtShaderEffectRain::updateEnabledState ( const float  depth)
protectedvirtual

Computes the current enabled state based on the given rain accumulation depth.

static const std::string& makVrv::DtShaderEffectRain::theClassName ( )
static

Get the name this class is registered by.

Friends And Related Function Documentation

friend class DtRainEffectGeneration
friend

Member Data Documentation

DtSignalConnectionManager makVrv::DtShaderEffectRain::myConnections
protected
osg::ref_ptr<osg::Uniform> makVrv::DtShaderEffectRain::myEnableRainUniform
protected
osg::ref_ptr<osg::Uniform> makVrv::DtShaderEffectRain::myRainUpThresholdUniform
protected
osg::ref_ptr<osg::Uniform> makVrv::DtShaderEffectRain::myRainColorUniform
protected
osg::ref_ptr<osg::Uniform> makVrv::DtShaderEffectRain::myRainMaskedRoadUniform
protected
const DtIndirectTexturePrototype* makVrv::DtShaderEffectRain::myRainEffectVrvTexture = nullptr
protected
DtIndirectGlTextureObject* makVrv::DtShaderEffectRain::myRainEffectTextureBindless = nullptr
protected
bool makVrv::DtShaderEffectRain::myRainEnabled
protected
float makVrv::DtShaderEffectRain::myRainUpThresholdRange
protected
float makVrv::DtShaderEffectRain::myRainUpThresholdMin
protected
float makVrv::DtShaderEffectRain::myRainMaskedRoadMax
protected
float makVrv::DtShaderEffectRain::myRainMaskedRoadRange
protected
float makVrv::DtShaderEffectRain::myRainAccumulationDepth
protected
bool makVrv::DtShaderEffectRain::myEnablePuddleEffects
protected
osg::Vec4 makVrv::DtShaderEffectRain::myRainColor
protected
DtOsgWeatherEffectsObject* makVrv::DtShaderEffectRain::myWeatherEffectsObject
protected
DtRainEffectGeneration* makVrv::DtShaderEffectRain::myRainEffectGenerationOp = nullptr
protected
DtVector makVrv::DtShaderEffectRain::myCameraLocation
protected
double makVrv::DtShaderEffectRain::myCameraAltitude
protected
float makVrv::DtShaderEffectRain::myPrecipitationIntensity
protected
const int makVrv::DtShaderEffectRain::myRainEffectTextureSize = 512
protected

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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)