Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members
E:/Programming/MyProject/K_Game_hg/GameEngine/include/render/ShaderParamData.h
Go to the documentation of this file.
00001 // Copyright 2006-2011 by Kat'Oun
00002 
00003 #ifndef _SHADER_PARAM_DATA_H_
00004 #define _SHADER_PARAM_DATA_H_
00005 
00006 #include <EngineConfig.h>
00007 #include <core/Types.h>
00008 #include <render/Color.h>
00009 #include <core/Vector2d.h>
00010 #include <core/Vector3d.h>
00011 #include <core/Vector4d.h>
00012 #include <core/Matrix4.h>
00013 
00014 namespace render
00015 {
00016 
00017 class Light;
00018 class Camera;
00019 class Renderable;
00020 class Viewport;
00021 
00022 class ENGINE_PUBLIC_EXPORT ShaderParamData
00023 {
00024 public:
00025 
00026         ShaderParamData();
00027 
00028         void setWorldMatrices(const core::matrix4& m);
00029         void setCurrentRenderable(Renderable* rend);
00030         void setCurrentCamera(Camera* cam);
00031         void setCurrentViewport(Viewport* viewport);
00032         void setCurrentLight(Light* light);
00033 
00034         const core::vector3d& getCameraPosition();
00035         const core::vector3d& getCameraPositionObjectSpace();
00036 
00037         const core::vector3d& getCurrentLightPosition();
00038         const core::vector3d& getCurrentLightPositionObjectSpace();
00039         const core::vector3d& getCurrentLightPositionViewSpace();
00040         const core::vector3d& getCurrentLightDirection();
00041         const core::vector3d& getCurrentLightDirectionObjectSpace();
00042         const core::vector3d& getCurrentLightDirectionViewSpace();
00043 
00044         void setAmbientLightColor(const Color& ambient);
00045         const Color& getAmbientLightColour() const;
00046 
00047         const Color& getCurrentLightDiffuseColour() const;
00048         const Color& getCurrentLightSpecularColour() const;
00049         core::vector4d getCurrentLightAttenuation() const;
00050 
00051         const core::matrix4& getWorldMatrix();
00052         const core::matrix4& getViewMatrix();
00053         const core::matrix4& getProjectionMatrix();
00054 
00055         const core::matrix4& getWorldViewMatrix();
00056         const core::matrix4& getViewProjectionMatrix();
00057         const core::matrix4& getWorldViewProjMatrix();
00058 
00059         const core::matrix4& getInverseWorldMatrix();
00060         const core::matrix4& getInverseViewMatrix();
00061         core::matrix4 getInverseProjectionMatrix();
00062 
00063         const core::matrix4& getInverseWorldViewMatrix();
00064         core::matrix4 getInverseViewProjectionMatrix();
00065         core::matrix4 getInverseWorldViewProjMatrix();
00066 
00067         core::matrix4 getTransposedWorldMatrix();
00068         core::matrix4 getTransposedViewMatrix();
00069         core::matrix4 getTransposedProjectionMatrix();
00070 
00071         core::matrix4 getTransposedWorldViewMatrix();
00072         core::matrix4 getTransposedViewProjectionMatrix();
00073         core::matrix4 getTransposedWorldViewProjMatrix();
00074 
00075         const core::matrix4& getInverseTransposedWorldMatrix();
00076         core::matrix4 getInverseTransposedViewMatrix();
00077         core::matrix4 getInverseTransposedProjectionMatrix();
00078 
00079         const core::matrix4& getInverseTransposedWorldViewMatrix();
00080         core::matrix4 getInverseTransposedViewProjectionMatrix();
00081         core::matrix4 getInverseTransposedWorldViewProjMatrix();
00082 
00083 protected:
00084 
00085         core::matrix4 mWorldMatrix;
00086         core::matrix4 mViewMatrix;
00087         core::matrix4 mProjectionMatrix;
00088 
00089         core::matrix4 mWorldViewMatrix;
00090         core::matrix4 mViewProjMatrix;
00091         core::matrix4 mWorldViewProjMatrix;
00092         
00093         core::matrix4 mInverseWorldMatrix;
00094         core::matrix4 mInverseViewMatrix;
00095 
00096         core::matrix4 mInverseWorldViewMatrix;
00097         
00098         core::matrix4 mInverseTransposeWorldMatrix;
00099         
00100         core::matrix4 mInverseTransposeWorldViewMatrix;
00101 
00102         core::vector3d mCameraPosition;
00103         core::vector3d mCameraPositionObjectSpace;
00104 
00105         core::vector3d mLightPosition;
00106         core::vector3d mLightPositionObjectSpace;
00107         core::vector3d mLightPositionViewSpace;
00108 
00109         core::vector3d mLightDirection;
00110         core::vector3d mLightDirectionObjectSpace;
00111         core::vector3d mLightDirectionViewSpace;
00112 
00113         Color mAmbientLightColor;
00114         Color mFogColor;
00115 
00116         bool mWorldMatrixDirty;
00117         bool mViewMatrixDirty;
00118         bool mProjMatrixDirty;
00119 
00120         bool mWorldViewMatrixDirty;
00121         bool mViewProjMatrixDirty;
00122         bool mWorldViewProjMatrixDirty;
00123 
00124         bool mInverseWorldMatrixDirty;
00125         bool mInverseViewMatrixDirty;
00126         
00127         bool mInverseWorldViewMatrixDirty;
00128 
00129         bool mInverseTransposeWorldMatrixDirty;
00130         bool mInverseTransposeWorldViewMatrixDirty;
00131 
00132         bool mCameraPositionDirty;
00133         bool mCameraPositionObjectSpaceDirty;
00134 
00135         Renderable* mCurrentRenderable;
00136         Camera* mCurrentCamera;
00137         Light* mCurrentLight;
00138         Viewport* mCurrentViewport;
00139         
00140         std::list<Light*> mLights;
00141 };
00142 
00143 } // end namespace render
00144 
00145 #endif

The KG Game Engine
The KG Game Engine Documentation © 2006-2011 by Kat'Oun. Generated on Sat Jul 2 2011 00:50:05 by Doxygen (1.7.4)