VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtShadowSettingsManager.h
Go to the documentation of this file.
1 /*****************************************************************************
2 * Copyright (c) 2014 MAK Technologies, Inc.
3 * All rights reserved.
4 *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtShadowSettingsObjectAgent.hpp>
17 #include <string>
18 #include <map>
19 
20 namespace makVrv
21 {
22  class DtShadowSettingsManager;
23 
25  : public DtRecordSettingsBackup< DtBaseSettingsManager<makArchives::DtShadowSettingsCollectionRecord>,
26  makArchives::DtShadowSettingsCollectionRecord >
27  {
28  public:
29 
31  const std::string& name, const std::string& displayName );
32 
34 
35  virtual void restoreSelected( const DtSettingsBackup* );
36 
37  virtual int currentSelectedShadowSettings() const;
38  virtual void setCurrentSelectedShadowSettings( int quality );
39 
40  protected:
42  };
43 
44  class DtDe;
46 
52  : public DtBaseSettingsManager<makArchives::DtShadowSettingsCollectionRecord>
53  {
54  public:
55 
57  static DtShadowSettingsManager& instance( DtDe& de );
58 
60  virtual ~DtShadowSettingsManager();
61 
63  virtual void createShadowSettings();
64 
67  int lookupShadowQuality( std::string stringKey ) const;
68 
70  const std::string* findShadowQualityStringKey( int quality ) const;
71 
73  void setName( int quality, const std::string& name);
74 
76  std::string name( int quality ) const;
77 
79  void setEntitiesCastsShadows( int quality, bool castShadows);
80 
82  bool entitiesCastsShadows( int quality ) const;
83 
85  bool entitiesCastsShadows() const;
86 
88  void setPropsCastsShadows( int quality, bool castShadows);
89 
91  bool propsCastsShadows( int quality ) const;
92 
94  bool propsCastsShadows() const;
95 
97  void setTerrainCastsShadows( int quality, bool castShadows);
98 
100  bool terrainCastsShadows( int quality ) const;
101 
103  bool terrainCastsShadows() const;
104 
106  void setCloudsCastsShadows( int quality, bool castShadows);
107 
109  bool cloudsCastsShadows( int quality ) const;
110 
112  bool cloudsCastsShadows() const;
113 
115  void setVisualizeShadows( int quality, bool visualizeShadows);
116 
118  bool visualizeShadows( int quality ) const;
119 
121  bool visualizeShadows() const;
122 
124  void setNumberOfSplits( int quality, unsigned int numSplits);
125 
127  unsigned int numberOfSplits( int quality ) const;
128 
130  unsigned int numberOfSplits() const;
131 
133  void setUseFrontFaceCulling( int quality, bool useFrontFaceCulling);
134 
136  bool useFrontFaceCulling( int quality ) const;
137 
139  bool useFrontFaceCulling() const;
140 
142  void setUsePolygonOffset( int quality, bool usePolygonOffset);
143 
145  bool usePolygonOffset( int quality ) const;
146 
148  bool usePolygonOffset() const;
149 
151  void setPolygonOffset( int quality, unsigned int splitIndex, float factor, float units );
152 
154  float polygonOffsetFactor( int quality, unsigned int splitIndex ) const;
155 
157  float polygonOffsetFactor( unsigned int splitIndex ) const;
158 
160  float polygonOffsetUnits( int quality, unsigned int splitIndex ) const;
161 
163  float polygonOffsetUnits( unsigned int splitIndex ) const;
164 
166  void setSpotLightShadowMapSize( int quality, unsigned int size );
167 
169  unsigned int spotLightShadowMapSize( int quality ) const;
170 
172  unsigned int spotLightShadowMapSize() const;
173 
175  void setGlobalLightShadowMapSize( int quality, unsigned int size);
176 
178  unsigned int globalLightShadowMapSize() const;
179 
181  unsigned int globalLightShadowMapSize( int quality ) const;
182 
184  void setUseMaximumViewDistance( int quality, bool useMaximumViewDistance);
185 
187  bool useMaximumViewDistance( int quality ) const;
188 
190  bool useMaximumViewDistance() const;
191 
193  void setMaximumViewDistance( int quality, double viewDistance);
194 
196  double maximumViewDistance( int quality ) const;
197 
199  double maximumViewDistance() const;
200 
202  void setSplitNearDistanceMinimumBias( int quality, double bias);
203 
205  double splitNearDistanceMinimumBias( int quality ) const;
206 
208  double splitNearDistanceMinimumBias() const;
209 
211  void setSplitNearDistanceMaximumBias( int quality, double bias);
212 
214  double splitNearDistanceMaximumBias( int quality ) const;
215 
217  double splitNearDistanceMaximumBias() const;
218 
220  void setSplitFarDistanceBias( int quality, double bias);
221 
223  double splitFarDistanceBias( int quality ) const;
224 
226  double splitFarDistanceBias() const;
227 
229  void setShadowAmbientFactor( int quality, float shadowAmbientFactor );
230 
232  float shadowAmbientFactor( int quality ) const;
233 
235  float shadowAmbientFactor() const;
236 
238  {
241  NO_ANTI_FLICKERING
242  };
243 
245  void setShadowStabilizationScheme( int quality, ShadowStabilizationScheme shadowStabilizationScheme);
246 
248  ShadowStabilizationScheme shadowStabilizationScheme( int quality ) const;
249 
251  ShadowStabilizationScheme shadowStabilizationScheme() const;
252 
254  void setAntiFlickerQuantizationFactor( int quality, float antiFlickerQuantizationFactor);
255 
257  float antiFlickerQuantizationFactor( int quality ) const;
258 
260  float antiFlickerQuantizationFactor() const;
261 
263  {
266  MIXED_LOGARITHMIC_UNIFORM_SPLIT
267  };
268 
270  void setSplitDistanceComputeScheme( int quality, SplitDistanceComputeScheme splitDistanceComputeScheme);
271 
273  SplitDistanceComputeScheme splitDistanceComputeScheme( int quality ) const;
274 
276  SplitDistanceComputeScheme splitDistanceComputeScheme() const;
277 
279  void setMixedSplitInterpolationValue( int quality, double interp);
280 
282  double mixedSplitInterpolationValue( int quality ) const;
283 
285  double mixedSplitInterpolationValue() const;
286 
288  {
290  LIGHT_SPACE
291  };
292 
294  void setSplitSelectionScheme( int quality, SplitSelectionScheme splitSelectionScheme);
295 
297  SplitSelectionScheme splitSelectionScheme( int quality ) const;
298 
300  SplitSelectionScheme splitSelectionScheme() const;
301 
303  {
306  TEXTURE_2D_ARRAY_STORAGE
307  };
308 
310  void setDataStorageScheme( int quality, DataStorageScheme dataStorageScheme);
311 
313  DataStorageScheme dataStorageScheme( int quality ) const;
314 
316  DataStorageScheme dataStorageScheme() const;
317 
319  {
323  NO_PRE_FILTERING
324  };
325 
327  void setPreFilteringScheme( int quality, PreFilteringScheme preFilteringScheme);
328 
330  PreFilteringScheme preFilteringScheme( int quality ) const;
331 
333  PreFilteringScheme preFilteringScheme() const;
334 
336  {
346  NO_FILTERING
347  };
348 
350  void setFilteringScheme( int quality, FilteringScheme filteringScheme);
351 
353  FilteringScheme filteringScheme( int quality ) const;
354 
356  FilteringScheme filteringScheme() const;
357 
359  {
362  ROTATED_SAMPLING
363  };
364 
366  void setPoissonDiskSamplingScheme( int quality, PoissonDiskSamplingScheme poissonDiskSamplingScheme);
367 
369  PoissonDiskSamplingScheme poissonDiskSamplingScheme( int quality ) const;
370 
372  PoissonDiskSamplingScheme poissonDiskSamplingScheme() const;
373 
375  void setNumPersistentPassesPerCascade(int quality, unsigned int numPasses);
376 
378  unsigned int numPersistentPassesPerCascade(int quality) const;
379 
381  unsigned int numPersistentPassesPerCascade() const;
382 
384  void setNumAdditionalPassesPerCascade(int quality, unsigned int numPasses);
385 
387  unsigned int numAdditionalPassesPerCascade(int quality) const;
388 
390  unsigned int numAdditionalPassesPerCascade() const;
391 
393  void setPcfFilterWidth(int quality, unsigned int pcfFilterWidth);
394 
396  unsigned int pcfFilterWidth(int quality) const;
397 
399  unsigned int pcfFilterWidth() const;
400 
402  void setBlendCascadesBoundaries(int quality, bool blendCascadesBoundaries);
403 
405  bool blendCascadesBoundaries(int quality) const;
406 
408  bool blendCascadesBoundaries() const;
409 
411  void setUseSDSM( int quality, bool useSDSM);
412 
414  bool useSDSM( int quality ) const;
415 
417  bool useSDSM() const;
418 
420  void setSDSMReadBackLatency( int quality, unsigned int sdsmReadBackLatency);
421 
423  unsigned int sdsmReadBackLatency( int quality ) const;
424 
426  unsigned int sdsmReadBackLatency() const;
427 
429  void setUseCameraDepthBufferForSDSM( int quality, bool useCameraDepthBufferForSDSM);
430 
432  bool useCameraDepthBufferForSDSM( int quality ) const;
433 
435  bool useCameraDepthBufferForSDSM() const;
436 
438  void setEVSMPositiveExponent( int quality, double evsmPositiveExponent);
439 
441  double evsmPositiveExponent( int quality ) const;
442 
444  double evsmPositiveExponent() const;
445 
447  void setEVSMNegativeExponent( int quality, double evsmNegativeExponent);
448 
450  double evsmNegativeExponent( int quality ) const;
451 
453  double evsmNegativeExponent() const;
454 
456  void setVSMMininumVariance( int quality, double vsmMininumVariance);
457 
459  double vsmMininumVariance( int quality ) const;
460 
462  double vsmMininumVariance() const;
463 
465  void setESMDarkeningFactor( int quality, double esmDarkeningFactor);
466 
468  double esmDarkeningFactor( int quality ) const;
469 
471  double esmDarkeningFactor() const;
472 
474  void setDirty( int quality, bool dirty);
475 
477  bool dirty( int quality ) const;
478 
480  bool dirty() const;
481 
483  void setCurrentPolygonOffsetCascade(unsigned int cascade);
484 
486  unsigned int currentPolygonOffsetCascade() const;
487 
490 
492  virtual void loadDefaults();
493 
497 
499  virtual void importSettings( const std::string& filePath );
500 
502  virtual void setFromRecord( const makArchives::DtShadowSettingsCollectionRecord& record );
503 
505  virtual void setShadowSettingsFromRecord( const makArchives::DtShadowSettingsCollectionRecord& record,
506  int quality );
507 
509  virtual void getRecord( makArchives::DtShadowSettingsCollectionRecord& record ) const;
510 
512  virtual void getShadowSettingsFromRecord( makArchives::DtShadowSettingsCollectionRecord& record,
513  int quality ) const;
514 
517  virtual DtShadowSettingsCollectionBackup* shadowSettingsCollectionBackup();
519 
520  public:
521 
523  boost::signal<void (int,const std::string&)> shadowSettingsNameChanged;
524 
526  boost::signal<void (int,int)> shadowSettingsEntitiesCastsShadowsChanged;
527 
529  boost::signal<void (int,int)> shadowSettingsPropsCastsShadowsChanged;
530 
532  boost::signal<void (int,int)> shadowSettingsTerrainCastsShadowsChanged;
533 
535  boost::signal<void (int,int)> shadowSettingsCloudsCastsShadowsChanged;
536 
538  boost::signal<void (int,int)> shadowSettingsVisualizeShadowsChanged;
539 
541  boost::signal<void (int,int)> shadowSettingsNumberOfSplitsChanged;
542 
544  boost::signal<void (int,bool)> shadowSettingsUseFrontFaceCullingChanged;
545 
547  boost::signal<void (int,bool)> shadowSettingsUsePolygonOffsetChanged;
548 
550  boost::signal<void (int,unsigned int,float)> shadowSettingsPolygonOffsetFactorChanged;
551 
553  boost::signal<void (int,unsigned int,float)> shadowSettingsPolygonOffsetUnitsChanged;
554 
556  boost::signal<void (int,int)> shadowSettingsSpotLightShadowMapSizeChanged;
557 
559  boost::signal<void (int,int)> shadowSettingsGlobalLightShadowMapSizeChanged;
560 
562  boost::signal<void (int,bool)> shadowSettingsUseMaximumViewDistanceChanged;
563 
565  boost::signal<void (int,double)> shadowSettingsMaximumViewDistanceChanged;
566 
568  boost::signal<void (int,double)> shadowSettingsSplitNearDistanceMinimumBiasChanged;
569 
571  boost::signal<void (int,double)> shadowSettingsSplitNearDistanceMaximumBiasChanged;
572 
574  boost::signal<void (int,double)> shadowSettingsSplitFarDistanceBiasChanged;
575 
577  boost::signal<void (int,float)> shadowSettingsShadowFactorChanged;
578 
580  boost::signal<void (int,int)> shadowSettingsShadowStabilizationSchemeChanged;
581 
583  boost::signal<void (int,float)> shadowSettingsAntiFlickerQuantizationFactorChanged;
584 
586  boost::signal<void (int,int)> shadowSettingsSplitDistanceComputeSchemeChanged;
587 
589  boost::signal<void (int,double)> shadowSettingsMixedSplitInterpolationValueChanged;
590 
592  boost::signal<void (int,int)> shadowSettingsSplitSelectionSchemeChanged;
593 
595  boost::signal<void (int,int)> shadowSettingsDataStorageSchemeChanged;
596 
598  boost::signal<void (int,int)> shadowSettingsPreFilteringSchemeChanged;
599 
601  boost::signal<void (int,int)> shadowSettingsFilteringSchemeChanged;
602 
604  boost::signal<void (int,int)> shadowSettingsPoissonDiskSamplingSchemeChanged;
605 
607  boost::signal<void (int,unsigned int)> shadowSettingsNumPersistentPassesPerCascadeChanged;
608 
610  boost::signal<void (int,unsigned int)> shadowSettingsNumAdditionalPassesPerCascadeChanged;
611 
613  boost::signal<void (int,unsigned int)> shadowSettingsPcfFilterWidthChanged;
614 
616  boost::signal<void (int,bool)> shadowSettingsBlendCascadesBoundariesChanged;
617 
619  boost::signal<void (int,bool)> shadowSettingsUseSDSMChanged;
620 
622  boost::signal<void (int,unsigned int)> shadowSettingsSDSMReadBackLatencyChanged;
623 
625  boost::signal<void (int,bool)> shadowSettingsUseCameraDepthBufferForSDSMChanged;
626 
628  boost::signal<void (int,double)> shadowSettingsEVSMPositiveExponentChanged;
629 
631  boost::signal<void (int,double)> shadowSettingsEVSMNegativeExponentChanged;
632 
634  boost::signal<void (int,double)> shadowSettingsVSMMininumVarianceChanged;
635 
637  boost::signal<void (int,double)> shadowSettingsESMDarkeningFactorChanged;
638 
640  boost::signal<void (int,bool)> shadowSettingsDirtyChanged;
641 
643  boost::signal<void (int)> shadowSettingsAdded;
644 
646  boost::signal<void (int)> shadowSettingsToBeRemoved;
647 
648  protected:
651  void slot_slaveAdded( const makVrv::DtDeRecord& igRecord );
652 
653  protected:
654 
656  template <typename ManagerClass>
657  friend ManagerClass& defaultManagerInstanceFunction( DtDe&, bool );
658 
660  template <typename ManagerClass>
661  friend void defaultManagerRegisterInstanceFunction( DtDe&, ManagerClass* );
662 
665 
668 
671  DtShadowSettingsObjectAgent* getShadowSettingsObjectAgentPtr( int quality ) const;
672 
675  virtual void addShadowSettingsObjectAgent( int quality, const std::string& stringKey, DtShadowSettingsObjectAgent* agent );
676 
680  virtual void createShadowSettings( int quality, const std::string& stringKey );
681 
683  virtual void removeShadowQuality( int quality );
684 
686  virtual void clear();
687 
688  virtual void initializeBackup();
689 
690  protected:
691 
693 
695 
697 
699 
701 
703 
704  unsigned int myNumSplits;
705 
707 
708  std::vector<float> myPolygonOffsetFactor;
709 
710  std::vector<float> myPolygonOffsetUnits;
711 
713 
715 
717 
719 
721 
723 
725 
727 
729 
731 
733 
735 
737 
739 
741 
743 
745 
747 
749 
751 
753 
755 
756  unsigned int myPcfFilterWidth;
757 
759 
760  bool myUseSDSM;
761 
762  unsigned int mySDSMReadBackLatency;
763 
765 
767 
769 
771 
773 
774  std::string myName;
775 
777 
778 
780  typedef std::map<int, DtShadowSettingsObjectAgent*> ShadowSettingsObjectAgents;
781 
783  typedef std::map<std::string,int> ShadowSettingsObjectAgentsMap;
784 
786 
787  // The map of visual modes (from id to DtObserverMode)
789 
790  // map from name to id
792 
793  };
794 
795 
799  {
800  public:
801 
804 
807 
810  static DtShadowSettingsManagerCreator& instance( DtDe& de );
811 
813  virtual DtShadowSettingsManager* create( DtDe& );
814 
815  };
816 
817 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)