25 #include <osg/LightSource>
26 #include <osg/Uniform>
27 #include <osg/observer_ptr>
29 #include <OpenThreads/Mutex>
31 #include <matrix/vlVector.h>
32 #include <matrix/referenceEllipsoid.h>
33 #include <matrix/geodeticCoord.h>
38 namespace SilverLining
44 class ThreadCameraStreamData;
53 class DtOsgFogComponent;
54 class DtLightManagerGroup;
56 class DtCloudLayerManager;
58 class DtCoordinateSystem;
60 struct DtSilverLiningFogParameters;
61 class DtSilverLiningFogManager;
62 class DtSilverLiningContextManager;
63 class DtSilverLiningCameraManager;
64 class DtSilverLiningCubeMapData;
76 struct DtCrepuscularRaysModifiers;
77 struct DtCrepuscularRaysParameters;
97 virtual void setGenerateCubeMaps(
bool enabled);
103 virtual void installIntoChannel(
DtChannel*);
111 virtual void deleteGeods();
114 virtual void setGeocentricMode(
bool mode);
117 virtual bool geocentricMode()
const;
120 virtual void setHiResCumulus(
bool enabled);
123 virtual bool hiResCumulus()
const;
126 virtual void setLensFlare(
bool enabled);
129 virtual bool lensFlare()
const;
132 virtual void setForcedMoonPhase(
float phase);
135 virtual void clearForcedMoonPhase();
138 virtual bool moonPhaseIsForced()
const;
141 virtual float forcedMoonPhase()
const;
146 virtual void setForcedSunAndMoon(
double sunLat,
double sunLon,
double moonLat,
147 double moonLon,
bool horizonCoords =
true);
150 virtual void clearForcedSunAndMoon();
153 virtual bool sunAndMoonPositionIsForced()
const;
156 virtual void getForcedSunAndMoonPosition(
double& sunLat,
double& sunLon,
157 double& moonLat,
double& moonLon,
bool& horizonCoords)
const;
161 virtual void setLightPollution(
double Wm2);
164 virtual double lightPollution()
const;
167 virtual void setDateAndTime(
unsigned short year,
unsigned char month,
unsigned char day
168 ,
unsigned char hour,
unsigned char minutes,
double seconds
169 ,
bool observeDaylightSavings
183 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);
238 virtual bool useGlobalTimeZone()
const;
241 virtual float getSunAlpha()
const;
244 virtual void setDrawSunAndMoonIntoEnvMap(
bool draw);
247 virtual bool drawSunAndMoonIntoEnvMap()
const;
254 const DtVector& bounds,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
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,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
270 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
275 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
279 virtual void addCumulonimbusCappilatus(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
280 const DtVector& bounds,
double density,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
284 float cornerRadius,
const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
287 virtual void addGroundFog(
DtCloudLayerId layerId,
const DtVector& position,
float orientation,
float cornerRadius,
288 const DtVector& bounds,
double density,
bool infinite,
bool relative,
bool fadeAtAltitude,
bool altitudeIsHAT);
290 virtual void setCloudLayerEnabled(
DtCloudLayerId layerId,
bool enabled, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
291 virtual void setCloudLayerPositionAndOrientation(
DtCloudLayerId layerId,
const DtVector& position,
float orientation, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
293 virtual void setWind(
const double directionDEN,
const double minAltitude,
294 const double maxAltitude,
const double velocity);
296 virtual void setAirTurbidity(
float turbidity);
297 virtual void setVisibleDistance(
float distance, SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
298 virtual float getVisibleDistance()
const;
300 virtual void createAtmosphere();
301 virtual void destroyAtmosphere();
306 virtual void addRain(
float mmPerHour,
bool global);
307 virtual void addSleet(
float mmPerHour,
bool global);
308 virtual void addSnow(
float mmPerHour,
bool global,
bool wet);
309 virtual void clearAllPrecipitation(SilverLining::ThreadCameraStreamData* tcsData);
313 virtual bool realizeLayers(SilverLining::ThreadCameraStreamData* tcsData);
315 virtual SilverLining::Atmosphere* findAtmosphere();
316 virtual const SilverLining::Atmosphere* findAtmosphere()
const;
319 virtual void getGMTDateTime(
long &julianDate,
double &GMTTod)
const;
322 virtual osg::Node *getCloudsNode();
325 virtual osg::Node *getSkyNode();
328 virtual void setSunMoonEnabled(
bool drawSunMoon);
331 virtual bool sunMoonEnabled();
334 virtual void setStarsEnabled(
bool drawStars);
337 virtual bool starsEnabled();
343 void setEnableHDR(
bool enable);
346 virtual osg::LightSource *skyLight();
358 virtual void slot_windowToBeDestroyed(
DtWindow* window);
364 virtual void addGraphicsContextIfNecessary(
const osg::Camera* osgCamera);
386 static void enableBillboardRotation(
bool val);
387 static bool billboardRotationEnabled();
396 virtual int CalculateZoneByLongitude(
double longitude)
const;
399 void setTimeAndLocationAtConstruction();
404 void setUseGlobalTimeZone(
bool b);
408 virtual void fillConditionsFromSkyObjectAtCreation(
DtOsgSkyObject* skyObject);
410 virtual void addPrecipitationToClouds(
int type,
float mmPerHour);
412 virtual void updatePrecipitation(
const DtVector& location, SilverLining::ThreadCameraStreamData* tcsData);
414 virtual void setCloudVisibility(SilverLining::ThreadCameraStreamData* tcsData,
bool setForAll);
417 virtual void traverse(osg::NodeVisitor& nv);
418 virtual void resetLayers();
419 virtual void forceResetLayers();
426 virtual void slot_reloadShader();
429 virtual void updateLightOverrideGui(
float x,
float y,
float z, SilverLining::ThreadCameraStreamData* tcsData);
433 virtual void calculateAndFillFogParameters(
DtSilverLiningFogParameters& fogParameters,
bool adjustCoverage, SilverLining::ThreadCameraStreamData* tcsData)
const;
436 virtual void createFogAttributeIfNeeded(
void);
439 virtual void setCubeMapDirtyState(
int val);
445 virtual bool isTimeAndZoneTheSameExcludingMinutesAndSeconds(
const SilverLining::LocalTime* lhs,
const SilverLining::LocalTime* rhs)
const;
449 virtual void updateImGuiAndGetModifiersOffOfImgGui(DtCrepuscularRaysModifiers& modifiers
450 ,
float r,
float g,
float b
451 ,
float sunPosX,
float sunPosY,
float sunPosZ
452 ,
float exposure)
const;
455 virtual void fillRaysParameters(SilverLining::Vector3& sunClipPos, SilverLining::Vector4& slparams,
bool geocentricMode,
const SilverLining::ThreadCameraStreamData* tcsData,
const SilverLining::Atmosphere* atmosphere)
const;
458 virtual void computeSunPositionClipSpace(SilverLining::Vector3& sunClip,
bool& clipped,
bool& behind,
const SilverLining::Vector3& sunWorld,
bool geocentricMode,
const SilverLining::ThreadCameraStreamData* tcsData)
const;
461 virtual void slot_coordinateSystemChanged();
bool myDrawStars
my atmosphere.
Definition: DtSilverliningGroup.h:530
bool myFailedInit
my atmosphere.
Definition: DtSilverliningGroup.h:536
DtSilverLiningContextManager * myContextManager
my atmosphere.
Definition: DtSilverliningGroup.h:547
Abstract Base class.
Definition: DtWindow.h:25
osg::ref_ptr< DtLightManagerGroup > myLightManagerGroup
my atmosphere.
Definition: DtSilverliningGroup.h:480
Definition: DtSilverLiningCloudLayer.h:28
osg::ref_ptr< osg::Geode > myCloudGeode
my atmosphere.
Definition: DtSilverliningGroup.h:479
intermediate structure for computing and returning fog parameters
Definition: DtSilverLiningFogManager.h:27
std::unordered_map< DtCloudLayerId, DtSilverLiningCloudLayer > CloudLayerMap
Definition: DtSilverLiningCloudLayer.h:71
bool myDrawSunMoon
my atmosphere.
Definition: DtSilverliningGroup.h:531
DtSilverLiningCameraManager * myCameraManager
my atmosphere.
Definition: DtSilverliningGroup.h:548
DtCloudLayerManager * myLayerManager
my atmosphere.
Definition: DtSilverliningGroup.h:475
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::Vec3f myLastUpVector
my atmosphere.
Definition: DtSilverliningGroup.h:483
Definition: featureContext.h:37
Contains makVrv::DtCloudCoverManager class.
osg::ref_ptr< DtOsgGlobalShaderComponent > myGlobalShaderComponent
my atmosphere.
Definition: DtSilverliningGroup.h:525
float myForcedMoonLat
my atmosphere.
Definition: DtSilverliningGroup.h:501
float myForcedSunLat
my atmosphere.
Definition: DtSilverliningGroup.h:499
osg::Vec2f myWind
my atmosphere.
Definition: DtSilverliningGroup.h:484
DtSilverLiningFogManager * myFogManager
my atmosphere.
Definition: DtSilverliningGroup.h:546
OpenThreads::Mutex myMutex
my atmosphere.
Definition: DtSilverliningGroup.h:465
double myLastImGuiSimTime
my atmosphere.
Definition: DtSilverliningGroup.h:543
friend DtSilverliningGroupCreator
only creator can created
Definition: DtSilverliningGroup.h:86
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
static const float theAtmosphereTresholdTrigger
in seconds
Definition: DtSilverliningGroup.h:560
An OSG implementation of the sky.
Definition: DtOsgSkyObject.h:28
osg::ref_ptr< DtOsgFogComponent > myFogComponent
my atmosphere.
Definition: DtSilverliningGroup.h:523
bool myUse16BitEnviroMap
my atmosphere.
Definition: DtSilverliningGroup.h:508
virtual osg::Vec3f & getLastUpVector()
Definition: DtSilverliningGroup.h:350
osg::Vec4f myHorizonColor
my atmosphere.
Definition: DtSilverliningGroup.h:482
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:82
Definition: DtSilverLiningCameraManager.h:50
int myGlobalPrecipitationType
my atmosphere.
Definition: DtSilverliningGroup.h:518
bool myLensFlareEnabled
my atmosphere.
Definition: DtSilverliningGroup.h:494
float myFogDensity
my atmosphere.
Definition: DtSilverliningGroup.h:487
float myForcedMoonLon
my atmosphere.
Definition: DtSilverliningGroup.h:502
bool myUseGlobalTimeZone
my atmosphere.
Definition: DtSilverliningGroup.h:535
const char * creatorTypeName< DtSilverliningGroup >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtSilverliningGroup.h:74
static const float theDefaultCubeMapUpdateAndRelightTime
beyond this the cube map gets triggered to be updated. Its also the time used to fudge the current ti...
Definition: DtSilverliningGroup.h:556
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
The abstract Channel Class.
Definition: DtChannel.h:35
SilverLining::Location * myLocation
my atmosphere.
Definition: DtSilverliningGroup.h:473
bool myHasFixedHorizonColor
my atmosphere.
Definition: DtSilverliningGroup.h:486
bool myForcedSunAndMoonUsingHorizonCoords
my atmosphere.
Definition: DtSilverliningGroup.h:503
DtDe & myDe
my atmosphere.
Definition: DtSilverliningGroup.h:464
std::string myOriginalVoxelDimension
my atmosphere.
Definition: DtSilverliningGroup.h:539
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
float myForcedSunLon
my atmosphere.
Definition: DtSilverliningGroup.h:500
DtReferenceEllipsoid myRefEllip
my atmosphere.
Definition: DtSilverliningGroup.h:467
float myTurbidity
my atmosphere.
Definition: DtSilverliningGroup.h:490
bool myDrawSunAndMoonIntoEnvMap
my atmosphere.
Definition: DtSilverliningGroup.h:505
float mySunAlpha
my atmosphere.
Definition: DtSilverliningGroup.h:515
bool mySunAndMoonPositionForced
my atmosphere.
Definition: DtSilverliningGroup.h:498
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
State component that injects Fog rendering capabilities into a state set.
Definition: DtOsgFogComponent.h:33
float myStratocumulusVoxelDimension
my atmosphere.
Definition: DtSilverliningGroup.h:506
bool myMoonPhaseForced
my atmosphere.
Definition: DtSilverliningGroup.h:496
bool myLastAtmosphereFogEnabled
my atmosphere.
Definition: DtSilverliningGroup.h:538
Definition: DtCloudLayerManager.h:52
std::vector< unsigned int > myDefaultShaderVector
my atmosphere.
Definition: DtSilverliningGroup.h:528
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
Contains vrvCore::DtCloudLayerRecord declaration.
bool myCubeMapEnabled
my atmosphere.
Definition: DtSilverliningGroup.h:493
osg::ref_ptr< osg::Uniform > myLightLevelUniform
my atmosphere.
Definition: DtSilverliningGroup.h:511
static bool theBillboardRotationEnabled
my atmosphere.
Definition: DtSilverliningGroup.h:562
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
osg::Vec3f myOverrideLightPosition
my atmosphere.
Definition: DtSilverliningGroup.h:542
Definition: DtSilverLiningContextManager.h:43
DtVirtualBaseClassCreator< DtSilverliningGroup > DtSilverliningGroupCreator
creator
Definition: DtSilverliningGroup.h:67
bool myNeedsResetFlag
my atmosphere.
Definition: DtSilverliningGroup.h:492
Definition: DtSilverLiningCubeMapManager.h:36
bool myGeocFlag
my atmosphere.
Definition: DtSilverliningGroup.h:491
bool myCurveCloudsTowardGround
my atmosphere.
Definition: DtSilverliningGroup.h:516
Base class to provide boost signal/slot management.
SilverLining::Atmosphere * myAtmosphere
my atmosphere.
Definition: DtSilverliningGroup.h:471
bool myForceRelight
my atmosphere.
Definition: DtSilverliningGroup.h:521
bool myUsingSensorFXShader
my atmosphere.
Definition: DtSilverliningGroup.h:509
float myGlobalPrecipitationIntensity
my atmosphere.
Definition: DtSilverliningGroup.h:519
osg::ref_ptr< osg::Uniform > myLightAmbientUniform
my atmosphere.
Definition: DtSilverliningGroup.h:512
manages fog settings for multiple cameras(windows/views/channels)
Definition: DtSilverLiningFogManager.h:52
const char int mode
Definition: ioapi.h:38
osg::ref_ptr< osg::LightSource > mySkyLight
my atmosphere.
Definition: DtSilverliningGroup.h:478
DtGeodeticCoord myGeod
my atmosphere.
Definition: DtSilverliningGroup.h:468
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains DLL export macros.
osg::ref_ptr< osg::Geode > mySkyGeode
my atmosphere.
Definition: DtSilverliningGroup.h:477
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:70
bool myUseAzimuthElevationForOverrideGui
my atmosphere.
Definition: DtSilverliningGroup.h:544
bool myOverrideLightPositionEnabled
my atmosphere.
Definition: DtSilverliningGroup.h:541
Contains makVrv::DtSilverLiningCloudLayer struct.
bool myHiResCumulus
my atmosphere.
Definition: DtSilverliningGroup.h:504
float myFogThresholdDistance
my atmosphere.
Definition: DtSilverliningGroup.h:514
SilverLining::LocalTime * myLocalTime
my atmosphere.
Definition: DtSilverliningGroup.h:472
float myForcedMoonPhase
my atmosphere.
Definition: DtSilverliningGroup.h:497
float myVisibility
my atmosphere.
Definition: DtSilverliningGroup.h:489
Contains the DtOsgGlobalShaderComponent class.
virtual bool getFailedInit()
Definition: DtSilverliningGroup.h:304
DtSignalConnectionManager myConnections
my atmosphere.
Definition: DtSilverliningGroup.h:533
Definition: vrfObjectManipulationHandlerBaseClass.h:66