VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTritonShaderUniformManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvTriton/vrvTriton.h>
14 
16 
20 
21 #include <osg/Matrixf>
22 
23 #include <set>
24 
25 // avoid including glew
26 typedef int GLint;
27 
28 namespace osg
29 {
30  class State;
31 }
32 
33 namespace makVrv
34 {
35  class DtDe;
36  class DtTritonDrawable;
37 
38  class DtGlBuffer;
39 
40  class DtBindingManager;
41 
44 
47 
49  template <>
50  inline const char* creatorTypeName<DtTritonShaderUniformManager>(void) { return "DtTritonShaderUniformManagerCreator"; }
51 
55  {
56  public:
59 
62 
63  protected:
66 
67  private:
73  DtTritonShaderUniformManager &operator=(const DtTritonShaderUniformManager &other) = delete;
74 
75  public:
78  virtual bool initShaderUniformHandles(GLint shader, int shaderType) const;
79 
82  virtual void updateCloudShadowUniforms(GLint shader, int shaderType
83  , GLboolean bIsCloudShadowActive
84  , unsigned int cloudshadowTextureUnit
85  , const osg::Matrixf& textureViewProjMatrix
86  , unsigned int cloudshadowTextureUnit2
87  , const osg::Matrixf& textureViewProjMatrix2) const;
88 
90  virtual void updateShadingUniforms(GLint shader, int shaderType);
91 
92  virtual void updateReverseZ(GLint shader, int shaderType, bool isReverseZ);
93 
96  virtual void updateViewingUniforms(GLint shader, int shaderType
97  , const Matrix4_32& view_matrix_32
98  , const Matrix4_32& view_inverse_transpose_matrix_32);
99 
102  virtual void updateLightingUniforms(osg::State &state
103  , const Vector2_uint32& tileSize
104  , const Vector2_uint32& maxDims
105  , int textureStartOffset
106  , GLint shader, int shaderType);
107 
110  virtual void updateOceanMaskingUniforms(GLint shader, int shaderType, unsigned int maskUnit, const DtVector4<double>& latLongMinMax);
111 
113  virtual void updateUpdateMatricesForSensorFX(GLint shader, int shaderType
114  , const osg::Matrixf& osgInverseViewMatrix, const osg::Matrixf& osgModelViewMatrix);
115 
118  void resetToValue(int shaderType, int val) const;
119 
121  virtual void bindUbo();
122 
124  virtual void unbindUbo();
125  protected:
127 
128  DtDe& myDe; // De reference
129 
130  // set to track which program ID's we've bound our interface blocks to, to avoid redundancies.
131  std::set<unsigned int> myProgramIds;
132 
134  //Arrays for caching the shader uniform handles. Mutable since they are
135  // updated in drawImplemtation of the DtTritonDrawable which osg requires to be const
136 
138  {
139  public:
142 
145 
147 
149 
151 
158 
161 
163  };
164 
166 
168  {
169  public:
171 
174 
176 
178 
181  };
182 
183  mutable std::array<DtVrvTritUniformLocations, NUM_TRITON_SHADER_TYPES> myTritUniformLocations;
184 
187 
189  };
190 
191 } // namespace makVrv
192 
DtVirtualBaseClassCreator< DtTritonShaderUniformManager, DtTritonDrawable * > DtTritonShaderUniformManagerCreator
creator
Definition: DtTritonShaderUniformManager.h:43
int myVrvTritFinalSpecscaleLoc
Definition: DtTritonShaderUniformManager.h:157
int myVrvTritRoughnessLoc
Definition: DtTritonShaderUniformManager.h:152
int myGpuShaderUboBinding
Definition: DtTritonShaderUniformManager.h:186
int myVrvTritWindToRoughnessLoc
Definition: DtTritonShaderUniformManager.h:155
2 dimensional vector
int myMutableModelViewInverseTransposeMatrixUniformLoc
Definition: DtTritonShaderUniformManager.h:141
int myMutableLatLongMinMax
Definition: DtTritonShaderUniformManager.h:177
int GLint
Definition: DtBindingManager.h:24
int myVrvTritSparkleMixFactorLoc
Definition: DtTritonShaderUniformManager.h:154
int myMutableOsgViewMatrixInverse
Definition: DtTritonShaderUniformManager.h:179
int myMutableVrvTritDebugValueLoc
Definition: DtTritonShaderUniformManager.h:148
DtBindingManager & myBindingManager
Definition: DtTritonShaderUniformManager.h:188
4 dimensional vector
int myMutableColorRampTextureUniform
Definition: DtTritonShaderUniformManager.h:170
int myVrvTritIncludeGLoc
Definition: DtTritonShaderUniformManager.h:156
Contains DLL export macros.
const char * creatorTypeName< DtTritonShaderUniformManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtTritonShaderUniformManager.h:50
class for managing the shader uniforms for triton, gets the shader ids and caches them between frames...
Definition: DtTritonShaderUniformManager.h:54
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
Manage interface block bindings.
Definition: DtBindingManager.h:43
int myMutableOsgModelViewMatrix
Definition: DtTritonShaderUniformManager.h:180
DtGlBuffer * myGpuShaderUbo
Definition: DtTritonShaderUniformManager.h:185
int myVrvTritRoughfloorLoc
Definition: DtTritonShaderUniformManager.h:153
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
std::set< unsigned int > myProgramIds
Definition: DtTritonShaderUniformManager.h:131
int myVrvTritEnvInReflectLoc
Definition: DtTritonShaderUniformManager.h:159
int myVrvTritReflectionPowerLoc
Definition: DtTritonShaderUniformManager.h:160
A generic OpenGL buffer.
Definition: DtGlBuffer.h:27
DtTritonDrawable * myTritonDrawable
Definition: DtTritonShaderUniformManager.h:126
int myMutableOceanMaskTextureUnitUniform
Definition: DtTritonShaderUniformManager.h:175
DtDe & myDe
Definition: DtTritonShaderUniformManager.h:128
Definition: DtTritonShaderUniformManager.h:137
int myMutableCloudShadowTextureUniform2
Definition: DtTritonShaderUniformManager.h:173
int myMutableCloudShadowActiveLoc
Definition: DtTritonShaderUniformManager.h:146
int myMutableCloudShadowTexGenUniformLoc
Definition: DtTritonShaderUniformManager.h:143
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
An OSG Drawable representing Triton&#39;s infinite ocean.
Definition: DtTritonDrawable.h:62
std::array< DtVrvTritUniformLocations, NUM_TRITON_SHADER_TYPES > myTritUniformLocations
Definition: DtTritonShaderUniformManager.h:183
int myMutableCloudShadowTexGenUniform2Loc
Definition: DtTritonShaderUniformManager.h:144
int myMutableCloudShadowTextureUniform
Definition: DtTritonShaderUniformManager.h:172
DtVrvTritUboConstantLocations myTritUboConstantLocations
Definition: DtTritonShaderUniformManager.h:165
int myMutableVrvTritUseGGXLoc
Definition: DtTritonShaderUniformManager.h:150
4 dimensional matrix
4 dimensional matrix
Definition: DtMatrix4.h:22
int myMutableModelViewMatrixUniformLoc
Definition: DtTritonShaderUniformManager.h:140
friend DtTritonShaderUniformManagerCreator
friend class so only the creator can create this class
Definition: DtTritonShaderUniformManager.h:58
Definition: DtTritonShaderUniformManager.h:167
int myVrvTritReverseZLoc
Definition: DtTritonShaderUniformManager.h:162

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)