pub const SHADER_UNIFORMS_WGSL: &str = r#"
struct ShaderUniforms {
// scalar slot 0
time: f32,
fps: f32,
frame: f32,
progress: f32,
// scalar slot 1
bass: f32,
mid: f32,
treb: f32,
vol: f32,
// scalar slot 2
bass_att: f32,
mid_att: f32,
treb_att: f32,
vol_att: f32,
// scalar slot 3
blur1_min: f32,
blur1_max: f32,
blur2_min: f32,
blur2_max: f32,
// scalar slot 4
blur3_min: f32,
blur3_max: f32,
gamma_adj: f32,
_reserved1: f32,
// scalar slot 5 — echo + anaglyph stereo
echo_zoom: f32,
echo_alpha: f32,
echo_orient: f32,
red_blue_stereo: f32,
// vec4 slots
aspect: vec4<f32>,
texsize: vec4<f32>,
rand_preset: vec4<f32>,
rand_frame: vec4<f32>,
slow_roam_cos: vec4<f32>,
slow_roam_sin: vec4<f32>,
roam_cos: vec4<f32>,
roam_sin: vec4<f32>,
// Per-frame RGB tint (`.xyz`); `.w` reserved.
hue_shader: vec4<f32>,
// q1..q32 packed as 8 × vec4
q: array<vec4<f32>, 8>,
}
@group(0) @binding(0)
var<uniform> uniforms: ShaderUniforms;
"#;Expand description
WGSL struct declaration mirroring ShaderUniforms plus the standard
@group(0) @binding(0) uniform binding.
Field order/types are identical; this string is concatenated to the front of every translated user shader.