VR-Forces Developer's Guide
 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 
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 
64  {
65  public:
66  RemoveEmptyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
67  virtual void apply(osg::ProxyNode& node);
68  protected:
70  };
71 
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 
83  {
84  public:
85  FlattenBillboardVisitor(bool processProxyNodes,Optimizer* optimizer);
86  virtual void apply(osg::ProxyNode& node);
87  protected:
89  };
90 
92  {
93  public:
94  SpatializeGroupsVisitor(bool processProxyNodes,Optimizer* optimizer);
95  virtual void apply(osg::ProxyNode& node);
96  protected:
98  };
99 
101  {
102  public:
103  TessellateVisitor(bool processProxyNodes,Optimizer* optimizer);
104  virtual void apply(osg::ProxyNode& node);
105  protected:
107  };
108 
110  {
111  public:
112  RemoveLoadedProxyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
113  virtual void apply(osg::ProxyNode& node);
114  protected:
116  };
117 
119  {
120  public:
121  CombineLODsVisitor(bool processProxyNodes,Optimizer* optimizer);
122  virtual void apply(osg::ProxyNode& node);
123  protected:
125  };
126 
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 
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 
153  {
154  public:
155  CopySharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
156  virtual void apply(osg::ProxyNode& node);
157  protected:
159  };
160 
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 
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 
214  {
215  public:
216  MergeGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
217  virtual void apply(osg::ProxyNode& node);
218  protected:
220  };
221 
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 
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 
Definition: DtOptimizer.h:100
Contains makVrv::DtLightPointNode class.
Definition: DtOptimizer.h:213
bool myProcessProxyNodes
Definition: DtOptimizer.h:124
bool myProcessProxyNodes
Definition: DtOptimizer.h:158
bool myProcessProxyNodes
Definition: DtOptimizer.h:210
bool myProcessProxyNodes
Definition: DtOptimizer.h:97
bool myProcessProxyNodes
Definition: DtOptimizer.h:69
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
bool myProcessProxyNodes
Definition: DtOptimizer.h:137
bool myProcessProxyNodes
Definition: DtOptimizer.h:106
bool myProcessProxyNodes
Definition: DtOptimizer.h:79
bool myProcessProxyNodes
Definition: DtOptimizer.h:167
bool myProcessProxyNodes
Definition: DtOptimizer.h:289
bool myProcessProxyNodes
Definition: DtOptimizer.h:219
Definition: DtOptimizer.h:191
bool myProcessProxyNodes
Definition: DtOptimizer.h:149
bool myProcessProxyNodes
Definition: DtOptimizer.h:60
Definition: DtOptimizer.h:118
Definition: DtOptimizer.h:54
Optimizer class that allows for thread-safe optimization by not following proxy nodes.
Definition: DtOptimizer.h:26
virtual void apply(osg::Geode &geode)
Definition: DtOptimizer.h:204
bool myProcessProxyNodes
Definition: DtOptimizer.h:197
bool myProcessProxyNodes
Definition: DtOptimizer.h:230
Derived from osg::Node and is a replacement for the osgSim::LightPointNode represents a group of ligh...
Definition: DtLightPointNode.h:37
bool myProcessProxyNodes
Definition: DtOptimizer.h:239
bool myProcessProxyNodes
Definition: DtOptimizer.h:115
bool myProcessProxyNodes
Definition: DtOptimizer.h:51
Definition: DtOptimizer.h:127
Contains DLL export macros.
bool myProcessProxyNodes
Definition: DtOptimizer.h:88
bool myProcessProxyNodes
Definition: DtOptimizer.h:42
Definition: DtOptimizer.h:200
Definition: DtOptimizer.h:36
Definition: DtOptimizer.h:140
Definition: DtOptimizer.h:233

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)