mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Handle day-night transition in shader and make light sources brighter when shaders are used
This commit is contained in:
parent
566f7f638a
commit
cd1f604ffe
7 changed files with 132 additions and 50 deletions
18
src/game.cpp
18
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue