diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-12-02 14:24:58 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-12-02 14:24:58 +0200 |
commit | cd1f604ffe6130fd7d3a8358a8cebd7f821f9a11 (patch) | |
tree | 01077b87b747e9c72d40656c274d4781542a755e /src/game.cpp | |
parent | 566f7f638a00a698a25b73adc2e619fe63e1a802 (diff) | |
download | minetest-cd1f604ffe6130fd7d3a8358a8cebd7f821f9a11.tar.gz minetest-cd1f604ffe6130fd7d3a8358a8cebd7f821f9a11.tar.bz2 minetest-cd1f604ffe6130fd7d3a8358a8cebd7f821f9a11.zip |
Handle day-night transition in shader and make light sources brighter when shaders are used
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/game.cpp b/src/game.cpp index 0c1a21370..fc780a808 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -841,13 +841,15 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter Sky *m_sky; bool *m_force_fog_off; f32 *m_fog_range; + Client *m_client; public: GameGlobalShaderConstantSetter(Sky *sky, bool *force_fog_off, - f32 *fog_range): + f32 *fog_range, Client *client): m_sky(sky), m_force_fog_off(force_fog_off), - m_fog_range(fog_range) + m_fog_range(fog_range), + m_client(client) {} ~GameGlobalShaderConstantSetter() {} @@ -873,10 +875,12 @@ public: if(*m_force_fog_off) fog_distance = 10000*BS; services->setPixelShaderConstant("fogDistance", &fog_distance, 1); - } -private: - IrrlichtDevice *m_device; + // Day-night ratio + u32 daynight_ratio = m_client->getEnv().getDayNightRatio(); + float daynight_ratio_f = (float)daynight_ratio / 1000.0; + services->setPixelShaderConstant("dayNightRatio", &daynight_ratio_f, 1); + } }; void the_game( @@ -1307,8 +1311,8 @@ void the_game( /* Shader constants */ - shsrc->addGlobalConstantSetter( - new GameGlobalShaderConstantSetter(sky, &force_fog_off, &fog_range)); + shsrc->addGlobalConstantSetter(new GameGlobalShaderConstantSetter( + sky, &force_fog_off, &fog_range, &client)); /* Main loop |