VR-Forces Developer's Guide
 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) 2023 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 setShadowsEnabled(bool shadowsEnabled);
111 
113  bool shadowsEnabled() const { return myShadowsEnabled; }
114 
116  void setShadowsEnabledOnOcean(bool shadowsEnabled);
117 
119  bool shadowsEnabledOnOcean() const;
120 
122  void setEntitiesCastsShadows(bool castShadows);
123 
125  bool entitiesCastsShadows() const { return myEntitiesCastsShadows; }
126 
128  void setPropsCastsShadows(bool castShadows);
129 
131  bool propsCastsShadows() const { return myPropsCastsShadows; }
132 
134  void setTerrainCastsShadows(bool castShadows);
135 
137  bool terrainCastsShadows() const { return myTerrainCastsShadows; }
138 
140  void setMoonCastsShadows(bool castShadows);
141 
143  bool moonCastsShadows() const { return myMoonCastsShadows; }
144 
146  void setVisualizeShadows(bool visualizeShadows);
147 
149  bool visualizeShadows() const { return myVisualizeShadows; }
150 
152  void setNumberOfSplits(unsigned int numSplits);
153 
155  unsigned int numberOfSplits() const { return myNumSplits; }
156 
159  void setUseCachedFarCascade(bool useCachedFarCascade);
160 
162  bool useCachedFarCascade() const { return myUseCachedFarCascade; }
163 
165  void setFarCascadeUpdateFrequency(float value) { myFarCascadeUpdateFrequency = value; }
166 
168  float farCascadeUpdateFrequency() const { return myFarCascadeUpdateFrequency; }
169 
171  void setUseFrontFaceCulling(bool useFrontFaceCulling);
172 
174  bool useFrontFaceCulling() const { return myUseFrontFaceCulling; }
175 
177  void setUsePolygonOffset(bool usePolygonOffset);
178 
180  bool usePolygonOffset() const { return myUsePolygonOffset; }
181 
183  void setPolygonOffset(unsigned int splitIndex, float factor, float units);
184 
186  float polygonOffsetFactor(unsigned int splitIndex) const;
187 
189  float polygonOffsetUnits(unsigned int splitIndex) const;
190 
192  void setSpotLightShadowMapSize(unsigned int size);
193 
195  unsigned int spotLightShadowMapSize() const { return mySpotLightShadowMapSize; }
196 
198  void setGlobalLightShadowMapSize(unsigned int size);
199 
201  unsigned int globalLightShadowMapSize() const { return myGlobalLightShadowMapSize; }
202 
204  void setUseMaximumViewDistance(bool useMaximumViewDistance);
205 
207  bool useMaximumViewDistance() const { return myUseMaximumViewDistance; }
208 
210  void setMaximumViewDistance(double viewDistance);
211 
213  double maximumViewDistance() const { return myMaximumViewDistance; }
214 
215 
217  void setShadowAmbientFactor(float shadowAmbientFactor);
218 
220  float shadowAmbientFactor() const { return myShadowAmbientFactor; }
221 
223  void setShadowStabilizationScheme(ShadowStabilizationScheme shadowStabilizationScheme);
224 
226  ShadowStabilizationScheme shadowStabilizationScheme() const { return myShadowStabilizationScheme; }
227 
229  void setSplitDistanceComputeScheme(SplitDistanceComputeScheme splitDistanceComputeScheme);
230 
232  SplitDistanceComputeScheme splitDistanceComputeScheme() const { return mySplitDistanceComputeScheme; }
233 
235  void setMixedSplitInterpolationValue(double interp);
236 
238  double mixedSplitInterpolationValue() const { return myMixedSplitInterp; }
239 
241  void setSplitSelectionScheme(SplitSelectionScheme splitSelectionScheme);
242 
244  SplitSelectionScheme splitSelectionScheme() const { return mySplitSelectionScheme; }
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 setAdjustFarAndFlagsBasedOnHAT(bool enabled) { myAdjustFarAndFlagsBasedOnHAT = enabled; }
296 
298  bool adjustFarAndFlagsBasedOnHAT() const { return myAdjustFarAndFlagsBasedOnHAT; }
299 
301  void setApplyShadowToAmbientLighting(bool applyShadowToAmbient);
302 
304  bool applyShadowToAmbientLighting() const;
305 
306 
308 
310  void setSplitNearDistanceMinimumBias(double bias);
311 
313  double splitNearDistanceMinimumBias() const;
314 
316  void setSplitNearDistanceMaximumBias(double bias);
317 
319  double splitNearDistanceMaximumBias() const;
320 
322  void setSplitFarDistanceBias(double bias);
323 
325  double splitFarDistanceBias() const;
327  void setEVSMPositiveExponent(double evsmPositiveExponent);
328 
330  double evsmPositiveExponent() const { return myEVSMPositiveExponent; }
331 
333  void setEVSMNegativeExponent(double evsmNegativeExponent);
334 
336  double evsmNegativeExponent() const { return myEVSMNegativeExponent; }
337 
339  void setVSMMininumVariance(double vsmMininumVariance);
340 
342  double vsmMininumVariance() const;
343 
345  void setESMDarkeningFactor(double esmDarkeningFactor);
346 
348  double esmDarkeningFactor() const;
349 
351  void setAntiFlickerQuantizationFactor(float antiFlickerQuantizationFactor);
352 
354  float antiFlickerQuantizationFactor() const;
355 
356 
357  protected:
358  friend class boost::serialization::access;
359 
360  template <typename Archive>
361  void serialize(Archive& ar, unsigned int version)
362  {
363  ar& BOOST_SERIALIZATION_NVP(myName);
364  ar& BOOST_SERIALIZATION_NVP(myNumSplits);
365  if (version >= 7)
366  {
367  ar& BOOST_SERIALIZATION_NVP(myShadowsEnabled);
368  }
369  ar& BOOST_SERIALIZATION_NVP(myEntitiesCastsShadows);
370  ar& BOOST_SERIALIZATION_NVP(myPropsCastsShadows);
371  ar& BOOST_SERIALIZATION_NVP(myTerrainCastsShadows);
372  ar& BOOST_SERIALIZATION_NVP(myVisualizeShadows);
373  ar& BOOST_SERIALIZATION_NVP(myPolygonOffsetFactor);
374  ar& BOOST_SERIALIZATION_NVP(myPolygonOffsetUnits);
375  ar& BOOST_SERIALIZATION_NVP(myUsePolygonOffset);
376  ar& BOOST_SERIALIZATION_NVP(mySpotLightShadowMapSize);
377  ar& BOOST_SERIALIZATION_NVP(myGlobalLightShadowMapSize);
378  ar& BOOST_SERIALIZATION_NVP(myMaximumViewDistance);
379  ar& BOOST_SERIALIZATION_NVP(myUseMaximumViewDistance);
380  ar& BOOST_SERIALIZATION_NVP(myUseFrontFaceCulling);
381  ar& BOOST_SERIALIZATION_NVP(mySplitNearDistanceMinimumBias);
382  ar& BOOST_SERIALIZATION_NVP(mySplitNearDistanceMaximumBias);
383  ar& BOOST_SERIALIZATION_NVP(mySplitFarDistanceBias);
384  ar& BOOST_SERIALIZATION_NVP(myShadowAmbientFactor);
385  ar& BOOST_SERIALIZATION_NVP(myShadowStabilizationScheme);
386  ar& BOOST_SERIALIZATION_NVP(myAntiFlickerQuantizationFactor);
387  ar& BOOST_SERIALIZATION_NVP(mySplitDistanceComputeScheme);
388  ar& BOOST_SERIALIZATION_NVP(myMixedSplitInterp);
389  ar& BOOST_SERIALIZATION_NVP(mySplitSelectionScheme);
390  ar& BOOST_SERIALIZATION_NVP(myDataStorageScheme);
391  ar& BOOST_SERIALIZATION_NVP(myPreFilteringScheme);
392  ar& BOOST_SERIALIZATION_NVP(myFilteringScheme);
393  ar& BOOST_SERIALIZATION_NVP(myPoissonDiskSamplingScheme);
394  ar& BOOST_SERIALIZATION_NVP(myNumAdditionalPassesPerCascade);
395  ar& BOOST_SERIALIZATION_NVP(myPcfFilterWidth);
396  ar& BOOST_SERIALIZATION_NVP(myBlendCascadesBoundaries);
397 
398  // These are not used anymore
399  if (version <= 9)
400  {
401  bool myUseSDSM = false;
402  ar& BOOST_SERIALIZATION_NVP(myUseSDSM);
403 
404  bool mySDSMReadBackLatency = false;
405  ar& BOOST_SERIALIZATION_NVP(mySDSMReadBackLatency);
406 
407  bool myUseCameraDepthBufferForSDSM = false;
408  ar& BOOST_SERIALIZATION_NVP(myUseCameraDepthBufferForSDSM);
409  }
410  ar& BOOST_SERIALIZATION_NVP(myEVSMPositiveExponent);
411  ar& BOOST_SERIALIZATION_NVP(myEVSMNegativeExponent);
412  ar& BOOST_SERIALIZATION_NVP(myVSMMininumVariance);
413  ar& BOOST_SERIALIZATION_NVP(myESMDarkeningFactor);
414  ar& BOOST_SERIALIZATION_NVP(myDirty);
415  ar& BOOST_SERIALIZATION_NVP(myNumPersistentPassesPerCascade);
416 
417  if (version >= 2)
418  {
419  // Not used anymore. Only there for backward compatibility
420  bool myCloudsCastsShadows = false;
421  ar& BOOST_SERIALIZATION_NVP(myCloudsCastsShadows);
422  }
423 
424  if (version >= 3)
425  {
426  ar& BOOST_SERIALIZATION_NVP(myUseCachedFarCascade);
427  }
428 
429  if (version >= 4)
430  {
431  ar& BOOST_SERIALIZATION_NVP(myUseViewportMulticast);
432  }
433 
434  if (version >= 5)
435  {
436  ar& BOOST_SERIALIZATION_NVP(myAdjustFarAndFlagsBasedOnHAT);
437  ar& BOOST_SERIALIZATION_NVP(myFarCascadeUpdateFrequency);
438  }
439 
440  if (version >= 6)
441  {
442  ar& BOOST_SERIALIZATION_NVP(myMoonCastsShadows);
443  }
444 
445  if (version >= 8)
446  {
447  ar& BOOST_SERIALIZATION_NVP(myShadowsEnabledOnOcean);
448  }
449 
450  if (version >= 9)
451  {
452  ar& BOOST_SERIALIZATION_NVP(myApplyShadowToAmbientLighting);
453  }
454  }
455 
456 
457  protected:
458 
459  std::string myName;
460  bool myDirty;
461 
463 
465 
467 
469 
471 
473 
474  unsigned int myNumSplits;
475 
476  std::vector<float> myPolygonOffsetFactor;
477 
478  std::vector<float> myPolygonOffsetUnits;
479 
481 
483 
485 
487 
489 
491 
493 
495 
510  unsigned int myPcfFilterWidth;
512 
513  // deprecated
515 
517 
519 
526 
527 
528  };
529 }
530 
SplitDistanceComputeScheme
Definition: DtShadowSettingsRecord.h:39
double mySplitNearDistanceMinimumBias
Definition: DtShadowSettingsRecord.h:496
ShadowStabilizationScheme myShadowStabilizationScheme
Definition: DtShadowSettingsRecord.h:500
unsigned int spotLightShadowMapSize() const
Gets spot light texture atlas size.
Definition: DtShadowSettingsRecord.h:195
double mySplitNearDistanceMaximumBias
Definition: DtShadowSettingsRecord.h:497
DataStorageScheme
Definition: DtShadowSettingsRecord.h:52
bool adjustFarAndFlagsBasedOnHAT() const
Gets if near cascades automatically change size and flags in the air.
Definition: DtShadowSettingsRecord.h:298
bool entitiesCastsShadows() const
Gets entities casts shadow flag.
Definition: DtShadowSettingsRecord.h:125
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
FilteringScheme myFilteringScheme
Definition: DtShadowSettingsRecord.h:506
double myEVSMNegativeExponent
Definition: DtShadowSettingsRecord.h:516
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:168
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:486
FilteringScheme
Definition: DtShadowSettingsRecord.h:68
bool myUseViewportMulticast
Definition: DtShadowSettingsRecord.h:492
double evsmNegativeExponent() const
Gets exponential variance shadow maps(EVSM) negative exponent.
Definition: DtShadowSettingsRecord.h:336
bool useMaximumViewDistance() const
Gets use maximum view distance.
Definition: DtShadowSettingsRecord.h:207
Definition: DtShadowSettingsRecord.h:42
voidpf void uLong size
Definition: ioapi.h:39
bool terrainCastsShadows() const
Gets terrain casts shadow flag.
Definition: DtShadowSettingsRecord.h:137
bool myAdjustFarAndFlagsBasedOnHAT
Definition: DtShadowSettingsRecord.h:494
unsigned int myNumSplits
Definition: DtShadowSettingsRecord.h:474
float myFarCascadeUpdateFrequency
Definition: DtShadowSettingsRecord.h:490
void setFarCascadeUpdateFrequency(float value)
Sets far cascade update frequency.
Definition: DtShadowSettingsRecord.h:165
Contains DLL export macros.
Definition: DtShadowSettingsRecord.h:61
bool myDirty
Definition: DtShadowSettingsRecord.h:460
SplitDistanceComputeScheme splitDistanceComputeScheme() const
Gets split distance compute scheme.
Definition: DtShadowSettingsRecord.h:232
float myShadowAmbientFactor
Definition: DtShadowSettingsRecord.h:499
std::vector< float > myPolygonOffsetUnits
Definition: DtShadowSettingsRecord.h:478
Definition: DtShadowSettingsRecord.h:54
PoissonDiskSamplingScheme poissonDiskSamplingScheme() const
Gets poisson disk sampling scheme.
Definition: DtShadowSettingsRecord.h:262
bool myEntitiesCastsShadows
Definition: DtShadowSettingsRecord.h:466
double maximumViewDistance() const
Get maximum far distance.
Definition: DtShadowSettingsRecord.h:213
unsigned int numAdditionalPassesPerCascade() const
Gets additional number of passes per cascade.
Definition: DtShadowSettingsRecord.h:280
bool myApplyShadowToAmbientLighting
Definition: DtShadowSettingsRecord.h:525
bool usePolygonOffset() const
Gets use polygon offset.
Definition: DtShadowSettingsRecord.h:180
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:131
unsigned int mySpotLightShadowMapSize
Definition: DtShadowSettingsRecord.h:523
double evsmPositiveExponent() const
Gets exponential variance shadow maps(EVSM) positive exponent.
Definition: DtShadowSettingsRecord.h:330
unsigned int myPcfFilterWidth
Definition: DtShadowSettingsRecord.h:510
float shadowAmbientFactor() const
Gets shadow factor for modulating the scene.
Definition: DtShadowSettingsRecord.h:220
bool shadowsEnabled() const
Gets shadows enabled flag.
Definition: DtShadowSettingsRecord.h:113
double myMaximumViewDistance
Definition: DtShadowSettingsRecord.h:482
DataStorageScheme myDataStorageScheme
Definition: DtShadowSettingsRecord.h:504
unsigned int numPersistentPassesPerCascade() const
Gets number of persistent passes per cascade.
Definition: DtShadowSettingsRecord.h:274
double myVSMMininumVariance
Definition: DtShadowSettingsRecord.h:518
void setAdjustFarAndFlagsBasedOnHAT(bool enabled)
Sets to make the near cascades automatically change size and flags in the air.
Definition: DtShadowSettingsRecord.h:295
bool myUseMaximumViewDistance
Definition: DtShadowSettingsRecord.h:484
unsigned int pcfFilterWidth() const
Gets PCF filter width.
Definition: DtShadowSettingsRecord.h:286
ShadowStabilizationScheme
Definition: DtShadowSettingsRecord.h:32
bool myVisualizeShadows
Definition: DtShadowSettingsRecord.h:521
void serialize(Archive &ar, unsigned int version)
Definition: DtShadowSettingsRecord.h:361
PreFilteringScheme preFilteringScheme() const
Gets pre-filtering scheme.
Definition: DtShadowSettingsRecord.h:250
SplitDistanceComputeScheme mySplitDistanceComputeScheme
Definition: DtShadowSettingsRecord.h:501
double myESMDarkeningFactor
Definition: DtShadowSettingsRecord.h:520
double myMixedSplitInterp
Definition: DtShadowSettingsRecord.h:502
SplitSelectionScheme mySplitSelectionScheme
Definition: DtShadowSettingsRecord.h:503
bool myTerrainCastsShadows
Definition: DtShadowSettingsRecord.h:470
PreFilteringScheme myPreFilteringScheme
Definition: DtShadowSettingsRecord.h:505
Definition: DtShadowSettingsRecord.h:48
unsigned int myNumPersistentPassesPerCascade
Definition: DtShadowSettingsRecord.h:508
PoissonDiskSamplingScheme
Definition: DtShadowSettingsRecord.h:78
Definition: DtShadowSettingsRecord.h:41
float myAntiFlickerQuantizationFactor
Definition: DtShadowSettingsRecord.h:522
unsigned int globalLightShadowMapSize() const
Gets global light texture size for cascaded shadow mapping.
Definition: DtShadowSettingsRecord.h:201
FilteringScheme filteringScheme() const
Gets filtering scheme.
Definition: DtShadowSettingsRecord.h:256
bool myBlendCascadesBoundaries
Definition: DtShadowSettingsRecord.h:511
double mySplitFarDistanceBias
Definition: DtShadowSettingsRecord.h:498
Definition: DtShadowSettingsRecord.h:34
PoissonDiskSamplingScheme myPoissonDiskSamplingScheme
Definition: DtShadowSettingsRecord.h:507
bool myUseCachedFarCascade
Definition: DtShadowSettingsRecord.h:488
Definition: DtShadowSettingsRecord.h:81
unsigned int myNumAdditionalPassesPerCascade
Definition: DtShadowSettingsRecord.h:509
bool myShadowsEnabledOnOcean
Definition: DtShadowSettingsRecord.h:464
bool visualizeShadows() const
Gets shadow visualization mode.
Definition: DtShadowSettingsRecord.h:149
bool myMoonCastsShadows
Definition: DtShadowSettingsRecord.h:472
bool useCachedFarCascade() const
Gets use cached far cascade.
Definition: DtShadowSettingsRecord.h:162
SplitSelectionScheme splitSelectionScheme() const
Gets split selection scheme.
Definition: DtShadowSettingsRecord.h:244
unsigned int numberOfSplits() const
Gets shadow visualization mode.
Definition: DtShadowSettingsRecord.h:155
Definition: DtShadowSettingsRecord.h:80
double mixedSplitInterpolationValue() const
Gets mixed logarithmic uniform split interpolation value.
Definition: DtShadowSettingsRecord.h:238
bool myUsePolygonOffset
Definition: DtShadowSettingsRecord.h:524
std::vector< float > myPolygonOffsetFactor
Definition: DtShadowSettingsRecord.h:476
std::string myName
Definition: DtShadowSettingsRecord.h:459
ShadowStabilizationScheme shadowStabilizationScheme() const
Gets shadow stabilization scheme.
Definition: DtShadowSettingsRecord.h:226
bool moonCastsShadows() const
Gets terrain casts shadow flag.
Definition: DtShadowSettingsRecord.h:143
bool dirty() const
Checks if any setting just changed.
Definition: DtShadowSettingsRecord.h:107
bool myPropsCastsShadows
Definition: DtShadowSettingsRecord.h:468
bool myShadowsEnabled
Definition: DtShadowSettingsRecord.h:462
double myEVSMPositiveExponent
Definition: DtShadowSettingsRecord.h:514
#define DT_DLL_MAKARCHIVES
Definition: makArchives.h:31
const std::string & name() const
Returns setting name.
Definition: DtShadowSettingsRecord.h:101
unsigned int myGlobalLightShadowMapSize
Definition: DtShadowSettingsRecord.h:480
bool useFrontFaceCulling() const
Gets use front face culling.
Definition: DtShadowSettingsRecord.h:174
PreFilteringScheme
Definition: DtShadowSettingsRecord.h:59

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)