VR-Forces 4.7 Class 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) 2019 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 
178  protected:
179  virtual void transformOsgSimLightPointNode(osgSim::LightPointNode* lpn);
180  virtual void transformDtLightPointNode(DtLightPointNode* lpn);
181 
182  protected:
184 
185  };
186 
187  class MergeGeodesVisitor : public osgUtil::Optimizer::MergeGeodesVisitor
188  {
189  public:
190  MergeGeodesVisitor(bool processProxyNodes,Optimizer* optimizer);
191  virtual void apply(osg::ProxyNode& node);
192  protected:
194  };
195 
196  class CheckGeometryVisitor : public osgUtil::Optimizer::CheckGeometryVisitor
197  {
198  public:
199  CheckGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
200  virtual void apply(osg::ProxyNode& node);
201  protected:
203  };
204 
205  class MergeGeometryVisitor : public osgUtil::Optimizer::MergeGeometryVisitor
206  {
207  public:
208  MergeGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
209  virtual void apply(osg::ProxyNode& node);
210  protected:
212  };
213 
214  class FlattenStaticTransformsVisitor : public osgUtil::Optimizer::FlattenStaticTransformsVisitor
215  {
216  public:
217  FlattenStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
218  virtual void apply(osg::ProxyNode& node);
219  protected:
221  };
222 
223  class TextureAtlasVisitor : public osgUtil::Optimizer::TextureAtlasVisitor
224  {
225  public:
226  TextureAtlasVisitor(bool processProxyNodes,Optimizer* optimizer);
227  virtual void apply(osg::ProxyNode& node);
228  protected:
230  };
231 
242  static int optimizationLevel01();
243 
254  static int optimizationLevel01Instanced();
255 
275  static int optimizationLevel02();
276 
277  protected:
278 
280  };
281 
282 }
283 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)