From 1516f825548e435045040fef3486ec04bd221c5f Mon Sep 17 00:00:00 2001 From: Rezmason Date: Sat, 30 Oct 2021 08:41:00 -0700 Subject: [PATCH] Adding random functions to rain render pass shader --- shaders/wgsl/rainRenderPass.wgsl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/shaders/wgsl/rainRenderPass.wgsl b/shaders/wgsl/rainRenderPass.wgsl index a80f665..344886e 100644 --- a/shaders/wgsl/rainRenderPass.wgsl +++ b/shaders/wgsl/rainRenderPass.wgsl @@ -1,6 +1,8 @@ let NUM_VERTICES_PER_QUAD:i32 = 6; let PI:f32 = 3.14159265359; let TWO_PI:f32 = 6.28318530718; +let SQRT_2:f32 = 1.4142135623730951; +let SQRT_5:f32 = 2.23606797749979; [[block]] struct Config { numColumns: i32; @@ -30,6 +32,25 @@ let TWO_PI:f32 = 6.28318530718; }; [[group(0), binding(5)]] var scene:Scene; +// Helper functions for generating randomness, borrowed from elsewhere + +fn randomFloat( uv:vec2 ) -> f32 { + let a = 12.9898; + let b = 78.233; + let c = 43758.5453; + let dt = dot( uv, vec2( a,b ) ); + let sn = dt % PI; + return fract(sin(sn) * c); +} + +fn randomVec2( uv:vec2 ) -> vec2 { + return fract(vec2(sin(uv.x * 591.32 + uv.y * 154.077), cos(uv.x * 391.32 + uv.y * 49.077))); +} + +fn wobble(x:f32) -> f32 { + return x + 0.3 * sin(SQRT_2 * x) + 0.2 * sin(SQRT_5 * x); +} + // Vertex shader struct VertexOutput {