#ifndef _SKYPREETHAM_H__ #define _SKYPREETHAM_H__ #include "glInterface.h" #include "common.h" #include #include namespace CHCDemoEngine{ class Vector3; class SceneEntity; class RenderState; class Camera; } class SkyPreetham { public: /// Constructor taking sky turbitity as parameter and the sky dome geometry SkyPreetham(float turbitity, CHCDemoEngine::SceneEntity *skyDome); virtual ~SkyPreetham(); void RenderSkyDome(const CHCDemoEngine::Vector3 &sunDir, CHCDemoEngine::Camera *camera, CHCDemoEngine::RenderState *state); static void Init(CGcontext context); void ComputeFactors(const CHCDemoEngine::Vector3 &sunDir, CHCDemoEngine::Vector3 &zenithColor, std::vector &ABCDE, std::pair &sunThetha) const; void ComputeSunColor(const CHCDemoEngine::Vector3 &sunDir, CHCDemoEngine::Vector3 &ambient, CHCDemoEngine::Vector3 &diffuse) const; protected: void RenderSunDisk(const CHCDemoEngine::Vector3 &lightDir, CHCDemoEngine::Camera *camera); void CreateSunQuad(); /// Members. /* FEffect* mEffect; FEffect* mSunEffect; FTexture2D* mSunTexture; FVertexBuffer* mSunQuad; */ CHCDemoEngine::SceneEntity *mSkyDome; float mTurbidity; }; #endif //_SKYPREETHAM_H__