VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVolumetricDrawable.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
12 
13 #include <osg/Drawable>
14 
15 // Get proper local export symbol
17 
20 
22 
23 namespace osg
24 {
25  class Texture2D;
26  class State;
27 }
28 
29 namespace makVrv
30 {
31  class DtGlRenderTexture;
32  class DtGlTexture;
33  class DtDe;
34  class DtGlProgram;
35  struct DtCrepuscularRaysParameters;
36 
39 
41  template <>
42  inline const char* creatorTypeName<DtVolumetricDrawable>(void) { return "DtVolumetricDrawableCreator"; }
43 
47  {
48  public:
50  {
51  DOWNSAMPLE4X = 0,
54  PASSES_SIZE
55  };
56  public:
58  virtual ~DtVolumetricDrawable();
59 
60  protected:
63 
66 
67  private:
70 
73 
75  DtVolumetricDrawable& operator=(const DtVolumetricDrawable&);
76 
77  public:
79  virtual void reloadShaders();
80 
82  virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
83 
90  //virtual void releaseGLObjects(osg::State* state = 0) const;
91 
93  virtual void setSize(int width, int height);
94 
96  virtual void setOcclusionTexture(osg::Texture* inputTex);
97 
99  virtual void setBaseTexture(osg::Texture* inputTex);
100 
102  virtual void setVisible(bool visible) { myVisible = visible; }
103  virtual bool visible() const { return myVisible; }
104 
106  virtual void setParameters(const DtCrepuscularRaysParameters& params);
107  protected:
109  virtual void initRenderTextures() const;
110 
112  virtual void downSample4xPass(osg::State* state) const;
113 
115  virtual void volumetricRaysPass(osg::State* state) const;
116 
118  virtual void compositeRaysPass(osg::State* state) const;
119 
121  virtual void createComputeProgramIfNecessary(VOLUMETRIC_PASS pass, const std::string& path, const std::string& name) const;
122 
124  virtual void createProgramIfNecessary(VOLUMETRIC_PASS pass, const std::string& path, const std::string& prefixName) const;
125 
127  virtual void initializeUniformLocations(VOLUMETRIC_PASS pass) const;
128 
130  virtual void zeroOutUniformLocations() const;
131 
133  virtual void deleteShaders() const;
134 
135  protected:
138 
141 
144 
145  bool myVisible;
146 
147  mutable std::array<DtGlProgram*, PASSES_SIZE> myMutablePrograms;
148 
150 
155 
159 
162  };
163 
164 
165 }
Diagonal crossing liens.
Definition: DtTacticalGraphicUtilities.h:93
Definition: DtVolumetricDrawable.h:52
osg::ref_ptr< osg::Texture > myOcclusionTex
Definition: DtVolumetricDrawable.h:139
int myChannelHeight
Definition: DtVolumetricDrawable.h:137
const char * creatorTypeName< DtVolumetricDrawable >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtVolumetricDrawable.h:42
int myMutableBaseTextureLoc
Definition: DtVolumetricDrawable.h:157
int myChannelWidth
Definition: DtVolumetricDrawable.h:136
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
bool myVisible
Definition: DtVolumetricDrawable.h:145
friend DtVolumetricDrawableCreator
friended, to access constructor above
Definition: DtVolumetricDrawable.h:65
Definition: DtVolumetricDrawable.h:53
Contains makVrv::DtCrepuscularRaysParameters structure.
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
int myMutableVolumetricTextureLoc
Definition: DtVolumetricDrawable.h:158
Definition: DtPostProcessorDrawable.h:24
int myMutableSlLightColorLoc
Definition: DtVolumetricDrawable.h:153
osg::ref_ptr< osg::Texture > myBaseTex
Definition: DtVolumetricDrawable.h:140
virtual bool visible() const
Definition: DtVolumetricDrawable.h:103
virtual void setVisible(bool visible)
set/get visibility
Definition: DtVolumetricDrawable.h:102
int myMutableSlLightPositionOnScreenLoc
Definition: DtVolumetricDrawable.h:151
class used to render crepuscular rays during the post processor camera draw
Definition: DtVolumetricDrawable.h:46
#define DT_DLL_VRVPOSTPROCESSOR
Definition: vrvPostProcessor.h:19
This file contains the declaration of the class DtPostProcessorDrawable which is used for rendering p...
Contains DLL export macros.
DtGlTexture * myMutableDownSampledOcclusionTexture
Definition: DtVolumetricDrawable.h:142
int myMutableSlOutputScaleLoc
Definition: DtVolumetricDrawable.h:154
bool myMutableShadersDirtyFlag
This is set to true upon reloadShaders() and will trigger a recreation in drawImplementation() ...
Definition: DtVolumetricDrawable.h:161
int myMutableBaseStrengthLoc
Definition: DtVolumetricDrawable.h:156
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
int myMutableSlParametersLoc
Definition: DtVolumetricDrawable.h:152
A helper classes for creating a RTT target, optionally including depth buffer.
Definition: DtGlTexture.h:20
DtVirtualBaseClassCreator< DtVolumetricDrawable > DtVolumetricDrawableCreator
Definition: DtVolumetricDrawable.h:37
VOLUMETRIC_PASS
Definition: DtVolumetricDrawable.h:49
DtGlTexture * myMutableVolumetricRaysBuffer
Definition: DtVolumetricDrawable.h:143
DtCrepuscularRaysParameters myParameters
Definition: DtVolumetricDrawable.h:149
std::array< DtGlProgram *, PASSES_SIZE > myMutablePrograms
Definition: DtVolumetricDrawable.h:147

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)