25 #include "CameraBoundElement.h" 26 #include "PrivatePtr.h" 50 static const Ogre::String DEFAULT_PASS_NAME;
55 Ogre::SceneNode *caelumRootNode,
56 const Ogre::String &domeMaterialName =
"CaelumGroundFogDome",
57 const Ogre::String &domeEntityName =
"CaelumGroundFogDome");
77 const PassSet& getPasses ()
const;
83 void findFogPassesByName (
const Ogre::String& passName = DEFAULT_PASS_NAME);
86 void setDensity (Ogre::Real density);
89 Ogre::Real getDensity ()
const;
92 void setColour (
const Ogre::ColourValue &colour);
95 const Ogre::ColourValue getColour ()
const;
98 void setVerticalDecay (Ogre::Real verticalDecay);
101 Ogre::Real getVerticalDecay ()
const;
106 void setGroundLevel (Ogre::Real GroundLevela);
110 Ogre::Real getGroundLevel ()
const;
122 Ogre::Real mVerticalDecay;
125 Ogre::Real mGroundLevel;
128 Ogre::ColourValue mFogColour;
132 Ogre::SceneManager* mScene;
144 void updateSkyFogging();
148 virtual void setFarRadius (Ogre::Real radius);
152 virtual void notifyCameraChanged (Ogre::Camera *cam);
154 void setQueryFlags (uint flags) { mDomeEntity->setQueryFlags (flags); }
155 uint getQueryFlags ()
const {
return mDomeEntity->getQueryFlags (); }
156 void setVisibilityFlags (uint flags) { mDomeEntity->setVisibilityFlags (flags); }
157 uint getVisibilityFlags ()
const {
return mDomeEntity->getVisibilityFlags (); }
166 void setup(Ogre::GpuProgramParametersSharedPtr fpParams);
168 Ogre::GpuProgramParametersSharedPtr fpParams;
177 struct DomeFogParams:
public FogParamsBase {
178 void setup(Ogre::GpuProgramParametersSharedPtr fpParams);
182 struct PassFogParams:
public FogParamsBase {
183 PassFogParams(Ogre::GpuProgramParametersSharedPtr fpParams) { setup(fpParams); }
185 static inline bool lessThanByParams(
const PassFogParams& a,
const PassFogParams& b) {
186 return a.fpParams.get() <= b.fpParams.get();
189 static inline bool equalByParams(
const PassFogParams& a,
const PassFogParams& b) {
190 return a.fpParams.get() == b.fpParams.get();
194 typedef std::vector<PassFogParams> PassFogParamsVector;
195 PassFogParamsVector mPassFogParams;
198 void updatePassFogParams();
Exponential ground fog system implementation.
std::set< Ogre::Pass * > PassSet
Typedef for easier manipulation of a set of Passes.
An optimized reference to a gpu shared parameter.