VR-Vantage 3.0 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOptimizer.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 
12 #include <vrvOsg/vrvOsg.h>
14 
15 #include <osgUtil/Optimizer>
16 #include <osgUtil/Statistics>
17 #include <osgUtil/TriStripVisitor>
18 
19 #include <osgSim/LightPointNode>
20 
21 namespace makVrv
22 {
26  class DT_DLL_VRVOSG DtOptimizer : public osgUtil::Optimizer
27  {
28  public:
29 
31  DtOptimizer(bool processProxyNodes);
32 
34  virtual void optimize(osg::Node* node, unsigned int options);
35 
36  class StatsVisitor : public osgUtil::StatsVisitor
37  {
38  public:
39  StatsVisitor(bool processProxyNodes);
40  virtual void apply(osg::ProxyNode& node);
41  protected:
43  };
44 
45  class StaticObjectDetectionVisitor : public osgUtil::Optimizer::StaticObjectDetectionVisitor
46  {
47  public:
48  StaticObjectDetectionVisitor(bool processProxyNodes);
49  virtual void apply(osg::ProxyNode& node);
50  protected:
52  };
53 
54  class TriStripVisitor : public osgUtil::TriStripVisitor
55  {
56  public:
57  TriStripVisitor(bool processProxyNodes,Optimizer* optimizer);
58  virtual void apply(osg::ProxyNode& node);
59  protected:
61  };
62 
63  class RemoveEmptyNodesVisitor : public osgUtil::Optimizer::RemoveEmptyNodesVisitor
64  {
65  public:
66  RemoveEmptyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
67  virtual void apply(osg::ProxyNode& node);
68  protected:
70  };
71 
72  class RemoveRedundantNodesVisitor : public osgUtil::Optimizer::RemoveRedundantNodesVisitor
73  {
74  public:
75  RemoveRedundantNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
76  virtual void apply(osg::ProxyNode& node);
77  virtual void apply( osg::Group& node );
78  protected:
80  };
81 
82  class FlattenBillboardVisitor : public osgUtil::Optimizer::FlattenBillboardVisitor
83  {
84  public:
85  FlattenBillboardVisitor(bool processProxyNodes,Optimizer* optimizer);
86  virtual void apply(osg::ProxyNode& node);
87  protected:
89  };
90 
91  class SpatializeGroupsVisitor : public osgUtil::Optimizer::SpatializeGroupsVisitor
92  {
93  public:
94  SpatializeGroupsVisitor(bool processProxyNodes,Optimizer* optimizer);
95  virtual void apply(osg::ProxyNode& node);
96  protected:
98  };
99 
100  class TessellateVisitor : public osgUtil::Optimizer::TessellateVisitor
101  {
102  public:
103  TessellateVisitor(bool processProxyNodes,Optimizer* optimizer);
104  virtual void apply(osg::ProxyNode& node);
105  protected:
107  };
108 
109  class RemoveLoadedProxyNodesVisitor : public osgUtil::Optimizer::RemoveLoadedProxyNodesVisitor
110  {
111  public:
112  RemoveLoadedProxyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
113  virtual void apply(osg::ProxyNode& node);
114  protected:
116  };
117 
118  class CombineLODsVisitor : public osgUtil::Optimizer::CombineLODsVisitor
119  {
120  public:
121  CombineLODsVisitor(bool processProxyNodes,Optimizer* optimizer);
122  virtual void apply(osg::ProxyNode& node);
123  protected:
125  };
126 
127  class TextureVisitor : public osgUtil::Optimizer::TextureVisitor
128  {
129  public:
130  TextureVisitor(bool processProxyNodes,bool changeAutoUnRef, bool valueAutoUnRef,
131  bool changeClientImageStorage, bool valueClientImageStorage,
132  bool changeAnisotropy, float valueAnisotropy,
133  Optimizer* optimizer);
134 
135  virtual void apply(osg::ProxyNode& node);
136  protected:
138  };
139 
140  class StateVisitor : public osgUtil::Optimizer::StateVisitor
141  {
142  public:
143  StateVisitor(bool processProxyNodes, bool combineDynamicState,
144  bool combineStaticState,bool combineUnspecifiedState,
145  Optimizer* optimizer);
146  virtual void apply(osg::ProxyNode& node);
147 
148  protected:
150  };
151 
152  class CopySharedSubgraphsVisitor : public osgUtil::Optimizer::CopySharedSubgraphsVisitor
153  {
154  public:
155  CopySharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
156  virtual void apply(osg::ProxyNode& node);
157  protected:
159  };
160 
161  class CombineStaticTransformsVisitor : public osgUtil::Optimizer::CombineStaticTransformsVisitor
162  {
163  public:
164  CombineStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
165  virtual void apply(osg::ProxyNode& node);
166  protected:
168  };
169 
172  {
173  public:
174  FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
175  virtual void apply(osg::ProxyNode& node);
176  virtual void apply(osg::Node& node);
177  virtual void apply(osg::LightSource& ls);
179  virtual void apply(osg::Geode& geode);
180 
181  protected:
182  virtual void transformOsgSimLightPointNode(osgSim::LightPointNode* lpn);
183  virtual void transformDtLightPointNode(DtLightPointNode* lpn);
184  virtual void transformOsgLightSource(osg::LightSource* ls);
185 
186  protected:
188 
189  };
190 
191  class MergeGeodesVisitor : public osgUtil::Optimizer::MergeGeodesVisitor
192  {
193  public:
194  MergeGeodesVisitor(bool processProxyNodes,Optimizer* optimizer);
195  virtual void apply(osg::ProxyNode& node);
196  protected:
198  };
199 
200  class CheckGeometryVisitor : public osgUtil::BaseOptimizerVisitor
201  {
202  public:
203  CheckGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
204  virtual void apply(osg::Geode& geode) { checkGeode(geode); }
205  virtual void apply(osg::ProxyNode& node);
206 
207  void checkGeode(osg::Geode& geode);
208 
209  protected:
211  };
212 
213  class MergeGeometryVisitor : public osgUtil::Optimizer::MergeGeometryVisitor
214  {
215  public:
216  MergeGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
217  virtual void apply(osg::ProxyNode& node);
218  protected:
220  };
221 
222  class FlattenStaticTransformsVisitor : public osgUtil::Optimizer::FlattenStaticTransformsVisitor
223  {
224  public:
225  FlattenStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
226  virtual void apply(osg::ProxyNode& node);
228  virtual void apply(osg::Geode& geode);
229  protected:
231  };
232 
233  class TextureAtlasVisitor : public osgUtil::Optimizer::TextureAtlasVisitor
234  {
235  public:
236  TextureAtlasVisitor(bool processProxyNodes,Optimizer* optimizer);
237  virtual void apply(osg::ProxyNode& node);
238  protected:
240  };
241 
252  static int optimizationLevel01();
253 
264  static int optimizationLevel01Instanced();
265 
285  static int optimizationLevel02();
286 
287  protected:
288 
290  };
291 
292 }
293 


Copyright © 2005-2022 MAK Technologies. All Rights Reserved (www.mak.com)