VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtShaderEffectRain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
14 #include <vrvOsg/DtShaderEffect.h>
15 
18 
19 #include <osg/ref_ptr>
20 #include <osg/Texture2D>
21 #include <osg/Uniform>
22 #include <osg/Object>
23 #include <osg/StateSet>
24 #include <osg/OperationThread>
25 #include <osg/Vec4>
26 #include <osg/State>
27 
28 #include <string>
29 #include <vector>
30 
31 namespace makVrv
32 {
33  class DtOsgWeatherEffectsObject;
34  class DtIndirectTextureProcessor;
35 
41  {
42  public:
43 
44  // Inner class for generating a texture for rain hitting the puddles
45  class RainEffectGeneration : public osg::Operation
46  {
47  public:
49  RainEffectGeneration(DtShaderEffectRain& effectManager, DtDe& de);
50 
52  virtual ~RainEffectGeneration();
53 
54  private:
60  RainEffectGeneration &operator=(const RainEffectGeneration&);
61 
62  protected:
63 
65  virtual void operator () (osg::Object* sv);
66 
68  virtual void release();
69 
71  virtual GLuint genComputeProg();
72 
73  protected:
75 
78 
80 
86  double myLastSimTime;
87 
88  std::vector<float> myRainDrops;
89  };
90 
91  public:
93  virtual ~DtShaderEffectRain();
94 
95  protected:
98 
99  private:
105  DtShaderEffectRain &operator=(const DtShaderEffectRain&);
106 
107  public:
110  virtual void initializeEffect(const std::vector<osg::StateSet*>& stateSets,
111  DtIndirectTextureProcessor* textureProcessor, DtOsgRenderer& osgRenderer);
112 
114  virtual void registerWeatherEffectsObject(DtOsgWeatherEffectsObject* weatherEffectsObject);
115 
117  virtual void releaseGLObjects(osg::State* state);
118 
120  virtual void updateImGui();
121 
123  virtual void updateUniforms();
124 
125  protected:
126 
128  virtual RainEffectGeneration* createRainEffectJob();
129 
131  virtual void slot_rainAccumulationChanged(double depth);
132 
133 
134  public:
136  static DtShaderEffectRain& instance(DtDe& de);
137 
139  static const std::string& theClassName();
140 
141  protected:
142 
144 
149 
152 
154 
158 
161 
163 
164  osg::Vec4 myRainColor;
165 
167 
169 
170  };
171 }
float myRainMaskedRoadRange
Definition: DtShaderEffectRain.h:160
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:125
Implementation independent random number generator.
Definition: DtRandomNumberGenerator.h:23
DtShaderEffect injects custom shaders into the scenes, There are derrived classes of this for snow an...
Definition: DtShaderEffect.h:34
osg::ref_ptr< osg::Uniform > myRainColorUniform
Definition: DtShaderEffectRain.h:147
osg::ref_ptr< osg::Texture2D > myRainEffectTexture
Definition: DtShaderEffectRain.h:151
double myLastSimTime
Definition: DtShaderEffectRain.h:86
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float myRainUpThresholdMin
Definition: DtShaderEffectRain.h:157
DtShaderEffectRain injects custom shaders into the scene, Handles rain on the ground causing the grou...
Definition: DtShaderEffectRain.h:40
GLuint myRainEffectTextureId
Definition: DtShaderEffectRain.h:150
osg::ref_ptr< osg::Uniform > myEnableRainUniform
Definition: DtShaderEffectRain.h:145
osg::Vec4 myRainColor
Definition: DtShaderEffectRain.h:164
bool myClearedDrops
Definition: DtShaderEffectRain.h:81
DtRandomNumberGenerator myRandomNumberGen
Definition: DtShaderEffectRain.h:74
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:17
GLuint myComputeId
Definition: DtShaderEffectRain.h:79
Contains makVrv::DtShaderEffect class.
int myCurrentRainDrop
Definition: DtShaderEffectRain.h:85
bool myEnablePuddleEffects
Definition: DtShaderEffectRain.h:162
osg::ref_ptr< osg::Uniform > myRainUpThresholdUniform
Definition: DtShaderEffectRain.h:146
Contains makVrv::DtRandomNumberGenerator class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
float myRainMaskedRoadMax
Definition: DtShaderEffectRain.h:159
float myRainUpThresholdRange
Definition: DtShaderEffectRain.h:156
DtSignalConnectionManager myConnections
Definition: DtShaderEffectRain.h:143
Definition: DtIndirectTextureProcessor.h:41
DtShaderEffectRain & myShaderEffectManager
Definition: DtShaderEffectRain.h:76
int mySimTimeUniformLoc
Definition: DtShaderEffectRain.h:83
Base class to provide boost signal/slot management.
DtOsgWeatherEffectsObject * myWeatherEffectsObject
Definition: DtShaderEffectRain.h:166
std::vector< float > myRainDrops
Definition: DtShaderEffectRain.h:88
int myRainDropsTexUniformLoc
Definition: DtShaderEffectRain.h:84
DtOsgRenderer & myOsgRenderer
Definition: DtShaderEffectRain.h:153
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
int myOutputTextureUniformLoc
Definition: DtShaderEffectRain.h:82
DtDe & myDe
Definition: DtShaderEffectRain.h:77
An OSG implementation of the weather effects object.
Definition: DtOsgWeatherEffectsObject.h:22
bool myRainEnabled
Definition: DtShaderEffectRain.h:155
Definition: DtShaderEffectRain.h:45
osg::ref_ptr< osg::Uniform > myRainMaskedRoadUniform
Definition: DtShaderEffectRain.h:148
RainEffectGeneration * myRainEffectGenerationJob
Definition: DtShaderEffectRain.h:168

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)