16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 17:59:18 +02:00

support rain shader in experimental

This commit is contained in:
Wls50
2025-11-22 17:06:06 +01:00
committed by Hirek
parent ac62f23f0f
commit 915e4c769e
7 changed files with 270 additions and 12 deletions

View File

@@ -188,6 +188,45 @@ void GbufferBlitPass::UpdateConstants(nvrhi::ICommandList* command_list,
constants.m_altitude = Global.pCamera.Pos.y;
constants.m_time = Timer::GetTime();
{
float percipitation_intensity = glm::saturate(Global.Overcast - 1.);
constants.m_rain_params.x = percipitation_intensity; // % amount of droplets
constants.m_rain_params.y =
glm::mix(15., 1., percipitation_intensity); // Regeneration time
static glm::vec4 wiper_timer_out;
static glm::vec4 wiper_timer_return;
if (TDynamicObject const* owner = Global.pCamera.m_owner;
owner && !!owner->MoverParameters->CabActive) {
for (int i = 0; i < 4; ++i) {
if (i < owner->dWiperPos.size()) {
int index = owner->MoverParameters->CabActive > 0
? i
: static_cast<int>(owner->dWiperPos.size() - 1) - i;
constants.m_wiper_pos[i] = owner->dWiperPos[index];
if (owner->dWiperPos[index] > 0. && owner->wiperDirection[index]) {
constants.m_wiper_pos[i] += 1.;
}
if (owner->dWiperPos[index] < .025) {
wiper_timer_out[i] = constants.m_time;
}
if (owner->dWiperPos[index] > .975) {
wiper_timer_return[i] = constants.m_time;
}
constants.m_wiper_timer_out[i] = wiper_timer_out[i];
constants.m_wiper_timer_return[i] = wiper_timer_return[i];
} else {
constants.m_wiper_pos[i] = 0.;
wiper_timer_out[i] = constants.m_wiper_timer_out[i] = -1000.;
wiper_timer_return[i] = constants.m_wiper_timer_return[i] = -1000.;
}
}
} else {
constants.m_wiper_pos = glm::vec4{0.};
wiper_timer_out = constants.m_wiper_timer_out = glm::vec4{-1000.};
wiper_timer_return = constants.m_wiper_timer_return = glm::vec4{-1000.};
}
}
command_list->writeBuffer(m_draw_constants, &constants, sizeof(constants));
}