@@ -909,8 +909,8 @@ async fn init() -> anyhow::Result<()> {
909909 let du = uv[ 0 ] - prev_uv[ 0 ] ;
910910 let dv = uv[ 1 ] - prev_uv[ 1 ] ;
911911 let speed = ( ( du * du + dv * dv) . sqrt ( ) / ( dt_sec + 1e-5 ) ) . min ( 10.0 ) ;
912- let target = ( ( speed * 0.25 ) + if ms . down { 0.6 } else { 0.0 } )
913- . clamp ( 0.0 , 1.0 ) ;
912+ let target =
913+ ( ( speed * 0.25 ) + if ms . down { 0.6 } else { 0.0 } ) . clamp ( 0.0 , 1.0 ) ;
914914 swirl_energy = 0.85 * swirl_energy + 0.15 * target;
915915 prev_uv = uv;
916916 drop ( ms) ;
@@ -932,10 +932,10 @@ async fn init() -> anyhow::Result<()> {
932932 // Direct sound↔visual link: map position to per-voice mix and fx
933933 let dist = ( pos. x * pos. x + pos. z * pos. z ) . sqrt ( ) ;
934934 // Delay send increases with |x|, reverb with radial distance
935- let mut d_amt = ( 0.15 + 0.85 * pos . x . abs ( ) . min ( 1.0 ) )
936- . clamp ( 0.0 , 1.0 ) ;
937- let mut r_amt = ( 0.25 + 0.75 * ( dist / 2.5 ) . clamp ( 0.0 , 1.0 ) )
938- . clamp ( 0.0 , 1.2 ) ;
935+ let mut d_amt =
936+ ( 0.15 + 0.85 * pos . x . abs ( ) . min ( 1.0 ) ) . clamp ( 0.0 , 1.0 ) ;
937+ let mut r_amt =
938+ ( 0.25 + 0.75 * ( dist / 2.5 ) . clamp ( 0.0 , 1.0 ) ) . clamp ( 0.0 , 1.2 ) ;
939939 // Boost sends with swirl energy for pronounced movement effect
940940 let boost = 1.0 + 0.8 * swirl_energy;
941941 d_amt = ( d_amt * boost) . clamp ( 0.0 , 1.2 ) ;
@@ -1006,8 +1006,7 @@ async fn init() -> anyhow::Result<()> {
10061006 colors[ i] . z = ( colors[ i] . z * 1.4 ) . min ( 1.0 ) ;
10071007 }
10081008 }
1009- let mut scales: Vec < f32 > =
1010- Vec :: with_capacity ( 3 + ring_count * 3 + 16 ) ;
1009+ let mut scales: Vec < f32 > = Vec :: with_capacity ( 3 + ring_count * 3 + 16 ) ;
10111010 scales. push ( BASE_SCALE + ps[ 0 ] * SCALE_PULSE_MULTIPLIER ) ;
10121011 scales. push ( BASE_SCALE + ps[ 1 ] * SCALE_PULSE_MULTIPLIER ) ;
10131012 scales. push ( BASE_SCALE + ps[ 2 ] * SCALE_PULSE_MULTIPLIER ) ;
@@ -1086,8 +1085,9 @@ async fn init() -> anyhow::Result<()> {
10861085
10871086 if let Some ( g) = & mut gpu {
10881087 g. set_camera ( cam_eye, cam_target) ;
1089- // Feed mouse-driven swirl into GPU uniforms
1090- g. set_swirl ( uv, 1.0 , swirl_energy > 0.05 ) ;
1088+ // Feed mouse position persistently; movement boosts strength
1089+ let strength = 0.35 + 1.0 * swirl_energy;
1090+ g. set_swirl ( uv, strength, true ) ;
10911091 // Keep WebGPU surface sized to canvas backing size
10921092 let w = canvas_for_tick. width ( ) ;
10931093 let h = canvas_for_tick. height ( ) ;
0 commit comments