VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtShadowSettingsRecord.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
15 
16 #include <string>
17 #include <map>
18 #include <vector>
19 
20 
21 
22 namespace makArchives
23 {
24 
30  {
31  public:
33  {
37  };
38 
40  {
43  MIXED_LOGARITHMIC_UNIFORM_SPLIT
44  };
45 
47  {
49  LIGHT_SPACE
50  };
51 
53  {
56  TEXTURE_2D_ARRAY_STORAGE
57  };
58 
60  {
64  VARIANCE_SHADOW_MAPS
65  };
66 
67 
69  {
75  PCF_POISSON_DISC_32_TAPS
76  };
77 
79  {
82  ROTATED_SAMPLING
83  };
84 
87 
90 
93 
95  DtShadowSettingsRecord& operator=(const DtShadowSettingsRecord& orig);
96 
98  void setName(const std::string& name);
99 
101  const std::string& name() const { return myName; }
102 
104  void setDirty(bool dirty);
105 
107  bool dirty() const { return myDirty; }
108 
110  void setEntitiesCastsShadows(bool castShadows);
111 
113  bool entitiesCastsShadows() const { return myEntitiesCastsShadows; }
114 
116  void setPropsCastsShadows(bool castShadows);
117 
119  bool propsCastsShadows() const { return myPropsCastsShadows; }
120 
122  void setTerrainCastsShadows(bool castShadows);
123 
125  bool terrainCastsShadows() const { return myTerrainCastsShadows; }
126 
128  void setMoonCastsShadows(bool castShadows);
129 
131  bool moonCastsShadows() const { return myMoonCastsShadows; }
132 
134  void setCloudsCastsShadows(bool castShadows);
135 
137  bool cloudsCastsShadows() const { return myCloudsCastsShadows; }
138 
140  void setVisualizeShadows(bool visualizeShadows);
141 
143  bool visualizeShadows() const { return myVisualizeShadows; }
144 
146  void setNumberOfSplits(unsigned int numSplits);
147 
149  unsigned int numberOfSplits() const { return myNumSplits; }
150 
153  void setUseCachedFarCascade(bool useCachedFarCascade);
154 
156  bool useCachedFarCascade() const { return myUseCachedFarCascade; }
157 
159  void setFarCascadeUpdateFrequency(float value) { myFarCascadeUpdateFrequency = value; }
160 
162  float farCascadeUpdateFrequency() const {return myFarCascadeUpdateFrequency; }
163 
165  void setUseFrontFaceCulling(bool useFrontFaceCulling);
166 
168  bool useFrontFaceCulling() const { return myUseFrontFaceCulling; }
169 
171  void setUsePolygonOffset(bool usePolygonOffset);
172 
174  bool usePolygonOffset() const { return myUsePolygonOffset; }
175 
177  void setPolygonOffset(unsigned int splitIndex, float factor, float units);
178 
180  float polygonOffsetFactor(unsigned int splitIndex) const;
181 
183  float polygonOffsetUnits(unsigned int splitIndex) const;
184 
186  void setSpotLightShadowMapSize(unsigned int size);
187 
189  unsigned int spotLightShadowMapSize() const { return mySpotLightShadowMapSize; }
190 
192  void setGlobalLightShadowMapSize(unsigned int size);
193 
195  unsigned int globalLightShadowMapSize() const { return myGlobalLightShadowMapSize; }
196 
198  void setUseMaximumViewDistance(bool useMaximumViewDistance);
199 
201  bool useMaximumViewDistance() const { return myUseMaximumViewDistance; }
202 
204  void setMaximumViewDistance(double viewDistance);
205 
207  double maximumViewDistance() const { return myMaximumViewDistance; }
208 
209 
211  void setShadowAmbientFactor(float shadowAmbientFactor);
212 
214  float shadowAmbientFactor() const { return myShadowAmbientFactor; }
215 
217  void setShadowStabilizationScheme(ShadowStabilizationScheme shadowStabilizationScheme);
218 
220  ShadowStabilizationScheme shadowStabilizationScheme() const { return myShadowStabilizationScheme; }
221 
223  void setSplitDistanceComputeScheme(SplitDistanceComputeScheme splitDistanceComputeScheme);
224 
226  SplitDistanceComputeScheme splitDistanceComputeScheme() const { return mySplitDistanceComputeScheme; }
227 
229  void setMixedSplitInterpolationValue(double interp);
230 
232  double mixedSplitInterpolationValue() const { return myMixedSplitInterp; }
233 
235  void setSplitSelectionScheme(SplitSelectionScheme splitSelectionScheme);
236 
238  SplitSelectionScheme splitSelectionScheme() const { return mySplitSelectionScheme; }
239 
241  void setDataStorageScheme(DataStorageScheme dataStorageScheme);
242 
244  DataStorageScheme dataStorageScheme() const { return myDataStorageScheme; }
245 
247  void setPreFilteringScheme(PreFilteringScheme preFilteringScheme);
248 
250  PreFilteringScheme preFilteringScheme() const { return myPreFilteringScheme; }
251 
253  void setFilteringScheme(FilteringScheme filteringScheme);
254 
256  FilteringScheme filteringScheme() const { return myFilteringScheme; }
257 
259  void setPoissonDiskSamplingScheme(PoissonDiskSamplingScheme poissonDiskSamplingScheme);
260 
262  PoissonDiskSamplingScheme poissonDiskSamplingScheme() const { return myPoissonDiskSamplingScheme; }
263 
265  void setUseViewportMulticast(bool useViewportMulticast);
266 
268  bool useViewportMulticast() const { return myUseViewportMulticast; }
269 
271  void setNumPersistentPassesPerCascade(unsigned int numPasses);
272 
274  unsigned int numPersistentPassesPerCascade() const { return myNumPersistentPassesPerCascade; }
275 
277  void setNumAdditionalPassesPerCascade(unsigned int numPasses);
278 
280  unsigned int numAdditionalPassesPerCascade() const { return myNumAdditionalPassesPerCascade; }
281 
283  void setPcfFilterWidth(unsigned int pcfFilterWidth);
284 
286  unsigned int pcfFilterWidth() const { return myPcfFilterWidth; }
287 
289  void setBlendCascadesBoundaries(bool blendCascadesBoundaries);
290 
292  bool blendCascadesBoundaries() const { return myBlendCascadesBoundaries; }
293 
295  void setUseSDSM(bool useSDSM);
296 
298  bool useSDSM() const { return myUseSDSM; }
299 
301  void setSDSMReadBackLatency(unsigned int sdsmReadBackLatency);
302 
304  unsigned int sdsmReadBackLatency() const { return mySDSMReadBackLatency; }
305 
307  void setUseCameraDepthBufferForSDSM(bool useCameraDepthBufferForSDSM);
308 
310  bool useCameraDepthBufferForSDSM() const { return myUseCameraDepthBufferForSDSM; }
311 
313  void setAdjustFarAndFlagsBasedOnHAT(bool enabled) { myAdjustFarAndFlagsBasedOnHAT = enabled; }
314 
316  bool adjustFarAndFlagsBasedOnHAT() const { return myAdjustFarAndFlagsBasedOnHAT; }
317 
318 
320 
322  void setSplitNearDistanceMinimumBias(double bias);
323 
325  double splitNearDistanceMinimumBias() const;
326 
328  void setSplitNearDistanceMaximumBias(double bias);
329 
331  double splitNearDistanceMaximumBias() const;
332 
334  void setSplitFarDistanceBias(double bias);
335 
337  double splitFarDistanceBias() const;
339  void setEVSMPositiveExponent(double evsmPositiveExponent);
340 
342  double evsmPositiveExponent() const { return myEVSMPositiveExponent; }
343 
345  void setEVSMNegativeExponent(double evsmNegativeExponent);
346 
348  double evsmNegativeExponent() const { return myEVSMNegativeExponent; }
349 
351  void setVSMMininumVariance(double vsmMininumVariance);
352 
354  double vsmMininumVariance() const;
355 
357  void setESMDarkeningFactor(double esmDarkeningFactor);
358 
360  double esmDarkeningFactor() const;
361 
363  void setAntiFlickerQuantizationFactor(float antiFlickerQuantizationFactor);
364 
366  float antiFlickerQuantizationFactor() const;
367 
368 
369  protected:
370  friend class boost::serialization::access;
371 
372  template <typename Archive>
373  void serialize(Archive& ar, unsigned int version)
374  {
375  ar & BOOST_SERIALIZATION_NVP(myName);
376  ar & BOOST_SERIALIZATION_NVP(myNumSplits);
377  ar & BOOST_SERIALIZATION_NVP(myEntitiesCastsShadows);
378  ar & BOOST_SERIALIZATION_NVP(myPropsCastsShadows);
379  ar & BOOST_SERIALIZATION_NVP(myTerrainCastsShadows);
380  ar & BOOST_SERIALIZATION_NVP(myVisualizeShadows);
381  ar & BOOST_SERIALIZATION_NVP(myPolygonOffsetFactor);
382  ar & BOOST_SERIALIZATION_NVP(myPolygonOffsetUnits);
383  ar & BOOST_SERIALIZATION_NVP(myUsePolygonOffset);
384  ar & BOOST_SERIALIZATION_NVP(mySpotLightShadowMapSize);
385  ar & BOOST_SERIALIZATION_NVP(myGlobalLightShadowMapSize);
386  ar & BOOST_SERIALIZATION_NVP(myMaximumViewDistance);
387  ar & BOOST_SERIALIZATION_NVP(myUseMaximumViewDistance);
388  ar & BOOST_SERIALIZATION_NVP(myUseFrontFaceCulling);
389  ar & BOOST_SERIALIZATION_NVP(mySplitNearDistanceMinimumBias);
390  ar & BOOST_SERIALIZATION_NVP(mySplitNearDistanceMaximumBias);
391  ar & BOOST_SERIALIZATION_NVP(mySplitFarDistanceBias);
392  ar & BOOST_SERIALIZATION_NVP(myShadowAmbientFactor);
393  ar & BOOST_SERIALIZATION_NVP(myShadowStabilizationScheme);
394  ar & BOOST_SERIALIZATION_NVP(myAntiFlickerQuantizationFactor);
395  ar & BOOST_SERIALIZATION_NVP(mySplitDistanceComputeScheme);
396  ar & BOOST_SERIALIZATION_NVP(myMixedSplitInterp);
397  ar & BOOST_SERIALIZATION_NVP(mySplitSelectionScheme);
398  ar & BOOST_SERIALIZATION_NVP(myDataStorageScheme);
399  ar & BOOST_SERIALIZATION_NVP(myPreFilteringScheme);
400  ar & BOOST_SERIALIZATION_NVP(myFilteringScheme);
401  ar & BOOST_SERIALIZATION_NVP(myPoissonDiskSamplingScheme);
402  ar & BOOST_SERIALIZATION_NVP(myNumAdditionalPassesPerCascade);
403  ar & BOOST_SERIALIZATION_NVP(myPcfFilterWidth);
404  ar & BOOST_SERIALIZATION_NVP(myBlendCascadesBoundaries);
405  ar & BOOST_SERIALIZATION_NVP(myUseSDSM);
406  ar & BOOST_SERIALIZATION_NVP(mySDSMReadBackLatency);
407  ar & BOOST_SERIALIZATION_NVP(myUseCameraDepthBufferForSDSM);
408  ar & BOOST_SERIALIZATION_NVP(myEVSMPositiveExponent);
409  ar & BOOST_SERIALIZATION_NVP(myEVSMNegativeExponent);
410  ar & BOOST_SERIALIZATION_NVP(myVSMMininumVariance);
411  ar & BOOST_SERIALIZATION_NVP(myESMDarkeningFactor);
412  ar & BOOST_SERIALIZATION_NVP(myDirty);
413  ar & BOOST_SERIALIZATION_NVP(myNumPersistentPassesPerCascade);
414 
415  if (version >= 2)
416  {
417  ar & BOOST_SERIALIZATION_NVP(myCloudsCastsShadows);
418  }
419 
420  if (version >= 3)
421  {
422  ar & BOOST_SERIALIZATION_NVP(myUseCachedFarCascade);
423  }
424 
425  if (version >= 4)
426  {
427  ar & BOOST_SERIALIZATION_NVP(myUseViewportMulticast);
428  }
429 
430  if (version >= 5)
431  {
432  ar & BOOST_SERIALIZATION_NVP(myAdjustFarAndFlagsBasedOnHAT);
433  ar & BOOST_SERIALIZATION_NVP(myFarCascadeUpdateFrequency);
434  }
435 
436  if (version >= 6)
437  {
438  ar & BOOST_SERIALIZATION_NVP(myMoonCastsShadows);
439  }
440  }
441 
442 
443  protected:
444 
445  std::string myName;
446  bool myDirty;
447 
449 
451 
453 
455 
457 
458  unsigned int myNumSplits;
459 
460  std::vector<float> myPolygonOffsetFactor;
461 
462  std::vector<float> myPolygonOffsetUnits;
463 
465 
467 
469 
471 
473 
475 
477 
479 
494  unsigned int myPcfFilterWidth;
496  bool myUseSDSM;
497  unsigned int mySDSMReadBackLatency;
499 
500  // deprecated
502 
504 
506 
512 
513 
514  };
515 }
516 
SplitDistanceComputeScheme
Definition: DtShadowSettingsRecord.h:39
double mySplitNearDistanceMinimumBias
Definition: DtShadowSettingsRecord.h:480
ShadowStabilizationScheme myShadowStabilizationScheme
Definition: DtShadowSettingsRecord.h:484
unsigned int spotLightShadowMapSize() const
Gets spot light texture atlas size.
Definition: DtShadowSettingsRecord.h:189
bool myCloudsCastsShadows
Definition: DtShadowSettingsRecord.h:456
double mySplitNearDistanceMaximumBias
Definition: DtShadowSettingsRecord.h:481
DataStorageScheme
Definition: DtShadowSettingsRecord.h:52
bool adjustFarAndFlagsBasedOnHAT() const
Gets if near cascades automatically change size and flags in the air.
Definition: DtShadowSettingsRecord.h:316
bool entitiesCastsShadows() const
Gets entities casts shadow flag.
Definition: DtShadowSettingsRecord.h:113
FilteringScheme myFilteringScheme
Definition: DtShadowSettingsRecord.h:490
double myEVSMNegativeExponent
Definition: DtShadowSettingsRecord.h:503
Definition: DtShadowSettingsRecord.h:35
bool useViewportMulticast() const
Gets use viewport multicast.
Definition: DtShadowSettingsRecord.h:268
float farCascadeUpdateFrequency() const
Gets far cascade update frequency.
Definition: DtShadowSettingsRecord.h:162
DtShadowSettingsRecord is the serializable record used to read and write a Shadow Setting&#39;s Configura...
Definition: DtShadowSettingsRecord.h:29
bool myUseFrontFaceCulling
Definition: DtShadowSettingsRecord.h:470
FilteringScheme
Definition: DtShadowSettingsRecord.h:68
bool myUseViewportMulticast
Definition: DtShadowSettingsRecord.h:476
double evsmNegativeExponent() const
Gets exponential variance shadow maps(EVSM) negative exponent.
Definition: DtShadowSettingsRecord.h:348
bool useMaximumViewDistance() const
Gets use maximum view distance.
Definition: DtShadowSettingsRecord.h:201
Definition: DtShadowSettingsRecord.h:42
voidpf void uLong size
Definition: ioapi.h:39
bool terrainCastsShadows() const
Gets terrain casts shadow flag.
Definition: DtShadowSettingsRecord.h:125
bool myAdjustFarAndFlagsBasedOnHAT
Definition: DtShadowSettingsRecord.h:478
unsigned int myNumSplits
Definition: DtShadowSettingsRecord.h:458
float myFarCascadeUpdateFrequency
Definition: DtShadowSettingsRecord.h:474
void setFarCascadeUpdateFrequency(float value)
Sets far cascade update frequency.
Definition: DtShadowSettingsRecord.h:159
Contains DLL export macros.
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 2)
Definition: DtShadowSettingsRecord.h:61
bool useSDSM() const
Gets Sample Distribution Shadow Maps(SDSM) enabled or disabled state.
Definition: DtShadowSettingsRecord.h:298
bool myDirty
Definition: DtShadowSettingsRecord.h:446
SplitDistanceComputeScheme splitDistanceComputeScheme() const
Gets split distance compute scheme.
Definition: DtShadowSettingsRecord.h:226
float myShadowAmbientFactor
Definition: DtShadowSettingsRecord.h:483
std::vector< float > myPolygonOffsetUnits
Definition: DtShadowSettingsRecord.h:462
Definition: DtShadowSettingsRecord.h:54
PoissonDiskSamplingScheme poissonDiskSamplingScheme() const
Gets poisson disk sampling scheme.
Definition: DtShadowSettingsRecord.h:262
bool myEntitiesCastsShadows
Definition: DtShadowSettingsRecord.h:448
double maximumViewDistance() const
Get maximum far distance.
Definition: DtShadowSettingsRecord.h:207
unsigned int numAdditionalPassesPerCascade() const
Gets additional number of passes per cascade.
Definition: DtShadowSettingsRecord.h:280
bool usePolygonOffset() const
Gets use polygon offset.
Definition: DtShadowSettingsRecord.h:174
bool blendCascadesBoundaries() const
Gets blend between cascade boundaries.
Definition: DtShadowSettingsRecord.h:292
Definition: DtShadowSettingsRecord.h:70
SplitSelectionScheme
Definition: DtShadowSettingsRecord.h:46
bool propsCastsShadows() const
Gets props casts shadow flag.
Definition: DtShadowSettingsRecord.h:119
unsigned int mySpotLightShadowMapSize
Definition: DtShadowSettingsRecord.h:510
double evsmPositiveExponent() const
Gets exponential variance shadow maps(EVSM) positive exponent.
Definition: DtShadowSettingsRecord.h:342
unsigned int myPcfFilterWidth
Definition: DtShadowSettingsRecord.h:494
float shadowAmbientFactor() const
Gets shadow factor for modulating the scene.
Definition: DtShadowSettingsRecord.h:214
double myMaximumViewDistance
Definition: DtShadowSettingsRecord.h:466
DataStorageScheme myDataStorageScheme
Definition: DtShadowSettingsRecord.h:488
unsigned int numPersistentPassesPerCascade() const
Gets number of persistent passes per cascade.
Definition: DtShadowSettingsRecord.h:274
double myVSMMininumVariance
Definition: DtShadowSettingsRecord.h:505
void setAdjustFarAndFlagsBasedOnHAT(bool enabled)
Sets to make the near cascades automatically change size and flags in the air.
Definition: DtShadowSettingsRecord.h:313
bool myUseMaximumViewDistance
Definition: DtShadowSettingsRecord.h:468
bool myUseCameraDepthBufferForSDSM
Definition: DtShadowSettingsRecord.h:498
unsigned int pcfFilterWidth() const
Gets PCF filter width.
Definition: DtShadowSettingsRecord.h:286
ShadowStabilizationScheme
Definition: DtShadowSettingsRecord.h:32
bool myVisualizeShadows
Definition: DtShadowSettingsRecord.h:508
void serialize(Archive &ar, unsigned int version)
Definition: DtShadowSettingsRecord.h:373
PreFilteringScheme preFilteringScheme() const
Gets pre-filtering scheme.
Definition: DtShadowSettingsRecord.h:250
bool myUseSDSM
Definition: DtShadowSettingsRecord.h:496
SplitDistanceComputeScheme mySplitDistanceComputeScheme
Definition: DtShadowSettingsRecord.h:485
bool useCameraDepthBufferForSDSM() const
Gets the setting for the usage of the most recent camera depth buffer for Sample Distribution Shadow ...
Definition: DtShadowSettingsRecord.h:310
double myESMDarkeningFactor
Definition: DtShadowSettingsRecord.h:507
double myMixedSplitInterp
Definition: DtShadowSettingsRecord.h:486
SplitSelectionScheme mySplitSelectionScheme
Definition: DtShadowSettingsRecord.h:487
bool myTerrainCastsShadows
Definition: DtShadowSettingsRecord.h:452
PreFilteringScheme myPreFilteringScheme
Definition: DtShadowSettingsRecord.h:489
Definition: DtShadowSettingsRecord.h:48
unsigned int myNumPersistentPassesPerCascade
Definition: DtShadowSettingsRecord.h:492
PoissonDiskSamplingScheme
Definition: DtShadowSettingsRecord.h:78
Definition: DtShadowSettingsRecord.h:41
float myAntiFlickerQuantizationFactor
Definition: DtShadowSettingsRecord.h:509
unsigned int globalLightShadowMapSize() const
Gets global light texture size for cascaded shadow mapping.
Definition: DtShadowSettingsRecord.h:195
FilteringScheme filteringScheme() const
Gets filtering scheme.
Definition: DtShadowSettingsRecord.h:256
bool myBlendCascadesBoundaries
Definition: DtShadowSettingsRecord.h:495
double mySplitFarDistanceBias
Definition: DtShadowSettingsRecord.h:482
Definition: DtShadowSettingsRecord.h:34
PoissonDiskSamplingScheme myPoissonDiskSamplingScheme
Definition: DtShadowSettingsRecord.h:491
bool myUseCachedFarCascade
Definition: DtShadowSettingsRecord.h:472
Definition: DtShadowSettingsRecord.h:81
unsigned int myNumAdditionalPassesPerCascade
Definition: DtShadowSettingsRecord.h:493
DataStorageScheme dataStorageScheme() const
Gets data storage scheme.
Definition: DtShadowSettingsRecord.h:244
bool visualizeShadows() const
Gets shadow visualization mode.
Definition: DtShadowSettingsRecord.h:143
bool myMoonCastsShadows
Definition: DtShadowSettingsRecord.h:454
bool useCachedFarCascade() const
Gets use cached far cascade.
Definition: DtShadowSettingsRecord.h:156
SplitSelectionScheme splitSelectionScheme() const
Gets split selection scheme.
Definition: DtShadowSettingsRecord.h:238
unsigned int numberOfSplits() const
Gets shadow visualization mode.
Definition: DtShadowSettingsRecord.h:149
Definition: DtShadowSettingsRecord.h:80
double mixedSplitInterpolationValue() const
Gets mixed logarithmic uniform split interpolation value.
Definition: DtShadowSettingsRecord.h:232
bool myUsePolygonOffset
Definition: DtShadowSettingsRecord.h:511
std::vector< float > myPolygonOffsetFactor
Definition: DtShadowSettingsRecord.h:460
std::string myName
Definition: DtShadowSettingsRecord.h:445
unsigned int sdsmReadBackLatency() const
Gets Sample Distribution Shadow Maps(SDSM) read back latency.
Definition: DtShadowSettingsRecord.h:304
ShadowStabilizationScheme shadowStabilizationScheme() const
Gets shadow stabilization scheme.
Definition: DtShadowSettingsRecord.h:220
bool moonCastsShadows() const
Gets terrain casts shadow flag.
Definition: DtShadowSettingsRecord.h:131
bool dirty() const
Checks if any setting just changed.
Definition: DtShadowSettingsRecord.h:107
bool myPropsCastsShadows
Definition: DtShadowSettingsRecord.h:450
double myEVSMPositiveExponent
Definition: DtShadowSettingsRecord.h:501
#define DT_DLL_MAKARCHIVES
Definition: makArchives.h:31
bool cloudsCastsShadows() const
Gets cloud casts shadow flag.
Definition: DtShadowSettingsRecord.h:137
const std::string & name() const
Returns setting name.
Definition: DtShadowSettingsRecord.h:101
unsigned int myGlobalLightShadowMapSize
Definition: DtShadowSettingsRecord.h:464
bool useFrontFaceCulling() const
Gets use front face culling.
Definition: DtShadowSettingsRecord.h:168
PreFilteringScheme
Definition: DtShadowSettingsRecord.h:59
unsigned int mySDSMReadBackLatency
Definition: DtShadowSettingsRecord.h:497

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)