VR-Forces 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 | Protected Types | Protected Member Functions | Protected Attributes
makVrv::DtShaderEffectManager Class Reference

DtShaderEffectManager injects custom shaders into the scenes, uses DtShaderEffect objects to add rendering effects to the ground. Currently has effects for rain and snow but more could be added for ice, sand, etc...

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

Classes

struct  DtShaderEffectPerChannelData
 
class  DtTextureAddressOp
 

Public Member Functions

virtual ~DtShaderEffectManager ()
 
 DtShaderEffectManager ()=delete
 
 DtShaderEffectManager (const DtShaderEffectManager &)=delete
 
DtShaderEffectManageroperator= (const DtShaderEffectManager &)=delete
 
virtual void initializeEffects ()
 
virtual void updateTextureUniforms ()
 
virtual void update ()
 
virtual void updateChannel (DtOsgChannel *channel, osg::Vec3d pos)
 
virtual void registerWeatherEffectsObject (DtOsgWeatherEffectsObject *weatherEffectsObject)
 
virtual void slot_reloadShader ()
 
virtual void slot_windSpeedChanged (float metersPerSecond)
 
virtual void slot_windDirectionChanged (float radians)
 
virtual DtOsgWeatherEffectsObjectfindWeatherEffectsObject ()
 
virtual const
DtOsgWeatherEffectsObject
findWeatherEffectsObject () const
 
virtual void releaseGLObjects (osg::State *state)
 
virtual bool anyEffectDirty (osg::Camera *camera)
 
virtual void installEffectsToCamera (osg::Camera *camera)
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 
virtual ~DtVirtualBaseClass ()
 

Static Public Member Functions

static DtShaderEffectManagerinstance (DtDe &de)
 
static const std::string & theClassName ()
 

Protected Types

typedef std::set
< DtShaderEffect * > 
ShaderEffectSet
 
typedef std::map
< osg::observer_ptr
< osg::Camera >
, DtShaderEffectPerChannelData * > 
PerChannelDataMap
 
typedef osg::ref_ptr
< osg::CoordinateSystemNode > 
CoordinateSystemNodeRef
 

Protected Member Functions

 DtShaderEffectManager (DtDe &de)
 
virtual void updateImGui ()
 
virtual void updateUniforms ()
 
virtual
DtShaderEffectPerChannelData
getOrCreatePerChannelData (osg::Camera *camera, bool createShaderEffects)
 
virtual void flushInvalidChannels ()
 
virtual void initializeChannelEffects ()
 
virtual DtTextureAddressOpcreateTextureAddressOp ()
 

Protected Attributes

DtDemyDe
 
DtSignalConnectionManager myConnections
 
DtOsgRenderermyOsgRenderer
 
PerChannelDataMap myPerChannelDataMap
 
CoordinateSystemNodeRef myCoordSystemNode
 
DtOsgWeatherEffectsObjectmyWeatherEffectsObject
 
DtTextureAddressOpmyTextureAddressOp = nullptr
 
float myWindSpeed
 
float myWindDirection
 

Member Typedef Documentation

typedef std::map< osg::observer_ptr<osg::Camera>, DtShaderEffectPerChannelData*> makVrv::DtShaderEffectManager::PerChannelDataMap
protected
typedef osg::ref_ptr<osg::CoordinateSystemNode> makVrv::DtShaderEffectManager::CoordinateSystemNodeRef
protected

Constructor & Destructor Documentation

virtual makVrv::DtShaderEffectManager::~DtShaderEffectManager ( )
virtual

DTOR.

makVrv::DtShaderEffectManager::DtShaderEffectManager ( )
delete

unimplemented private default constructor

makVrv::DtShaderEffectManager::DtShaderEffectManager ( const DtShaderEffectManager )
delete

Copy Constructor not implemented – Copy not allowed.

makVrv::DtShaderEffectManager::DtShaderEffectManager ( DtDe de)
protected

constructor

Member Function Documentation

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

Assignment Operator not implemented – Copy not allowed.

virtual void makVrv::DtShaderEffectManager::initializeEffects ( )
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

virtual void makVrv::DtShaderEffectManager::updateTextureUniforms ( )
virtual

