19 #include <osg/LightSource>
20 #include <osg/Uniform>
21 #include <osg/observer_ptr>
23 #include <OpenThreads/Mutex>
25 #include <matrix/vlVector.h>
26 #include <matrix/referenceEllipsoid.h>
27 #include <matrix/geodeticCoord.h>
35 #include <boost/unordered_map.hpp>
39 namespace SilverLining
51 class DtOsgFogComponent;
52 class DtLightManagerGroup;
54 class DtCloudLayerManager;
57 struct DtCrepuscularRaysModifiers;
58 struct DtCrepuscularRaysParameters;
76 virtual void setGenerateCubeMaps(
bool enabled);
79 void setCubeMapGenerationDistanceThreshold(
double threshold);
87 virtual unsigned int getPrimaryCubeMap()
const;
89 virtual void installIntoChannel(
DtChannel*);
95 virtual void deleteGeods();
98 virtual void setGeocentricMode(
bool mode);
101 virtual bool geocentricMode()
const;
104 virtual void setHiResCumulus(
bool enabled);
107 virtual bool hiResCumulus()
const;
110 virtual void setLensFlare(
bool enabled);
113 virtual bool lensFlare()
const;
116 virtual void setCrepuscularRays(
bool enabled);
119 virtual bool crepuscularRays()
const;
122 virtual void setForcedMoonPhase(
float phase);
125 virtual void clearForcedMoonPhase();
128 virtual bool moonPhaseIsForced()
const;
131 virtual float forcedMoonPhase()
const;
136 virtual void setForcedSunAndMoon(
double sunLat,
double sunLon,
double moonLat,
137 double moonLon,
bool horizonCoords =
true);
140 virtual void clearForcedSunAndMoon();
143 virtual bool sunAndMoonPositionIsForced()
const;
146 virtual void getForcedSunAndMoonPosition(
double& sunLat,
double& sunLon,
147 double& moonLat,
double& moonLon,
bool& horizonCoords)
const;
151 virtual void setLightPollution(
double Wm2);
154 virtual double lightPollution()
const;
157 virtual void setDateAndTime(
unsigned short year,
unsigned char month,
158 unsigned char day,
unsigned char hour,
unsigned char minutes,
159 double seconds,
bool observeDaylightSavings);
162 virtual void updateTime();
166 virtual void setLocation(
const DtVector& location);
169 virtual void update(
const osg::Matrix& m);
172 virtual void update2D(
const osg::Matrix& m);
182 virtual void removeCloudLayers();
186 virtual void setFogColor(
const osg::Vec4f& rgbA);
189 virtual void setFogHeight(
float height);
193 virtual void setFogBlend(
const osg::Vec4f& rgbA,
float density);
200 virtual void setFogThresholdDistance(
float distance);
203 virtual void setHorizonColor(
const osg::Vec4f& rgbA);
206 virtual void setCubeMapDirty();
209 virtual void setUse16BitEnviroMap(
bool flag);
212 virtual bool getUse16BitEnviroMap();
215 virtual void setUsingSensorFXShader(
bool flag);
218 virtual bool getUsingSensorFXShader();
221 virtual void clearHorizonColor();
226 virtual void clearFogOverrideForAllCameras(
void);
231 void setUseGlobalTimeZone(
bool b);
234 virtual bool useGlobalTimeZone()
const;
237 virtual float getSunAlpha()
const;
240 virtual void setDrawSunAndMoonIntoEnvMap(
bool draw);
243 virtual bool drawSunAndMoonIntoEnvMap()
const;
246 virtual float getSkyCoverage()
const;
250 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
253 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
256 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
259 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
263 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
266 virtual void addCumulonimbusCappilatus(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
267 const DtVector& bounds,
double density,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
270 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
272 virtual void addGroundFog(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
float cornerRadius,
273 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
275 virtual void setCloudLayerEnabled(
DtCloudLayerId layerId,
bool enabled);
276 virtual void setCloudLayerPositionAndOrientation(
DtCloudLayerId layerId,
const DtVector& position,
float orientation);
278 virtual void setWind(
double directionDEN,
double minAltitude,
double maxAltitude,
double velocity);
279 virtual void setAirTurbidity(
float turbidity);
280 virtual void setVisibleDistance(
float distance);
281 virtual float getVisibleDistance()
const;
283 virtual void createAtmosphere();
284 virtual void destroyAtmosphere();
289 virtual void addRain(
float mmPerHour,
bool global);
290 virtual void addSleet(
float mmPerHour,
bool global);
291 virtual void addSnow(
float mmPerHour,
bool global,
bool wet);
292 virtual void clearAllPrecipitation();
294 virtual void realizeLayers();
296 virtual SilverLining::Atmosphere* findAtmosphere();
297 virtual const SilverLining::Atmosphere* findAtmosphere()
const;
302 virtual void getGMTDateTime(
long &julianDate,
double &GMTTod);
305 virtual osg::Node *getCloudsNode();
308 virtual osg::Node *getSkyNode();
311 virtual void setSunMoonEnabled(
bool drawSunMoon);
314 virtual bool getSunMoonEnabled();
317 virtual void setStarsEnabled(
bool drawStars);
320 virtual bool getStarsEnabled();
326 void setEnableHDR(
bool enable);
329 virtual osg::LightSource *skyLight();
339 virtual void updateImGuiAndGetModifiersOffOfImgGui(DtCrepuscularRaysModifiers& modifiers
340 ,
float r,
float g,
float b
341 ,
float sunPosX,
float sunPosY,
float sunPosZ
342 ,
float exposure)
const;
346 virtual void slot_windowToBeDestroyed(
DtWindow* window);
352 virtual void addGraphicsContextIfNecessary(osg::GraphicsContext* key);
361 virtual int CalculateZoneByLongitude(
double longitude);
363 void SetTimeAndLocation();
365 virtual void addPrecipitationToClouds(
int type,
float mmPerHour);
367 virtual void updatePrecipitation();
369 virtual void setCloudVisibility();
372 virtual void traverse(osg::NodeVisitor& nv);
373 virtual void resetLayers();
374 virtual void forceResetLayers();
376 virtual void generateCubeMap(
const osg::Matrix& viewMatrix);
379 virtual void slot_reloadShader();
382 virtual void updateLightOverrideGui(
float x,
float y,
float z);
float mySavedPrecipitationIntensity
Definition: DtSilverliningGroup.h:451
bool myDrawStars
Definition: DtSilverliningGroup.h:462
bool myFailedInit
Definition: DtSilverliningGroup.h:468
Abstract Base class.
Definition: DtWindow.h:25
osg::ref_ptr< DtLightManagerGroup > myLightManagerGroup
Definition: DtSilverliningGroup.h:405
FogOverrideMap myOverrideFogMap
Definition: DtSilverliningGroup.h:438
Virtual base class.
Definition: DtVirtualBaseClass.h:22
bool myCrepuscularRaysEnabled
Definition: DtSilverliningGroup.h:421
osg::ref_ptr< osg::Geode > myCloudGeode
Definition: DtSilverliningGroup.h:404
bool myDrawSunMoon
Definition: DtSilverliningGroup.h:463
Creator that is used to create the silver lining group.
Definition: DtSilverliningGroup.h:485
int mySavedPrecipitationType
Definition: DtSilverliningGroup.h:450
std::map< osg::observer_ptr< const osg::Camera >, float > myFogOverrideDensityMap
Definition: DtSilverliningGroup.h:439
DtCloudLayerManager * myLayerManager
Definition: DtSilverliningGroup.h:400
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::Vec3f myLastUpVector
Definition: DtSilverliningGroup.h:408
Definition: featureContext.h:37
Contains makVrv::DtCloudCoverManager class.
osg::ref_ptr< DtOsgGlobalShaderComponent > myGlobalShaderComponent
Definition: DtSilverliningGroup.h:457
float myForcedMoonLat
Definition: DtSilverliningGroup.h:427
float myForcedSunLat
Definition: DtSilverliningGroup.h:425
OpenThreads::Mutex myMutex
Definition: DtSilverliningGroup.h:390
double myLastImGuiSimTime
Definition: DtSilverliningGroup.h:475
std::map< osg::GraphicsContext *, void * > ContextToHandleMap
Definition: DtSilverliningGroup.h:478
std::map< osg::observer_ptr< const osg::Camera >, osg::Vec4f > myFogOverrideColorMap
Definition: DtSilverliningGroup.h:440
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
An OSG implementation of the sky.
Definition: DtOsgSkyObject.h:46
osg::ref_ptr< DtOsgFogComponent > myFogComponent
Definition: DtSilverliningGroup.h:455
bool myUse16BitEnviroMap
Definition: DtSilverliningGroup.h:433
virtual osg::Vec3f & getLastUpVector()
Definition: DtSilverliningGroup.h:333
bool myCubeMapFullRegenerate
Definition: DtSilverliningGroup.h:418
osg::Vec4f myHorizonColor
Definition: DtSilverliningGroup.h:407
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:63
bool myLensFlareEnabled
Definition: DtSilverliningGroup.h:420
float myFogDensity
Definition: DtSilverliningGroup.h:411
float myForcedMoonLon
Definition: DtSilverliningGroup.h:428
bool myUseGlobalTimeZone
Definition: DtSilverliningGroup.h:467
The abstract Channel Class.
Definition: DtChannel.h:29
SilverLining::Location * myLocation
Definition: DtSilverliningGroup.h:398
bool myHasFixedHorizonColor
Definition: DtSilverliningGroup.h:410
bool myForcedSunAndMoonUsingHorizonCoords
Definition: DtSilverliningGroup.h:429
DtDe & myDe
Definition: DtSilverliningGroup.h:389
Contains makVrv::DtVirtualBaseClass class.
std::string myOriginalVoxelDimension
Definition: DtSilverliningGroup.h:471
int myCubeMapDirtyState
Definition: DtSilverliningGroup.h:417
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
float myForcedSunLon
Definition: DtSilverliningGroup.h:426
DtReferenceEllipsoid myRefEllip
Definition: DtSilverliningGroup.h:392
std::vector< DtSilverLiningCloudLayer > CloudLayerList
Definition: DtSilverliningGroup.h:387
float myTurbidity
Definition: DtSilverliningGroup.h:414
bool myDrawSunAndMoonIntoEnvMap
Definition: DtSilverliningGroup.h:431
float mySunAlpha
Definition: DtSilverliningGroup.h:446
bool mySunAndMoonPositionForced
Definition: DtSilverliningGroup.h:424
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
bool myMoonPhaseForced
Definition: DtSilverliningGroup.h:422
bool myLastAtmosphereFogEnabled
Definition: DtSilverliningGroup.h:470
Definition: DtCloudLayerManager.h:37
std::vector< unsigned int > myDefaultShaderVector
Definition: DtSilverliningGroup.h:460
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
boost::unordered_map< DtCloudLayerId, DtSilverLiningCloudLayer > CloudLayerMap
Definition: DtSilverLiningCloudLayer.h:41
Contains vrvCore::DtCloudLayerRecord declaration.
bool myCubeMapEnabled
Definition: DtSilverliningGroup.h:419
osg::ref_ptr< osg::Uniform > myLightLevelUniform
Definition: DtSilverliningGroup.h:442
osg::Vec3f myOverrideLightPosition
Definition: DtSilverliningGroup.h:474
bool myNeedsResetFlag
Definition: DtSilverliningGroup.h:416
bool myGeocFlag
Definition: DtSilverliningGroup.h:415
bool myCurveCloudsTowardGround
Definition: DtSilverliningGroup.h:447
Definition: DtSilverLiningCloudLayer.h:23
Base class to provide boost signal/slot management.
SilverLining::Atmosphere * myAtmosphere
my atmosphere.
Definition: DtSilverliningGroup.h:396
bool myForceRelight
Definition: DtSilverliningGroup.h:453
bool myPrecipitationStateSaved
Definition: DtSilverliningGroup.h:449
bool myUsingSensorFXShader
Definition: DtSilverliningGroup.h:434
osg::ref_ptr< osg::Uniform > myLightAmbientUniform
Definition: DtSilverliningGroup.h:443
const char int mode
Definition: ioapi.h:38
osg::ref_ptr< osg::LightSource > mySkyLight
Definition: DtSilverliningGroup.h:403
DtGeodeticCoord myGeod
Definition: DtSilverliningGroup.h:393
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains DLL export macros.
osg::ref_ptr< osg::Geode > mySkyGeode
Definition: DtSilverliningGroup.h:402
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
bool myUseAzimuthElevationForOverrideGui
Definition: DtSilverliningGroup.h:476
bool myOverrideLightPositionEnabled
Definition: DtSilverliningGroup.h:473
std::map< osg::observer_ptr< const osg::Camera >, bool > FogOverrideMap
Definition: DtSilverliningGroup.h:436
Contains makVrv::DtSilverLiningCloudLayer struct.
bool myHiResCumulus
Definition: DtSilverliningGroup.h:430
float myFogThresholdDistance
Definition: DtSilverliningGroup.h:445
ContextToHandleMap myOsgGcToOsGc
Definition: DtSilverliningGroup.h:479
SilverLining::LocalTime * myLocalTime
Definition: DtSilverliningGroup.h:397
float myForcedMoonPhase
Definition: DtSilverliningGroup.h:423
float myVisibility
Definition: DtSilverliningGroup.h:413
Contains the DtOsgGlobalShaderComponent class.
DtDe & getDe()
Definition: DtSilverliningGroup.h:73
virtual bool getFailedInit()
Definition: DtSilverliningGroup.h:287
DtSignalConnectionManager myConnections
Definition: DtSilverliningGroup.h:465
Definition: vrfObjectManipulationHandlerBaseClass.h:67