From 679580a394facee46f7ec1bf5aae96af56f3923a Mon Sep 17 00:00:00 2001 From: Rezmason Date: Sat, 24 Sep 2022 07:16:01 -0700 Subject: [PATCH] =?UTF-8?q?Theatrics=E2=80=94=20first=20column=20is=20in?= =?UTF-8?q?=20the=20middle,=20next=20one's=20over=20to=20the=20side,=20the?= =?UTF-8?q?n=20they=20all=20join=20in?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shaders/glsl/rainPass.intro.frag.glsl | 12 ++++++++++-- shaders/wgsl/rainPass.wgsl | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/shaders/glsl/rainPass.intro.frag.glsl b/shaders/glsl/rainPass.intro.frag.glsl index b09bc9f..410d50c 100644 --- a/shaders/glsl/rainPass.intro.frag.glsl +++ b/shaders/glsl/rainPass.intro.frag.glsl @@ -41,8 +41,16 @@ vec4 computeResult(float simTime, bool isFirstFrame, vec2 glyphPos, vec2 screenP return vec4(1., 0., 0., 0.); } - float columnTimeOffset = randomFloat(vec2(glyphPos.x, 0.)) * -10.; - columnTimeOffset += sin(glyphPos.x / numColumns * PI) - 1.; + float columnTimeOffset; + int column = int(glyphPos.x); + if (column == int(numColumns / 2.)) { + columnTimeOffset = -1.; + } else if (column == int(numColumns * 0.75)) { + columnTimeOffset = -2.; + } else { + columnTimeOffset = randomFloat(vec2(glyphPos.x, 0.)) * -4.; + columnTimeOffset += (sin(glyphPos.x / numColumns * PI) - 1.) * 2. - 2.5; + } float introTime = (simTime + columnTimeOffset) * fallSpeed / numRows * 100.; vec4 result = vec4(introTime, 0., 0., 0.); diff --git a/shaders/wgsl/rainPass.wgsl b/shaders/wgsl/rainPass.wgsl index eb42d09..9935ca2 100644 --- a/shaders/wgsl/rainPass.wgsl +++ b/shaders/wgsl/rainPass.wgsl @@ -221,8 +221,16 @@ fn computeIntro (simTime : f32, isFirstFrame : bool, glyphPos : vec2, scree return vec4(1.0, 0.0, 0.0, 0.0); } - var columnTimeOffset = randomFloat(glyphPos) * -10.0; - columnTimeOffset += sin(glyphPos.x / config.gridSize.x * PI) - 1.0; + var columnTimeOffset = 0.0; + var column = i32(glyphPos.x); + if (column == i32(config.gridSize.y / 2.0)) { + columnTimeOffset = -1.0; + } else if (column == i32(config.gridSize.y * 0.75)) { + columnTimeOffset = -2.0; + } else { + columnTimeOffset = randomFloat(vec2(glyphPos.x, 0.)) * -4.; + columnTimeOffset += (sin(glyphPos.x / config.gridSize.y * PI) - 1.) * 2. - 2.5; + } var introTime = (simTime + columnTimeOffset) * config.fallSpeed / config.gridSize.y * 100.0; var result = vec4(introTime, 0.0, 0.0, 0.0);