VR-Forces Developer's Guide
 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) 2024 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 #include <array>
24 
25 namespace osg
26 {
27  class Texture2D;
28  class State;
29 }
30 
31 namespace makVrv
32 {
33  class DtGlRenderTexture;
34  class DtGlTexture;
35  class DtDe;
36  class DtGlProgram;
37  struct DtCrepuscularRaysParameters;
38 
41 
43  template <>
44  inline const char* creatorTypeName<DtVolumetricDrawable>(void) { return "DtVolumetricDrawableCreator"; }
45 
49  {
50  public:
52  {
56  PASSES_SIZE
57  };
58  public:
60  virtual ~DtVolumetricDrawable();
61 
62  protected:
65 
68 
69  private:
72 
75 
77  DtVolumetricDrawable& operator=(const DtVolumetricDrawable&);
78 
79  public:
81  virtual void reloadShaders();
82 
84  virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
85 
92  //virtual void releaseGLObjects(osg::State* state = 0) const;
93 
95  virtual void setSize(int width, int height);
96 
98  virtual void setOcclusionTexture(osg::Texture* inputTex);
99 
101  virtual void setBaseTexture(osg::Texture* inputTex);
102 
104  virtual void setVisible(bool visible) { myVisible = visible; }
105  virtual bool visible() const { return myVisible; }
106 
108  virtual void setParameters(const DtCrepuscularRaysParameters& params);
109  protected:
111  virtual void initRenderTextures() const;
112 
114  virtual void downSample4xPass(osg::State* state) const;
115 
117  virtual void volumetricRaysPass(osg::State* state) const;
118 
120  virtual void compositeRaysPass(osg::State* state) const;
121 
123  virtual void createComputeProgramIfNecessary(VOLUMETRIC_PASS pass, const std::string& path, const std::string& name) const;
124 
126  virtual void createProgramIfNecessary(VOLUMETRIC_PASS pass, const std::string& path, const std::string& prefixName) const;
127 
129  virtual void initializeUniformLocations(VOLUMETRIC_PASS pass) const;
130 
132  virtual void zeroOutUniformLocations() const;
133 
135  virtual void deleteShaders() const;
136 
137  protected:
140 
143 
146 
147  bool myVisible;
148 
149  mutable std::array<DtGlProgram*, PASSES_SIZE> myMutablePrograms;
150 
152 
157 
161 
164  };
165 
166 
167 }
Definition: DtVolumetricDrawable.h:54
osg::ref_ptr< osg::Texture > myOcclusionTex
Definition: DtVolumetricDrawable.h:141
int myChannelHeight
Definition: DtVolumetricDrawable.h:139
const char * creatorTypeName< DtVolumetricDrawable >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtVolumetricDrawable.h:44
int myMutableBaseTextureLoc
Definition: DtVolumetricDrawable.h:159
int myChannelWidth
Definition: DtVolumetricDrawable.h:138
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
bool myVisible
Definition: DtVolumetricDrawable.h:147
friend DtVolumetricDrawableCreator
friended, to access constructor above
Definition: DtVolumetricDrawable.h:67
Definition: DtVolumetricDrawable.h:55
Definition: DtHdrTypes.h:21
Contains makVrv::DtCrepuscularRaysParameters structure.
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
int myMutableVolumetricTextureLoc
Definition: DtVolumetricDrawable.h:160
Definition: DtPostProcessorDrawable.h:33
int myMutableSlLightColorLoc
Definition: DtVolumetricDrawable.h:155
osg::ref_ptr< osg::Texture > myBaseTex
Definition: DtVolumetricDrawable.h:142
virtual bool visible() const
Definition: DtVolumetricDrawable.h:105
virtual void setVisible(bool visible)
set/get visibility
Definition: DtVolumetricDrawable.h:104
int myMutableSlLightPositionOnScreenLoc
Definition: DtVolumetricDrawable.h:153
class used to render crepuscular rays during the post processor camera draw
Definition: DtVolumetricDrawable.h:48
#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:144
int myMutableSlOutputScaleLoc
Definition: DtVolumetricDrawable.h:156
bool myMutableShadersDirtyFlag
This is set to true upon reloadShaders() and will trigger a recreation in drawImplementation() ...
Definition: DtVolumetricDrawable.h:163
int myMutableBaseStrengthLoc
Definition: DtVolumetricDrawable.h:158
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
int myMutableSlParametersLoc
Definition: DtVolumetricDrawable.h:154
A helper classes for creating a RTT target, optionally including depth buffer.
Definition: DtGlTexture.h:20
DtVirtualBaseClassCreator< DtVolumetricDrawable > DtVolumetricDrawableCreator
Definition: DtVolumetricDrawable.h:39
VOLUMETRIC_PASS
Definition: DtVolumetricDrawable.h:51
DtGlTexture * myMutableVolumetricRaysBuffer
Definition: DtVolumetricDrawable.h:145
DtCrepuscularRaysParameters myParameters
Definition: DtVolumetricDrawable.h:151
std::array< DtGlProgram *, PASSES_SIZE > myMutablePrograms
Definition: DtVolumetricDrawable.h:149

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)