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>
38 namespace SilverLining
44 class ThreadCameraStreamData;
51 class DtOsgFogComponent;
52 class DtLightManagerGroup;
54 class DtCloudLayerManager;
57 struct DtSilverLiningFogParameters;
58 class DtSilverLiningFogManager;
59 class DtSilverLiningContextManager;
60 class DtSilverLiningCameraManager;
72 struct DtCrepuscularRaysModifiers;
73 struct DtCrepuscularRaysParameters;
94 virtual void setGenerateCubeMaps(
bool enabled);
100 virtual void installIntoChannel(
DtChannel*);
108 virtual void deleteGeods();
111 virtual void setGeocentricMode(
bool mode);
114 virtual bool geocentricMode()
const;
117 virtual void setHiResCumulus(
bool enabled);
120 virtual bool hiResCumulus()
const;
123 virtual void setLensFlare(
bool enabled);
126 virtual bool lensFlare()
const;
129 virtual void setForcedMoonPhase(
float phase);
132 virtual void clearForcedMoonPhase();
135 virtual bool moonPhaseIsForced()
const;
138 virtual float forcedMoonPhase()
const;
143 virtual void setForcedSunAndMoon(
double sunLat,
double sunLon,
double moonLat,
144 double moonLon,
bool horizonCoords =
true);
147 virtual void clearForcedSunAndMoon();
150 virtual bool sunAndMoonPositionIsForced()
const;
153 virtual void getForcedSunAndMoonPosition(
double& sunLat,
double& sunLon,
154 double& moonLat,
double& moonLon,
bool& horizonCoords)
const;
158 virtual void setLightPollution(
double Wm2);
161 virtual double lightPollution()
const;
164 virtual void setDateAndTime(
unsigned short year,
unsigned char month,
165 unsigned char day,
unsigned char hour,
unsigned char minutes,
166 double seconds,
bool observeDaylightSavings);
169 virtual void updateTime();
173 virtual void setLocation(
const DtVector& location, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
176 virtual void update(
const osg::Matrix& modelViewMatrix, SilverLining::ThreadCameraStreamData* tcsData);
179 virtual void update2D(
const osg::Matrix& m);
189 virtual void removeCloudLayers();
193 virtual void setFogColor(
const osg::Vec4f& rgbA);
196 virtual void setFogHeight(
float height);
200 virtual void setFogBlend(
const osg::Vec4f& rgbA,
float density);
207 virtual void setFogThresholdDistance(
float distance);
210 virtual void setHorizonColor(
const osg::Vec4f& rgbA);
213 virtual void setCubeMapDirty();
216 virtual void setUse16BitEnviroMap(
bool flag);
219 virtual bool getUse16BitEnviroMap();
222 virtual void setUsingSensorFXShader(
bool flag);
225 virtual bool getUsingSensorFXShader();
228 virtual void clearHorizonColor();
234 virtual void clearFogOverrideForAllCameras(
void);
239 void setUseGlobalTimeZone(
bool b);
242 virtual bool useGlobalTimeZone()
const;
245 virtual float getSunAlpha()
const;
248 virtual void setDrawSunAndMoonIntoEnvMap(
bool draw);
251 virtual bool drawSunAndMoonIntoEnvMap()
const;
254 virtual float getSkyCoverage()
const;
258 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
262 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
266 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
270 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
274 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
279 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
283 virtual void addCumulonimbusCappilatus(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
284 const DtVector& bounds,
double density,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
288 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
291 virtual void addGroundFog(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
float cornerRadius,
292 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
294 virtual void setCloudLayerEnabled(
DtCloudLayerId layerId,
bool enabled, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
295 virtual void setCloudLayerPositionAndOrientation(
DtCloudLayerId layerId,
const DtVector& position,
float orientation, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
297 virtual void setWind(
const double directionDEN,
const double minAltitude,
298 const double maxAltitude,
const double velocity);
300 virtual void setAirTurbidity(
float turbidity);
301 virtual void setVisibleDistance(
float distance, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
302 virtual float getVisibleDistance()
const;
304 virtual void createAtmosphere();
305 virtual void destroyAtmosphere();
310 virtual void addRain(
float mmPerHour,
bool global);
311 virtual void addSleet(
float mmPerHour,
bool global);
312 virtual void addSnow(
float mmPerHour,
bool global,
bool wet);
313 virtual void clearAllPrecipitation(SilverLining::ThreadCameraStreamData* tcsData);
317 virtual bool realizeLayers(SilverLining::ThreadCameraStreamData* tcsData);
319 virtual SilverLining::Atmosphere* findAtmosphere();
320 virtual const SilverLining::Atmosphere* findAtmosphere()
const;
323 virtual void getGMTDateTime(
long &julianDate,
double &GMTTod);
326 virtual osg::Node *getCloudsNode();
329 virtual osg::Node *getSkyNode();
332 virtual void setSunMoonEnabled(
bool drawSunMoon);
335 virtual bool sunMoonEnabled();
338 virtual void setStarsEnabled(
bool drawStars);
341 virtual bool starsEnabled();
347 void setEnableHDR(
bool enable);
350 virtual osg::LightSource *skyLight();
360 virtual void updateImGuiAndGetModifiersOffOfImgGui(DtCrepuscularRaysModifiers& modifiers
361 ,
float r,
float g,
float b
362 ,
float sunPosX,
float sunPosY,
float sunPosZ
363 ,
float exposure)
const;
367 virtual void slot_windowToBeDestroyed(
DtWindow* window);
373 virtual void addGraphicsContextIfNecessary(
const osg::Camera* osgCamera);
393 virtual int CalculateZoneByLongitude(
double longitude)
const;
396 void SetTimeAndLocation();
398 virtual void addPrecipitationToClouds(
int type,
float mmPerHour);
400 virtual void updatePrecipitation(SilverLining::ThreadCameraStreamData* tcsData,
const DtVector& location);
402 virtual void setCloudVisibility(SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
405 virtual void traverse(osg::NodeVisitor& nv);
406 virtual void resetLayers();
407 virtual void forceResetLayers();
411 virtual void updateCubeMap(
void);
414 virtual void slot_reloadShader();
417 virtual void updateLightOverrideGui(
float x,
float y,
float z);
421 virtual void calculateAndFillFogParameters(
DtSilverLiningFogParameters& fogParameters,
bool adjustCoverage, SilverLining::ThreadCameraStreamData* tcsData)
const;
424 virtual void createFogAttributeIfNeeded(
void);
bool myDrawStars
Definition: DtSilverliningGroup.h:495
bool myFailedInit
Definition: DtSilverliningGroup.h:501
DtSilverLiningContextManager * myContextManager
Definition: DtSilverliningGroup.h:512
Abstract Base class.
Definition: DtWindow.h:25
osg::ref_ptr< DtLightManagerGroup > myLightManagerGroup
Definition: DtSilverliningGroup.h:444
Definition: DtSilverLiningCloudLayer.h:28
osg::ref_ptr< osg::Geode > myCloudGeode
Definition: DtSilverliningGroup.h:443
intermediate structure for computing and returning fog parameters
Definition: DtSilverLiningFogManager.h:25
std::unordered_map< DtCloudLayerId, DtSilverLiningCloudLayer > CloudLayerMap
Definition: DtSilverLiningCloudLayer.h:71
bool myDrawSunMoon
Definition: DtSilverliningGroup.h:496
DtSilverLiningCameraManager * myCameraManager
Definition: DtSilverliningGroup.h:513
DtCloudLayerManager * myLayerManager
Definition: DtSilverliningGroup.h:439
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::Vec3f myLastUpVector
Definition: DtSilverliningGroup.h:447
Definition: featureContext.h:37
Contains makVrv::DtCloudCoverManager class.
osg::ref_ptr< DtOsgGlobalShaderComponent > myGlobalShaderComponent
Definition: DtSilverliningGroup.h:490
float myForcedMoonLat
Definition: DtSilverliningGroup.h:467
float myForcedSunLat
Definition: DtSilverliningGroup.h:465
osg::Vec2f myWind
Definition: DtSilverliningGroup.h:448
DtSilverLiningFogManager * myFogManager
Definition: DtSilverliningGroup.h:511
OpenThreads::Mutex myMutex
Definition: DtSilverliningGroup.h:429
double myLastImGuiSimTime
Definition: DtSilverliningGroup.h:508
friend DtSilverliningGroupCreator
only creator can created
Definition: DtSilverliningGroup.h:83
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
An OSG implementation of the sky.
Definition: DtOsgSkyObject.h:28
osg::ref_ptr< DtOsgFogComponent > myFogComponent
Definition: DtSilverliningGroup.h:488
bool myUse16BitEnviroMap
Definition: DtSilverliningGroup.h:473
virtual osg::Vec3f & getLastUpVector()
Definition: DtSilverliningGroup.h:354
bool myCubeMapFullRegenerate
Definition: DtSilverliningGroup.h:458
osg::Vec4f myHorizonColor
Definition: DtSilverliningGroup.h:446
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:79
Definition: DtSilverLiningCameraManager.h:50
int myGlobalPrecipitationType
Definition: DtSilverliningGroup.h:483
bool myLensFlareEnabled
Definition: DtSilverliningGroup.h:460
float myFogDensity
Definition: DtSilverliningGroup.h:451
float myForcedMoonLon
Definition: DtSilverliningGroup.h:468
bool myUseGlobalTimeZone
Definition: DtSilverliningGroup.h:500
const char * creatorTypeName< DtSilverliningGroup >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtSilverliningGroup.h:70
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
The abstract Channel Class.
Definition: DtChannel.h:30
SilverLining::Location * myLocation
Definition: DtSilverliningGroup.h:437
bool myHasFixedHorizonColor
Definition: DtSilverliningGroup.h:450
bool myForcedSunAndMoonUsingHorizonCoords
Definition: DtSilverliningGroup.h:469
DtDe & myDe
Definition: DtSilverliningGroup.h:428
std::string myOriginalVoxelDimension
Definition: DtSilverliningGroup.h:504
int myCubeMapDirtyState
Definition: DtSilverliningGroup.h:457
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:466
DtReferenceEllipsoid myRefEllip
Definition: DtSilverliningGroup.h:431
float myTurbidity
Definition: DtSilverliningGroup.h:454
bool myDrawSunAndMoonIntoEnvMap
Definition: DtSilverliningGroup.h:471
float mySunAlpha
Definition: DtSilverliningGroup.h:480
bool mySunAndMoonPositionForced
Definition: DtSilverliningGroup.h:464
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myMoonPhaseForced
Definition: DtSilverliningGroup.h:462
bool myLastAtmosphereFogEnabled
Definition: DtSilverliningGroup.h:503
Definition: DtCloudLayerManager.h:50
std::vector< unsigned int > myDefaultShaderVector
Definition: DtSilverliningGroup.h:493
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
Contains vrvCore::DtCloudLayerRecord declaration.
bool myCubeMapEnabled
Definition: DtSilverliningGroup.h:459
osg::ref_ptr< osg::Uniform > myLightLevelUniform
Definition: DtSilverliningGroup.h:476
osg::Vec3f myOverrideLightPosition
Definition: DtSilverliningGroup.h:507
Definition: DtSilverLiningContextManager.h:41
DtVirtualBaseClassCreator< DtSilverliningGroup > DtSilverliningGroupCreator
creator
Definition: DtSilverliningGroup.h:63
bool myNeedsResetFlag
Definition: DtSilverliningGroup.h:456
bool myGeocFlag
Definition: DtSilverliningGroup.h:455
bool myCurveCloudsTowardGround
Definition: DtSilverliningGroup.h:481
Base class to provide boost signal/slot management.
SilverLining::Atmosphere * myAtmosphere
my atmosphere.
Definition: DtSilverliningGroup.h:435
bool myForceRelight
Definition: DtSilverliningGroup.h:486
bool myUsingSensorFXShader
Definition: DtSilverliningGroup.h:474
float myGlobalPrecipitationIntensity
Definition: DtSilverliningGroup.h:484
osg::ref_ptr< osg::Uniform > myLightAmbientUniform
Definition: DtSilverliningGroup.h:477
manages fog settings for multiple cameras(windows/views/channels)
Definition: DtSilverLiningFogManager.h:50
const char int mode
Definition: ioapi.h:38
osg::ref_ptr< osg::LightSource > mySkyLight
Definition: DtSilverliningGroup.h:442
DtGeodeticCoord myGeod
Definition: DtSilverliningGroup.h:432
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains DLL export macros.
osg::ref_ptr< osg::Geode > mySkyGeode
Definition: DtSilverliningGroup.h:441
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
bool myUseAzimuthElevationForOverrideGui
Definition: DtSilverliningGroup.h:509
bool myOverrideLightPositionEnabled
Definition: DtSilverliningGroup.h:506
Contains makVrv::DtSilverLiningCloudLayer struct.
bool myHiResCumulus
Definition: DtSilverliningGroup.h:470
float myFogThresholdDistance
Definition: DtSilverliningGroup.h:479
SilverLining::LocalTime * myLocalTime
Definition: DtSilverliningGroup.h:436
float myForcedMoonPhase
Definition: DtSilverliningGroup.h:463
float myVisibility
Definition: DtSilverliningGroup.h:453
Contains the DtOsgGlobalShaderComponent class.
virtual bool getFailedInit()
Definition: DtSilverliningGroup.h:308
DtSignalConnectionManager myConnections
Definition: DtSilverliningGroup.h:498
Definition: vrfObjectManipulationHandlerBaseClass.h:65