called by the arena per frame, per context to check if the texture has been assigned an address.

virtual void makVrv::DtShaderEffectManager::update ( )
virtual

called by DtOsgRenderer::update(), updates the per frame uniforms for the shader effects and sets up IMGui

virtual void makVrv::DtShaderEffectManager::updateChannel ( DtOsgChannel channel,
osg::Vec3d  pos 
)
virtual

called by DtOsgChannel::update(), updates the per channel uniforms

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

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

virtual void makVrv::DtShaderEffectManager::slot_reloadShader ( )
virtual

called when the signal_reloadShader is triggered. Marks the effect dirty so it can be recreated

virtual void makVrv::DtShaderEffectManager::slot_windSpeedChanged ( float  metersPerSecond)
virtual

handle a wind speed changed signal

virtual void makVrv::DtShaderEffectManager::slot_windDirectionChanged ( float  radians)
virtual

handle a wind direction changed signal

virtual DtOsgWeatherEffectsObject* makVrv::DtShaderEffectManager::findWeatherEffectsObject ( )
virtual

Use to get the local settings for the weather effects. Currently only has snow parameters in it.

virtual const DtOsgWeatherEffectsObject* makVrv::DtShaderEffectManager::findWeatherEffectsObject ( ) const
virtual

Use to get the local settings for the weather effects. Currently only has snow parameters in it.

virtual void makVrv::DtShaderEffectManager::releaseGLObjects ( osg::State *  state)
virtual

release the gl objects for this class

virtual bool makVrv::DtShaderEffectManager::anyEffectDirty ( osg::Camera *  camera)
virtual

are there any dirty effects for pass camera

virtual void makVrv::DtShaderEffectManager::installEffectsToCamera ( osg::Camera *  camera)
virtual

This is called to install shader effects to the given camera. Each shader effect will be initialized if enabled. Shader effects will generally modify the camera state set by adding virtual programs and required shader uniforms. This method is called explicitly by DtOsgChannel for the RTT camera.

static DtShaderEffectManager& makVrv::DtShaderEffectManager::instance ( DtDe de)
static

Get/create instance of sky object manager.

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

Get the name this class is registered by.

virtual void makVrv::DtShaderEffectManager::updateImGui ( )
protectedvirtual

update the imgui widgets and readback any changes from them

virtual void makVrv::DtShaderEffectManager::updateUniforms ( )
protectedvirtual

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

virtual DtShaderEffectPerChannelData& makVrv::DtShaderEffectManager::getOrCreatePerChannelData ( osg::Camera *  camera,
bool  createShaderEffects 
)
protectedvirtual

gets or creates the data associated with a channel camera

Parameters
cameraThe camera to create the data for
createShaderEffectsShaders effects are created for the camera if true
virtual void makVrv::DtShaderEffectManager::flushInvalidChannels ( )
protectedvirtual

check if the channel still is valid. If not then destroy the corrisponding shader effects

virtual void makVrv::DtShaderEffectManager::initializeChannelEffects ( )
protectedvirtual

Check if any of the effects are enabled and if they are dirty, then applies the effects to all known channel camera statesets.

virtual DtTextureAddressOp* makVrv::DtShaderEffectManager::createTextureAddressOp ( )
protectedvirtual

internal

Member Data Documentation

DtDe& makVrv::DtShaderEffectManager::myDe
protected
DtSignalConnectionManager makVrv::DtShaderEffectManager::myConnections
protected
DtOsgRenderer& makVrv::DtShaderEffectManager::myOsgRenderer
protected
PerChannelDataMap makVrv::DtShaderEffectManager::myPerChannelDataMap
protected
CoordinateSystemNodeRef makVrv::DtShaderEffectManager::myCoordSystemNode
protected
DtOsgWeatherEffectsObject* makVrv::DtShaderEffectManager::myWeatherEffectsObject
protected
DtTextureAddressOp* makVrv::DtShaderEffectManager::myTextureAddressOp = nullptr
protected
float makVrv::DtShaderEffectManager::myWindSpeed
protected
float makVrv::DtShaderEffectManager::myWindDirection
protected

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

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)