#ifndef _SKYPREETHAM_H__ #define _SKYPREETHAM_H__ #include "common.h" #include "ShaderProgram.h" namespace CHCDemoEngine { class Vector3; class SceneEntity; class RenderState; class Camera; class ShaderProgram; } class SkyPreetham { public: /// Constructor taking sky turbitity as parameter and the sky dome geometry SkyPreetham(float turbitity, CHCDemoEngine::SceneEntity *skyDome); ~SkyPreetham(); void RenderSkyDome(const CHCDemoEngine::Vector3 &sunDir, CHCDemoEngine::Camera *camera, CHCDemoEngine::RenderState *state, bool scaleToRange, float skyDomeScaleFactor); 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, bool scaleToRange) const; void InitCG(); protected: void RenderSunDisk(const CHCDemoEngine::Vector3 &lightDir, CHCDemoEngine::Camera *camera); void CreateSunQuad(); ////////// /* FEffect* mEffect; FEffect* mSunEffect; FTexture2D* mSunTexture; FVertexBuffer* mSunQuad; */ CHCDemoEngine::SceneEntity *mSkyDome; /// the turbidity of the sky float mTurbidity; CHCDemoEngine::ShaderProgram *mSkyVtxProgram; CHCDemoEngine::ShaderProgram *mSkyFragProgram; }; #endif //_SKYPREETHAM_H__