OgreAutoParamDataSource.h

Go to the documentation of this file.
00001 /*
00002 -----------------------------------------------------------------------------
00003 This source file is part of OGRE
00004     (Object-oriented Graphics Rendering Engine)
00005 For the latest info, see http://www.ogre3d.org
00006 
00007 Copyright (c) 2000-2006 Torus Knot Software Ltd
00008 Also see acknowledgements in Readme.html
00009 
00010 This program is free software; you can redistribute it and/or modify it under
00011 the terms of the GNU Lesser General Public License as published by the Free Software
00012 Foundation; either version 2 of the License, or (at your option) any later
00013 version.
00014 
00015 This program is distributed in the hope that it will be useful, but WITHOUT
00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License along with
00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
00022 http://www.gnu.org/copyleft/lesser.txt.
00023 
00024 You may alternatively use this source under the terms of a specific version of
00025 the OGRE Unrestricted License provided you have obtained such a license from
00026 Torus Knot Software Ltd.
00027 -----------------------------------------------------------------------------
00028 */
00029 #ifndef __AutoParamDataSource_H_
00030 #define __AutoParamDataSource_H_
00031 
00032 #include "OgrePrerequisites.h"
00033 #include "OgreCommon.h"
00034 #include "OgreMatrix4.h"
00035 #include "OgreVector4.h"
00036 #include "OgreLight.h"
00037 #include "OgreColourValue.h"
00038 
00039 namespace Ogre {
00040 
00041     // forward decls
00042     struct VisibleObjectsBoundsInfo;
00043 
00044 
00055     class _OgreExport AutoParamDataSource : public SceneMgtAlloc
00056     {
00057     protected:
00058         const Light& getLight(size_t index) const;
00059         mutable Matrix4 mWorldMatrix[256];
00060         mutable size_t mWorldMatrixCount;
00061         mutable const Matrix4* mWorldMatrixArray;
00062         mutable Matrix4 mWorldViewMatrix;
00063         mutable Matrix4 mViewProjMatrix;
00064         mutable Matrix4 mWorldViewProjMatrix;
00065         mutable Matrix4 mInverseWorldMatrix;
00066         mutable Matrix4 mInverseWorldViewMatrix;
00067         mutable Matrix4 mInverseViewMatrix;
00068         mutable Matrix4 mInverseTransposeWorldMatrix;
00069         mutable Matrix4 mInverseTransposeWorldViewMatrix;
00070         mutable Vector4 mCameraPositionObjectSpace;
00071         mutable Matrix4 mTextureViewProjMatrix[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00072         mutable Matrix4 mTextureWorldViewProjMatrix[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00073         mutable Matrix4 mSpotlightViewProjMatrix[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00074         mutable Matrix4 mSpotlightWorldViewProjMatrix[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00075         mutable Vector4 mShadowCamDepthRanges[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00076         mutable Matrix4 mViewMatrix;
00077         mutable Matrix4 mProjectionMatrix;
00078         mutable Real mDirLightExtrusionDistance;
00079         mutable Vector4 mCameraPosition;
00080 
00081         mutable bool mWorldMatrixDirty;
00082         mutable bool mViewMatrixDirty;
00083         mutable bool mProjMatrixDirty;
00084         mutable bool mWorldViewMatrixDirty;
00085         mutable bool mViewProjMatrixDirty;
00086         mutable bool mWorldViewProjMatrixDirty;
00087         mutable bool mInverseWorldMatrixDirty;
00088         mutable bool mInverseWorldViewMatrixDirty;
00089         mutable bool mInverseViewMatrixDirty;
00090         mutable bool mInverseTransposeWorldMatrixDirty;
00091         mutable bool mInverseTransposeWorldViewMatrixDirty;
00092         mutable bool mCameraPositionObjectSpaceDirty;
00093         mutable bool mCameraPositionDirty;
00094         mutable bool mTextureViewProjMatrixDirty[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00095         mutable bool mTextureWorldViewProjMatrixDirty[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00096         mutable bool mSpotlightViewProjMatrixDirty[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00097         mutable bool mSpotlightWorldViewProjMatrixDirty[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00098         mutable bool mShadowCamDepthRangesDirty[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00099         mutable ColourValue mAmbientLight;
00100         mutable ColourValue mFogColour;
00101         mutable Vector4 mFogParams;
00102         mutable int mPassNumber;
00103         mutable Vector4 mSceneDepthRange;
00104         mutable bool mSceneDepthRangeDirty;
00105 
00106         const Renderable* mCurrentRenderable;
00107         const Camera* mCurrentCamera;
00108         bool mCameraRelativeRendering;
00109         Vector3 mCameraRelativePosition;
00110         const LightList* mCurrentLightList;
00111         const Frustum* mCurrentTextureProjector[OGRE_MAX_SIMULTANEOUS_LIGHTS];
00112         const RenderTarget* mCurrentRenderTarget;
00113         const Viewport* mCurrentViewport;
00114         const SceneManager* mCurrentSceneManager;
00115         const VisibleObjectsBoundsInfo* mMainCamBoundsInfo;
00116         const Pass* mCurrentPass;
00117 
00118         Light mBlankLight;
00119     public:
00120         AutoParamDataSource();
00121         virtual ~AutoParamDataSource();
00123         virtual void setCurrentRenderable(const Renderable* rend);
00125         virtual void setWorldMatrices(const Matrix4* m, size_t count);
00127         virtual void setCurrentCamera(const Camera* cam, bool useCameraRelative);
00129         virtual void setCurrentLightList(const LightList* ll);
00131         virtual void setTextureProjector(const Frustum* frust, size_t index);
00133         virtual void setCurrentRenderTarget(const RenderTarget* target);
00135         virtual void setCurrentViewport(const Viewport* viewport);
00137         virtual void setShadowDirLightExtrusionDistance(Real dist);
00139         virtual void setMainCamBoundsInfo(VisibleObjectsBoundsInfo* info);
00141         virtual void setCurrentSceneManager(const SceneManager* sm);
00143         virtual void setCurrentPass(const Pass* pass);
00144 
00145 
00146 
00147         virtual const Matrix4& getWorldMatrix(void) const;
00148         virtual const Matrix4* getWorldMatrixArray(void) const;
00149         virtual size_t getWorldMatrixCount(void) const;
00150         virtual const Matrix4& getViewMatrix(void) const;
00151         virtual const Matrix4& getViewProjectionMatrix(void) const;
00152         virtual const Matrix4& getProjectionMatrix(void) const;
00153         virtual const Matrix4& getWorldViewProjMatrix(void) const;
00154         virtual const Matrix4& getWorldViewMatrix(void) const;
00155         virtual const Matrix4& getInverseWorldMatrix(void) const;
00156         virtual const Matrix4& getInverseWorldViewMatrix(void) const;
00157         virtual const Matrix4& getInverseViewMatrix(void) const;
00158         virtual const Matrix4& getInverseTransposeWorldMatrix(void) const;
00159         virtual const Matrix4& getInverseTransposeWorldViewMatrix(void) const;
00160         virtual const Vector4& getCameraPosition(void) const;
00161         virtual const Vector4& getCameraPositionObjectSpace(void) const;
00163         virtual float getLightNumber(size_t index) const;
00164         virtual float getLightCount() const;
00165         virtual int getLightCastsShadows(size_t index) const;
00166         virtual const ColourValue& getLightDiffuseColour(size_t index) const;
00167         virtual const ColourValue& getLightSpecularColour(size_t index) const;
00168         virtual const ColourValue getLightDiffuseColourWithPower(size_t index) const;
00169         virtual const ColourValue getLightSpecularColourWithPower(size_t index) const;
00170         virtual const Vector3& getLightPosition(size_t index) const;
00171         virtual Vector4 getLightAs4DVector(size_t index) const;
00172         virtual const Vector3& getLightDirection(size_t index) const;
00173         virtual Real getLightPowerScale(size_t index) const;
00174         virtual Vector4 getLightAttenuation(size_t index) const;
00175         virtual Vector4 getSpotlightParams(size_t index) const;
00176         virtual void setAmbientLightColour(const ColourValue& ambient);
00177         virtual const ColourValue& getAmbientLightColour(void) const;
00178         virtual const ColourValue& getSurfaceAmbientColour(void) const;
00179         virtual const ColourValue& getSurfaceDiffuseColour(void) const;
00180         virtual const ColourValue& getSurfaceSpecularColour(void) const;
00181         virtual const ColourValue& getSurfaceEmissiveColour(void) const;
00182         virtual Real getSurfaceShininess(void) const;
00183         virtual ColourValue getDerivedAmbientLightColour(void) const;
00184         virtual ColourValue getDerivedSceneColour(void) const;
00185         virtual void setFog(FogMode mode, const ColourValue& colour, Real expDensity, Real linearStart, Real linearEnd);
00186         virtual const ColourValue& getFogColour(void) const;
00187         virtual const Vector4& getFogParams(void) const;
00188         virtual const Matrix4& getTextureViewProjMatrix(size_t index) const;
00189         virtual const Matrix4& getTextureWorldViewProjMatrix(size_t index) const;
00190         virtual const Matrix4& getSpotlightViewProjMatrix(size_t index) const;
00191         virtual const Matrix4& getSpotlightWorldViewProjMatrix(size_t index) const;
00192         virtual const Matrix4& getTextureTransformMatrix(size_t index) const;
00193         virtual const RenderTarget* getCurrentRenderTarget(void) const;
00194         virtual const Renderable* getCurrentRenderable(void) const;
00195         virtual const Pass* getCurrentPass(void) const;
00196         virtual Vector4 getTextureSize(size_t index) const;
00197         virtual Vector4 getInverseTextureSize(size_t index) const;
00198         virtual Vector4 getPackedTextureSize(size_t index) const;
00199         virtual Real getShadowExtrusionDistance(void) const;
00200         virtual const Vector4& getSceneDepthRange() const;
00201         virtual const Vector4& getShadowSceneDepthRange(size_t index) const;
00202         virtual const ColourValue& getShadowColour() const;
00203         virtual Matrix4 getInverseViewProjMatrix(void) const;
00204         virtual Matrix4 getInverseTransposeViewProjMatrix() const;
00205         virtual Matrix4 getTransposeViewProjMatrix() const;
00206         virtual Matrix4 getTransposeViewMatrix() const;
00207         virtual Matrix4 getInverseTransposeViewMatrix() const;
00208         virtual Matrix4 getTransposeProjectionMatrix() const;
00209         virtual Matrix4 getInverseProjectionMatrix() const;
00210         virtual Matrix4 getInverseTransposeProjectionMatrix() const;
00211         virtual Matrix4 getTransposeWorldViewProjMatrix() const;
00212         virtual Matrix4 getInverseWorldViewProjMatrix() const;
00213         virtual Matrix4 getInverseTransposeWorldViewProjMatrix() const;
00214         virtual Matrix4 getTransposeWorldViewMatrix() const;
00215         virtual Matrix4 getTransposeWorldMatrix() const;
00216         virtual Real getTime(void) const;
00217         virtual Real getTime_0_X(Real x) const;
00218         virtual Real getCosTime_0_X(Real x) const;
00219         virtual Real getSinTime_0_X(Real x) const;
00220         virtual Real getTanTime_0_X(Real x) const;
00221         virtual Vector4 getTime_0_X_packed(Real x) const;
00222         virtual Real getTime_0_1(Real x) const;
00223         virtual Real getCosTime_0_1(Real x) const;
00224         virtual Real getSinTime_0_1(Real x) const;
00225         virtual Real getTanTime_0_1(Real x) const;
00226         virtual Vector4 getTime_0_1_packed(Real x) const;
00227         virtual Real getTime_0_2Pi(Real x) const;
00228         virtual Real getCosTime_0_2Pi(Real x) const;
00229         virtual Real getSinTime_0_2Pi(Real x) const;
00230         virtual Real getTanTime_0_2Pi(Real x) const;
00231         virtual Vector4 getTime_0_2Pi_packed(Real x) const;
00232         virtual Real getFrameTime(void) const;
00233         virtual Real getFPS() const;
00234         virtual Real getViewportWidth() const;
00235         virtual Real getViewportHeight() const;
00236         virtual Real getInverseViewportWidth() const;
00237         virtual Real getInverseViewportHeight() const;
00238         virtual Vector3 getViewDirection() const;
00239         virtual Vector3 getViewSideVector() const;
00240         virtual Vector3 getViewUpVector() const;
00241         virtual Real getFOV() const;
00242         virtual Real getNearClipDistance() const;
00243         virtual Real getFarClipDistance() const;
00244         virtual int getPassNumber(void) const;
00245         virtual void setPassNumber(const int passNumber);
00246         virtual void incPassNumber(void);
00247     };
00248 }
00249 
00250 #endif

Copyright © 2008 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Thu Aug 28 20:53:45 2008