VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgEffectTextureController.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>
13 
15 
16 #include <osgDB/Options>
17 
18 #include <osg/Referenced>
19 #include <osg/ExtendedMaterial>
20 #include <osg/StateAttribute>
21 
22 #include <string>
23 
24 namespace osg
25 {
26  class StateSet;
27  class Texture;
28 }
29 namespace osgEarth
30 {
31  class VirtualProgram;
32 }
33 
34 namespace makVrv
35 {
36  class DtOsgShaderManager;
37  class DtOsgFileCache;
38  class DtPossibleFileNamesCache;
39 
40  struct DtVirtualProgramParams;
41 
44  class DT_DLL_VRVOSG DtOsgEffectTextureController : public osg::Referenced
45  {
46  public:
48  DtOsgEffectTextureController(DtDe& de, int type, const std::string& effectTypeCode);
49 
50  public: // Implementation methods
51 
53  virtual const std::string& effectTypeCode() const;
54 
56  virtual int effectTextureType() const;
57 
64  virtual osg::Texture* installEffectTexture(osg::Texture* baseTexture, int baseTexUnit,
65  osg::StateSet* stateSet, const osgDB::Options* dbOptions, const DtPossibleFileNamesCache& possibleFilenames) const;
66 
68  virtual void findEffectTexture(const std::string& baseTextureName, const osgDB::Options* dbOptions, const DtPossibleFileNamesCache& possibleFilenames, const osg::Texture* baseTexture, osg::ref_ptr<osg::Texture>& effectTexture) const;
69 
71  virtual bool installShaders(int baseUnit, int effectUnit, const osg::Texture* tex, osg::StateSet* stateSet, const std::string& baseTextureName) const { return true; }
72 
73  protected:
74 
77 
79  virtual osgEarth::VirtualProgram* installVirtualProgram(int baseUnit, int effectUnit, const osg::Texture* tex, osg::StateSet* stateSet, const std::string& baseTextureName
80  , const DtVirtualProgramParams& params) const;
81 
82  // applies default shader LOD ranges, if applicable
83  virtual void applyDefaultShaderLODRanges(osgEarth::VirtualProgram* vp, const std::string& function) const;
84 
86  const std::string myEffectTypeCode;
87 
89 
92  };
93 
96  class DT_DLL_VRVOSG DtEffectTextureUnitStateAttribute : public osg::StateAttribute
97  {
98  public:
99 
101  static const osg::StateAttribute::Type EffectTextureUnitStateAttributeType = (osg::StateAttribute::Type)2000;
102 
104  DtEffectTextureUnitStateAttribute(unsigned int texCoordUnit = 0, const std::string& baseTextureName = "");
105 
108 
110  DtEffectTextureUnitStateAttribute(const DtEffectTextureUnitStateAttribute& stateAttrib, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
111 
112  META_StateAttribute(osg, DtEffectTextureUnitStateAttribute, EffectTextureUnitStateAttributeType);
113 
115  virtual bool isTextureAttribute() const;
116 
118  virtual int compare(const osg::StateAttribute& sa) const;
119 
121  unsigned int texCoordUnit() const;
122 
124  const std::string& baseTextureName() const;
125 
126  private:
127 
128  unsigned int myTexCoordUnit;
129 
130  std::string myBaseTextureName;
131  };
132 
133 }
Diagonal crossing liens.
Definition: DtTacticalGraphicUtilities.h:93
virtual bool installShaders(int baseUnit, int effectUnit, const osg::Texture *tex, osg::StateSet *stateSet, const std::string &baseTextureName) const
install shaders for a stateset if required by this effect.
Definition: DtOsgEffectTextureController.h:71
Contains makVrv::DtEffectTextureType declaration.
A thread safe cache containing a list of possible file names for effect textures, based on the curren...
Definition: DtPossibleFileNamesCache.h:27
Attribute used to hold the texture coordinate unit to use with the effect texture in the texture attr...
Definition: DtOsgEffectTextureController.h:96
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float myDefaultMaxRange
Definition: DtOsgEffectTextureController.h:88
unsigned int myTexCoordUnit
Definition: DtOsgEffectTextureController.h:128
The OSG implementation of makVrv::DtOsgFileCache.
Definition: DtOsgFileCache.h:54
DtDe & myDe
Definition: DtOsgEffectTextureController.h:91
Base class for controllers that install and control effect textures.
Definition: DtOsgEffectTextureController.h:44
const int myEffectTextureType
Definition: DtOsgEffectTextureController.h:85
std::string myBaseTextureName
Definition: DtOsgEffectTextureController.h:130
Contains DLL export macros.
const DtOsgFileCache & myFileCache
Definition: DtOsgEffectTextureController.h:90
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
const std::string myEffectTypeCode
Definition: DtOsgEffectTextureController.h:86
structure to pass encapsulate parameters of a particular VP
Definition: DtVirtualProgramParams.h:19

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)