mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Fog effect when camera is inside cloud
Fixes issue #3576 * Clouds now take camera position as 3D, not 2D * Cloud grid filling extracted to gridFilled method * Clouds detect whether camera is inside cloud * Camera in cloud changes fog by overriding sky colors with cloud color * Sun, moon and stars can be temporarily disabled with setBodiesVisible * Disabling fog also disables all "inside cloud" behaviors
This commit is contained in:
parent
61a3de42fd
commit
6bedb6de40
7 changed files with 84 additions and 30 deletions
|
@ -233,6 +233,10 @@ void Sky::render()
|
|||
vertices[3] = video::S3DVertex(-1, -1.0, 1, 0, 1, 0, c, t, o);
|
||||
driver->drawIndexedTriangleFan(&vertices[0], 4, indices, 2);
|
||||
|
||||
// If sun, moon and stars are (temporarily) disabled, abort here
|
||||
if (!m_bodies_visible)
|
||||
return;
|
||||
|
||||
driver->setMaterial(m_materials[2]);
|
||||
|
||||
// Draw sunrise/sunset horizon glow texture (textures/base/pack/sunrisebg.png)
|
||||
|
@ -412,8 +416,8 @@ void Sky::render()
|
|||
}
|
||||
|
||||
// Draw stars
|
||||
driver->setMaterial(m_materials[1]);
|
||||
do {
|
||||
driver->setMaterial(m_materials[1]);
|
||||
float starbrightness = MYMAX(0, MYMIN(1,
|
||||
(0.285 - fabs(wicked_time_of_day < 0.5 ?
|
||||
wicked_time_of_day : (1.0 - wicked_time_of_day))) * 10));
|
||||
|
@ -501,6 +505,7 @@ void Sky::update(float time_of_day, float time_brightness,
|
|||
m_time_of_day = time_of_day;
|
||||
m_time_brightness = time_brightness;
|
||||
m_sunlight_seen = sunlight_seen;
|
||||
m_bodies_visible = true;
|
||||
|
||||
bool is_dawn = (time_brightness >= 0.20 && time_brightness < 0.35);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue