VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCloudDrawable.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDe.h>
13 #include <vrvOsg/vrvOsg.h>
14 
17 
18 #include <osg/Camera>
19 #include <osg/Drawable>
20 #include <map>
21 
22 namespace SilverLining
23 {
24  class Atmosphere;
25  class CloudLayer;
26  class ThreadCameraStreamData;
27 }
28 
29 namespace makVrv
30 {
31  class DtSilverliningGroup;
32  class DtGlRenderTexture;
33  class DtChannelManager;
34  class DtChannel;
35  class DtIntersector;
36  class DtCoordinateSystem;
37  class DtFrameTextureBlitterManager;
38  class DtSilverLiningGroupTcsUserData;
39 
42 
45 
47  template <>
48  inline const char* creatorTypeName<DtCloudDrawable>(void) { return "DtCloudDrawableCreator"; }
49 
52  class DT_DLL_VRVOSG DtCloudDrawable : public osg::Drawable
53  {
54  public:
56 
58  virtual ~DtCloudDrawable();
59  protected:
62  private:
64  DtCloudDrawable() = delete;
65  DtCloudDrawable(const DtCloudDrawable & rhs) = delete;
66  DtCloudDrawable& operator=(const DtCloudDrawable& rhs) = delete;
67  public:
68 
70  virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
71 
74  virtual void cleanupCloudLayer(SilverLining::Atmosphere* atmosphere, unsigned int layerHandle) const;
75  protected:
77  virtual void fadeCloudsWithAltitude(const Vector3_64& cameraPosition, SilverLining::CloudLayer * layer, SilverLining::ThreadCameraStreamData* tcsData
78  , DtSilverLiningGroupTcsUserData* userData) const;
79 
81  virtual void fadeCloudsWithAltitude(const Vector3_64& cameraPosition, SilverLining::Atmosphere* atmosphere, SilverLining::ThreadCameraStreamData* tcsData
82  , DtSilverLiningGroupTcsUserData* userData) const;
83 
85  virtual void updateCloudAltitudes(const Vector3_64& cameraPosition, SilverLining::Atmosphere* atmosphere, SilverLining::ThreadCameraStreamData* tcsData
86  , DtSilverLiningGroupTcsUserData* userData) const;
87 
88  //helper functions for setting up the virtual program shaders and uniforms.
89  virtual bool updateShader(osg::Node *node, osg::State& state, SilverLining::Atmosphere* atmosphere, SilverLining::ThreadCameraStreamData* tcsData
90  , DtSilverLiningGroupTcsUserData* userData) const;
91  virtual void updateOpenGLState(osg::State &state, SilverLining::Atmosphere* atmosphere, osg::Camera* osgCamera, SilverLining::ThreadCameraStreamData* tcsData
92  , DtSilverLiningGroupTcsUserData* userData) const;
93  virtual void setIsReflectionUniform(const osg::Camera* osgCamera, SilverLining::Atmosphere* atm, bool isReflection, SilverLining::ThreadCameraStreamData* tcsData) const;
94 
97  virtual void slot_environmentChanged(const std::string& name);
98 
100  virtual bool computeHeightAboveTerrain(const Vector3_64& localPosition, double& heightOfGround
101  , DtSilverLiningGroupTcsUserData* userData) const;
102 
104  virtual void updateCloudLayerAltitudes(SilverLining::Atmosphere* atmosphere, SilverLining::ThreadCameraStreamData* tcsData
105  , DtSilverLiningGroupTcsUserData* userData) const;
106 
108  virtual void updateCubeMap(SilverLining::Atmosphere* atmosphere, SilverLining::ThreadCameraStreamData* tcsData, const osg::Camera* osgCamera, const Vector3_64& cameraPosition
109  , osg::State& state, DtSilverLiningGroupTcsUserData* userData) const;
110 
114  virtual bool updateDepthTextureIfNecessary(osg::RenderInfo& renderInfo) const;
115 
117  virtual bool anyLayerNeedsDepthTexture(void) const;
118 
120  virtual void unbindDepthTexture(osg::RenderInfo& renderInfo) const;
121 
122  protected:
123 
124  //variable for keeping the user shader list around so it can be deleted after new shaders are loaded.
125  mutable std::vector<unsigned int> myUserShaderVector;
126 
129 
130  const bool myShadingRateIsSupported; // true if shading rate extension is supported
131 
133 
135  };
136 }
DtDe & myDe
Definition: DtCloudDrawable.h:128
std::vector< unsigned int > myUserShaderVector
Definition: DtCloudDrawable.h:125
DtSilverliningGroup * myParent
Definition: DtCloudDrawable.h:127
A drawable for drawing the cloud layer.
Definition: DtCloudDrawable.h:52
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtSignalConnectionManager myConnections
Definition: DtCloudDrawable.h:132
Contains makVrv::DtDe class.
This represents per camera, context (tcs) specific data for DtSilverLiningGroup.
Definition: DtSilverLiningGroupTcsUserData.h:46
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:97
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
friend DtCloudDrawableCreator
Definition: DtCloudDrawable.h:55
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
const char * creatorTypeName< DtCloudDrawable >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtCloudDrawable.h:48
DtVirtualBaseClassCreator< DtCloudDrawable, DtSilverliningGroup * > DtCloudDrawableCreator
creator
Definition: DtCloudDrawable.h:41
DtFrameTextureBlitterManager responsible for copying depth buffer to render to target.
Definition: DtFrameTextureBlitterManager.h:38
const bool myShadingRateIsSupported
Definition: DtCloudDrawable.h:130
Base class to provide boost signal/slot management.
DtFrameTextureBlitterManager & myFrameTextureBlitterManager
Definition: DtCloudDrawable.h:134
Contains DLL export macros.
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:72
Definition: vrfObjectManipulationHandlerBaseClass.h:66

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)