VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtWaterOnScreenEffect.h
Go to the documentation of this file.
1 /*****************************************************************************
2 * Copyright (c) 2021 MAK Technologies, Inc.
3 * All rights reserved.
4 *****************************************************************************/
5 
6 #pragma once
7 
11 
13 
18 
21 
22 #include <matrix/vlVector.h>
23 
24 #include <osg/ref_ptr>
25 
26 namespace makVrv
27 {
28  class DtDropParticle;
29  class DtRaindropParticle;
30  class DtSplashParticle;
31  class DtWindow;
32  class DtObserverObject;
33 
34  class DtGlTexture;
35  class DtGlProgram;
36  class DtGlBuffer;
37 
42  {
43  public:
45  DtWaterOnScreen(DtDe& de, const std::string& postProcessType, bool handles2D);
46 
48  virtual ~DtWaterOnScreen();
49  private:
51  DtWaterOnScreen() = delete;
52 
54  DtWaterOnScreen(const DtWaterOnScreen&) = delete;
55 
57  DtWaterOnScreen& operator=(const DtWaterOnScreen&) = delete;
58  public:
60  virtual void activateRaindrops(bool on);
61 
64  virtual void activateSplashes(bool on);
65 
67  virtual void activateSpray(bool on);
68 
70  virtual void setIsUnderwater(bool underwater);
71 
74  virtual void addRainDrop(float x, float y, float radius);
75 
78  virtual void addOceanSplash(float intensity);
79 
81  virtual void setSplashIntensity(float intensity);
82 
84  virtual void setSprayIntensity(float intensity);
85 
87  virtual bool update(DtChannel *channel);
88 
90  virtual int numActiveDrops() const;
91 
93  virtual void setWaterOnScreenSize(double size);
94 
98  virtual void addSplashEffects(const DtObserverObject *observer, bool hasWaveSplashEffect);
99 
103  virtual void addSprayEffects(const DtObserverObject *observer, bool hasOceanSprayEffect);
104  public:
106  static double waterOnScreenSize();
107 
108  protected:
110  virtual void initialize();
111 
113  virtual void clearNormalMap();
114 
116  virtual void updateAndDrawDrops(double elapsedTime);
117 
119  virtual void finalizeNormalMap(void);
120 
122  virtual void addRaindrops(double time, float heading, float observerVelocity, const DtVector& observerLocation);
123 
125  virtual void addSpray(double time, float heading);
126 
128  virtual void clearDrops();
129 
131  virtual void reset();
132 
134  virtual void setActiveStatus();
135 
137  virtual void slot_waterOnScreenSizeChanged(double value);
138 
140  virtual void releaseGLObjects() override;
141 
143  virtual void cleanupGpuMemory(void);
144 
146  virtual void createNormalMapIfNecessary(void);
147 
149  virtual void createNormalMapCombineProgramIfNecessary(void);
150 
152  virtual void createNormalMapFinalizeProgramIfNecessary(void);
153 
155  virtual void initZeroNormals(void);
156 
157  protected:
159  double myLastDropEmissionTime, myLastSprayEmissionTime;
160 
161  bool myRaindropsActiveFlag, mySplashesActiveFlag, mySprayActiveFlag;
162  bool myActiveFlag, myUnderwaterFlag;
163 
164  float mySplashIntensity, mySprayIntensity;
165 
167 
169 
173 
176 
179 
182 
186 
190 
191  struct GridCell
192  {
195  };
196 
199 
202 
204  DtVector4<unsigned int> myZeroNormals[TEXSIZE][TEXSIZE];
205 
207 
208  public:
209  static double theWaterOnScreenSize;
210  };
211 
212  //
213  // Creator
214  //
215 
220  : public DtPostProcessorCreator
221  {
222  public:
224  friend class DtPostProcessManager;
225 
228 
230  virtual ~DtWaterOnScreenCreator();
231 
232  protected:
234  virtual DtPostProcessor* create(DtDe& de, const std::string& postProcessType);
235  };
236 }
double myLastSprayEmissionTime
Definition: DtWaterOnScreenEffect.h:159
DtGlBuffer * myCellsBuffer
The cells&#39; buffer on the gpu (ssbo)
Definition: DtWaterOnScreenEffect.h:201
int myNumActiveDrops
Definition: DtWaterOnScreenEffect.h:166
This class provides an OSG-specific implementation of water drops on the screen.
Definition: DtWaterOnScreenEffect.h:41
Definition: featureContext.h:37
voidpf void uLong size
Definition: ioapi.h:39
DtPostProcessorCreator is the common base class for all post processor creators.
Definition: DtPostProcessor.h:226
DtGlBuffer * myPrecomputedSplashNormalsBuffer
The gpu buffer representing the constant pre-computed splash normals.
Definition: DtWaterOnScreenEffect.h:188
static double theWaterOnScreenSize
Definition: DtWaterOnScreenEffect.h:209
4 dimensional vector
bool myPrecomputedSplashNormalsBufferDirty
Definition: DtWaterOnScreenEffect.h:189
A convenience class to represent an OpenGL Shader Program.
Definition: DtGlProgram.h:65
The abstract Channel Class.
Definition: DtChannel.h:30
bool mySprayActiveFlag
Definition: DtWaterOnScreenEffect.h:161
bool myNormalMapCombineProgramTriedOnce
Definition: DtWaterOnScreenEffect.h:172
osg::ref_ptr< DtWaterOnScreenDrawable > myWaterOnScreenDrawable
Definition: DtWaterOnScreenEffect.h:206
Definition: DtWaterOnScreenEffect.h:191
This abstract base class defines the interface for OS-specific keyboard and mouse event listeners...
Definition: DtObserverObject.h:29
This class provides the OSG-specific management of post-processing effects.
Definition: DtPostProcessManager.h:25
A DtWaterOnScreenCreator instance is registered with the post process element factory to create DtPos...
Definition: DtWaterOnScreenEffect.h:219
DtGlProgram * myNormalMapFinalizeProgram
Definition: DtWaterOnScreenEffect.h:174
DtGlTexture * myNormalMap
The generated normal map texture.
Definition: DtWaterOnScreenEffect.h:178
#define DT_DLL_VRVPOSTPROCESSOR
Definition: vrvPostProcessor.h:19
Internal struct for one cell of our grid of glass properties.
Definition: DtGridCell.h:19
#define GRID_DIMENSION
Definition: DtWaterOnScreenDefines.h:56
Contains DLL export macros.
bool myUnderwaterFlag
Definition: DtWaterOnScreenEffect.h:162
A generic OpenGL buffer.
Definition: DtGlBuffer.h:27
Base class to provide boost signal/slot management.
bool myNormalMapFinalizeProgramTriedOnce
Definition: DtWaterOnScreenEffect.h:175
Contains makVrv::DtGridCell struct.
DtGlBuffer * myPrecomputedDropletNormalsBuffer
The gpu buffer representing the constant pre-computed droplet normals.
Definition: DtWaterOnScreenEffect.h:184
Vector4_32 type_intensity_unused
Definition: DtWaterOnScreenEffect.h:194
Vector4_32 x_y_radius_valid
Definition: DtWaterOnScreenEffect.h:193
float mySprayIntensity
Definition: DtWaterOnScreenEffect.h:164
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Contains makVrv::DtWaterOnScreenDrawable class.
DtGlBuffer * myNormalMapBuffer
The gpu buffer representing the interim normal map (ssbo)
Definition: DtWaterOnScreenEffect.h:181
A helper classes for creating a RTT target, optionally including depth buffer.
Definition: DtGlTexture.h:20
bool myPrecomputedDropletNormalsBufferDirty
Definition: DtWaterOnScreenEffect.h:185
DtGlProgram * myNormalMapCombineProgram
The various normal map mod programs.
Definition: DtWaterOnScreenEffect.h:171
double myLastUpdateTime
Definition: DtWaterOnScreenEffect.h:158
This class provides the OSG-specific implementation of a post processor.
Definition: DtPostProcessor.h:66

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)