From 42b33d9df346c80949a8306952fe0877b71607f7 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Mon, 29 Sep 2025 19:52:31 +0200 Subject: [PATCH 1/3] refactor(terrain): Simplify cloud movement clamping --- .../Source/W3DDevice/GameClient/W3DShaderManager.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp index a3df459813..c2a948d8da 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp @@ -1601,10 +1601,14 @@ void TerrainShader2Stage::updateCloud() m_xOffset += m_xSlidePerSecond * frame_time; m_yOffset += m_ySlidePerSecond * frame_time; - while (m_xOffset > 1) m_xOffset -= 1; - while (m_yOffset > 1) m_yOffset -= 1; - while (m_xOffset < -1) m_xOffset += 1; - while (m_yOffset < -1) m_yOffset += 1; + if (m_xOffset > 1.0f) + m_xOffset -= (Int)m_xOffset; + if (m_yOffset > 1.0f) + m_yOffset -= (Int)m_yOffset; + if (m_xOffset < -1.0f) + m_xOffset += (Int)-m_xOffset; + if (m_yOffset < -1.0f) + m_yOffset += (Int)-m_yOffset; } void TerrainShader2Stage::updateNoise1(D3DXMATRIX *destMatrix,D3DXMATRIX *curViewInverse, Bool doUpdate) From 3e6cc79bbd75d297f0ce052f13ab09920d29cb2d Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Tue, 30 Sep 2025 19:28:36 +0200 Subject: [PATCH 2/3] Simplify that code even more --- .../Source/W3DDevice/GameClient/W3DShaderManager.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp index c2a948d8da..08fcd60a6f 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp @@ -1601,14 +1601,9 @@ void TerrainShader2Stage::updateCloud() m_xOffset += m_xSlidePerSecond * frame_time; m_yOffset += m_ySlidePerSecond * frame_time; - if (m_xOffset > 1.0f) - m_xOffset -= (Int)m_xOffset; - if (m_yOffset > 1.0f) - m_yOffset -= (Int)m_yOffset; - if (m_xOffset < -1.0f) - m_xOffset += (Int)-m_xOffset; - if (m_yOffset < -1.0f) - m_yOffset += (Int)-m_yOffset; + // This moves offsets towards zero when smaller -1.0 or larger 1.0 + m_xOffset -= (Int)m_xOffset; + m_yOffset -= (Int)m_yOffset; } void TerrainShader2Stage::updateNoise1(D3DXMATRIX *destMatrix,D3DXMATRIX *curViewInverse, Bool doUpdate) From 87a27cf2e661a6dcd361a6c90e576c9912bbcecd Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Tue, 30 Sep 2025 19:28:56 +0200 Subject: [PATCH 3/3] Replicate in Generals --- .../Source/W3DDevice/GameClient/W3DShaderManager.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp index a219e4912d..8c096a88b1 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp @@ -1336,10 +1336,9 @@ void TerrainShader2Stage::updateCloud() m_xOffset += m_xSlidePerSecond * frame_time; m_yOffset += m_ySlidePerSecond * frame_time; - while (m_xOffset > 1) m_xOffset -= 1; - while (m_yOffset > 1) m_yOffset -= 1; - while (m_xOffset < -1) m_xOffset += 1; - while (m_yOffset < -1) m_yOffset += 1; + // This moves offsets towards zero when smaller -1.0 or larger 1.0 + m_xOffset -= (Int)m_xOffset; + m_yOffset -= (Int)m_yOffset; } void TerrainShader2Stage::updateNoise1(D3DXMATRIX *destMatrix,D3DXMATRIX *curViewInverse, Bool doUpdate)