diff options
Diffstat (limited to 'assets/final')
| -rw-r--r-- | assets/final/demo_assets.txt | 33 | ||||
| -rw-r--r-- | assets/final/music/BASS_GUITAR_FEEL.spec (renamed from assets/final/BASS_GUITAR_FEEL.spec) | bin | 51216 -> 51216 bytes | |||
| -rw-r--r-- | assets/final/music/BASS_SYNTH_1.spec (renamed from assets/final/BASS_SYNTH_1.spec) | bin | 32784 -> 32784 bytes | |||
| -rw-r--r-- | assets/final/music/CRASH_DMX.spec (renamed from assets/final/CRASH_DMX.spec) | bin | 217104 -> 217104 bytes | |||
| -rw-r--r-- | assets/final/music/HIHAT_CLOSED_DMX.spec (renamed from assets/final/HIHAT_CLOSED_DMX.spec) | bin | 20496 -> 20496 bytes | |||
| -rw-r--r-- | assets/final/music/HIHAT_CLOSED_DUFF.spec (renamed from assets/final/HIHAT_CLOSED_DUFF.spec) | bin | 12304 -> 12304 bytes | |||
| -rw-r--r-- | assets/final/music/HIHAT_CLOSED_ER_1.spec (renamed from assets/final/HIHAT_CLOSED_ER_1.spec) | bin | 16400 -> 16400 bytes | |||
| -rw-r--r-- | assets/final/music/KICK_606.spec (renamed from assets/final/KICK_606.spec) | bin | 139280 -> 139280 bytes | |||
| -rw-r--r-- | assets/final/music/KICK_90S_2.spec (renamed from assets/final/KICK_90S_2.spec) | bin | 30736 -> 30736 bytes | |||
| -rw-r--r-- | assets/final/music/RIDE_CUP_1.spec (renamed from assets/final/RIDE_CUP_1.spec) | bin | 3577872 -> 3577872 bytes | |||
| -rw-r--r-- | assets/final/music/SNARE_808.spec (renamed from assets/final/SNARE_808.spec) | bin | 120848 -> 120848 bytes | |||
| -rw-r--r-- | assets/final/music/SNARE_909_TUNE_8.spec (renamed from assets/final/SNARE_909_TUNE_8.spec) | bin | 43024 -> 43024 bytes | |||
| -rw-r--r-- | assets/final/music/SNARE_BLUE_ROOM.spec (renamed from assets/final/SNARE_BLUE_ROOM.spec) | bin | 43024 -> 43024 bytes | |||
| -rw-r--r-- | assets/final/music/SPLASH_GROUNDED.spec (renamed from assets/final/SPLASH_GROUNDED.spec) | bin | 57360 -> 57360 bytes | |||
| -rw-r--r-- | assets/final/music/SYNTH_BASS_DISTORT.spec (renamed from assets/final/SYNTH_BASS_DISTORT.spec) | bin | 32784 -> 32784 bytes | |||
| -rw-r--r-- | assets/final/shaders/chroma_aberration.wgsl | 14 | ||||
| -rw-r--r-- | assets/final/shaders/circle_mask_compute.wgsl | 14 | ||||
| -rw-r--r-- | assets/final/shaders/circle_mask_render.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/compute/gen_blend.wgsl | 29 | ||||
| -rw-r--r-- | assets/final/shaders/compute/gen_grid.wgsl | 24 | ||||
| -rw-r--r-- | assets/final/shaders/compute/gen_mask.wgsl | 27 | ||||
| -rw-r--r-- | assets/final/shaders/compute/gen_noise.wgsl | 26 | ||||
| -rw-r--r-- | assets/final/shaders/compute/gen_perlin.wgsl | 44 | ||||
| -rw-r--r-- | assets/final/shaders/distort.wgsl | 14 | ||||
| -rw-r--r-- | assets/final/shaders/ellipse.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/gaussian_blur.wgsl | 14 | ||||
| -rw-r--r-- | assets/final/shaders/main_shader.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/particle_compute.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/particle_render.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/particle_spray_compute.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/passthrough.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/solarize.wgsl | 10 | ||||
| -rw-r--r-- | assets/final/shaders/vignette.wgsl | 14 | ||||
| -rw-r--r-- | assets/final/test_demo_assets.txt | 6 |
34 files changed, 200 insertions, 139 deletions
diff --git a/assets/final/demo_assets.txt b/assets/final/demo_assets.txt index 05eee17..96f86f9 100644 --- a/assets/final/demo_assets.txt +++ b/assets/final/demo_assets.txt @@ -1,22 +1,22 @@ # Asset Name, Compression Type, Filename/Placeholder, Description # --- Drum & Percussion Samples --- -KICK_1, NONE, KICK_606.spec, "606 Kick" -KICK_2, NONE, KICK_90S_2.spec, "90s Kick" -SNARE_1, NONE, SNARE_808.spec, "808 Snare" -SNARE_2, NONE, SNARE_909_TUNE_8.spec, "909 Snare" -SNARE_3, NONE, SNARE_BLUE_ROOM.spec, "Snare Blue Room" -HIHAT_1, NONE, HIHAT_CLOSED_DMX.spec, "DMX Closed Hi-hat" -HIHAT_2, NONE, HIHAT_CLOSED_DUFF.spec, "Duff Closed Hi-hat" -HIHAT_3, NONE, HIHAT_CLOSED_ER_1.spec, "ER-1 Closed Hi-hat" -CRASH_1, NONE, CRASH_DMX.spec, "DMX Crash" -RIDE_1, NONE, RIDE_CUP_1.spec, "Ride Cymbal" -SPLASH_1, NONE, SPLASH_GROUNDED.spec, "Splash Cymbal" +KICK_1, NONE, music/KICK_606.spec, "606 Kick" +KICK_2, NONE, music/KICK_90S_2.spec, "90s Kick" +SNARE_1, NONE, music/SNARE_808.spec, "808 Snare" +SNARE_2, NONE, music/SNARE_909_TUNE_8.spec, "909 Snare" +SNARE_3, NONE, music/SNARE_BLUE_ROOM.spec, "Snare Blue Room" +HIHAT_1, NONE, music/HIHAT_CLOSED_DMX.spec, "DMX Closed Hi-hat" +HIHAT_2, NONE, music/HIHAT_CLOSED_DUFF.spec, "Duff Closed Hi-hat" +HIHAT_3, NONE, music/HIHAT_CLOSED_ER_1.spec, "ER-1 Closed Hi-hat" +CRASH_1, NONE, music/CRASH_DMX.spec, "DMX Crash" +RIDE_1, NONE, music/RIDE_CUP_1.spec, "Ride Cymbal" +SPLASH_1, NONE, music/SPLASH_GROUNDED.spec, "Splash Cymbal" # --- Melodic Samples --- -BASS_1, NONE, BASS_GUITAR_FEEL.spec, "Bass Guitar" -BASS_2, NONE, BASS_SYNTH_1.spec, "Synth Bass 1" -BASS_3, NONE, SYNTH_BASS_DISTORT.spec, "Distorted Synth Bass" +BASS_1, NONE, music/BASS_GUITAR_FEEL.spec, "Bass Guitar" +BASS_2, NONE, music/BASS_SYNTH_1.spec, "Synth Bass 1" +BASS_3, NONE, music/SYNTH_BASS_DISTORT.spec, "Distorted Synth Bass" # --- Procedural Textures --- NOISE_TEX, PROC(gen_noise, 1234, 16), _, "Procedural noise texture for bump mapping" @@ -52,6 +52,11 @@ SHADER_MESH, NONE, shaders/mesh_render.wgsl, "Mesh Rasterization Shader" MESH_CUBE, NONE, test_mesh.obj, "A simple cube mesh" DODECAHEDRON, NONE, dodecahedron.obj, "A dodecahedron mesh" SHADER_VIGNETTE, NONE, shaders/vignette.wgsl, "Vignette Shader" +SHADER_COMPUTE_GEN_NOISE, NONE, shaders/compute/gen_noise.wgsl, "GPU Noise Compute Shader" +SHADER_COMPUTE_GEN_PERLIN, NONE, shaders/compute/gen_perlin.wgsl, "GPU Perlin Noise Compute Shader" +SHADER_COMPUTE_GEN_GRID, NONE, shaders/compute/gen_grid.wgsl, "GPU Grid Compute Shader" +SHADER_COMPUTE_GEN_BLEND, NONE, shaders/compute/gen_blend.wgsl, "GPU Blend Composite Shader" +SHADER_COMPUTE_GEN_MASK, NONE, shaders/compute/gen_mask.wgsl, "GPU Mask Composite Shader" CIRCLE_MASK_COMPUTE_SHADER, NONE, shaders/circle_mask_compute.wgsl, "Circle mask compute shader" CIRCLE_MASK_RENDER_SHADER, NONE, shaders/circle_mask_render.wgsl, "Circle mask render shader" MASKED_CUBE_SHADER, NONE, shaders/masked_cube.wgsl, "Masked cube shader" diff --git a/assets/final/BASS_GUITAR_FEEL.spec b/assets/final/music/BASS_GUITAR_FEEL.spec Binary files differindex 54f49a6..54f49a6 100644 --- a/assets/final/BASS_GUITAR_FEEL.spec +++ b/assets/final/music/BASS_GUITAR_FEEL.spec diff --git a/assets/final/BASS_SYNTH_1.spec b/assets/final/music/BASS_SYNTH_1.spec Binary files differindex 33bc0a0..33bc0a0 100644 --- a/assets/final/BASS_SYNTH_1.spec +++ b/assets/final/music/BASS_SYNTH_1.spec diff --git a/assets/final/CRASH_DMX.spec b/assets/final/music/CRASH_DMX.spec Binary files differindex 45ee52d..45ee52d 100644 --- a/assets/final/CRASH_DMX.spec +++ b/assets/final/music/CRASH_DMX.spec diff --git a/assets/final/HIHAT_CLOSED_DMX.spec b/assets/final/music/HIHAT_CLOSED_DMX.spec Binary files differindex 8fce1d2..8fce1d2 100644 --- a/assets/final/HIHAT_CLOSED_DMX.spec +++ b/assets/final/music/HIHAT_CLOSED_DMX.spec diff --git a/assets/final/HIHAT_CLOSED_DUFF.spec b/assets/final/music/HIHAT_CLOSED_DUFF.spec Binary files differindex f738271..f738271 100644 --- a/assets/final/HIHAT_CLOSED_DUFF.spec +++ b/assets/final/music/HIHAT_CLOSED_DUFF.spec diff --git a/assets/final/HIHAT_CLOSED_ER_1.spec b/assets/final/music/HIHAT_CLOSED_ER_1.spec Binary files differindex bb03f5e..bb03f5e 100644 --- a/assets/final/HIHAT_CLOSED_ER_1.spec +++ b/assets/final/music/HIHAT_CLOSED_ER_1.spec diff --git a/assets/final/KICK_606.spec b/assets/final/music/KICK_606.spec Binary files differindex 10af84a..10af84a 100644 --- a/assets/final/KICK_606.spec +++ b/assets/final/music/KICK_606.spec diff --git a/assets/final/KICK_90S_2.spec b/assets/final/music/KICK_90S_2.spec Binary files differindex 126409e..126409e 100644 --- a/assets/final/KICK_90S_2.spec +++ b/assets/final/music/KICK_90S_2.spec diff --git a/assets/final/RIDE_CUP_1.spec b/assets/final/music/RIDE_CUP_1.spec Binary files differindex 78867c1..78867c1 100644 --- a/assets/final/RIDE_CUP_1.spec +++ b/assets/final/music/RIDE_CUP_1.spec diff --git a/assets/final/SNARE_808.spec b/assets/final/music/SNARE_808.spec Binary files differindex 2923c3c..2923c3c 100644 --- a/assets/final/SNARE_808.spec +++ b/assets/final/music/SNARE_808.spec diff --git a/assets/final/SNARE_909_TUNE_8.spec b/assets/final/music/SNARE_909_TUNE_8.spec Binary files differindex 4693c05..4693c05 100644 --- a/assets/final/SNARE_909_TUNE_8.spec +++ b/assets/final/music/SNARE_909_TUNE_8.spec diff --git a/assets/final/SNARE_BLUE_ROOM.spec b/assets/final/music/SNARE_BLUE_ROOM.spec Binary files differindex b24baa7..b24baa7 100644 --- a/assets/final/SNARE_BLUE_ROOM.spec +++ b/assets/final/music/SNARE_BLUE_ROOM.spec diff --git a/assets/final/SPLASH_GROUNDED.spec b/assets/final/music/SPLASH_GROUNDED.spec Binary files differindex a919be4..a919be4 100644 --- a/assets/final/SPLASH_GROUNDED.spec +++ b/assets/final/music/SPLASH_GROUNDED.spec diff --git a/assets/final/SYNTH_BASS_DISTORT.spec b/assets/final/music/SYNTH_BASS_DISTORT.spec Binary files differindex 33bc0a0..33bc0a0 100644 --- a/assets/final/SYNTH_BASS_DISTORT.spec +++ b/assets/final/music/SYNTH_BASS_DISTORT.spec diff --git a/assets/final/shaders/chroma_aberration.wgsl b/assets/final/shaders/chroma_aberration.wgsl index bad3624..6c942b7 100644 --- a/assets/final/shaders/chroma_aberration.wgsl +++ b/assets/final/shaders/chroma_aberration.wgsl @@ -1,22 +1,14 @@ @group(0) @binding(0) var smplr: sampler; @group(0) @binding(1) var txt: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; -struct EffectParams { +#include "common_uniforms" +struct ChromaAberrationParams { offset_scale: f32, angle: f32, }; @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; -@group(0) @binding(3) var<uniform> params: EffectParams; +@group(0) @binding(3) var<uniform> params: ChromaAberrationParams; @vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> { var pos = array<vec2<f32>, 3>( diff --git a/assets/final/shaders/circle_mask_compute.wgsl b/assets/final/shaders/circle_mask_compute.wgsl index 1ed6c1e..484d3dd 100644 --- a/assets/final/shaders/circle_mask_compute.wgsl +++ b/assets/final/shaders/circle_mask_compute.wgsl @@ -1,16 +1,8 @@ // Circle mask compute shader // Generates a circular mask (1.0 inside, 0.0 outside) -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; -struct EffectParams { +#include "common_uniforms" +struct CircleMaskParams { radius: f32, _pad0: f32, _pad1: f32, @@ -18,7 +10,7 @@ struct EffectParams { }; @group(0) @binding(0) var<uniform> uniforms: CommonUniforms; -@group(0) @binding(1) var<uniform> params: EffectParams; +@group(0) @binding(1) var<uniform> params: CircleMaskParams; struct VSOutput { @builtin(position) position: vec4<f32>, diff --git a/assets/final/shaders/circle_mask_render.wgsl b/assets/final/shaders/circle_mask_render.wgsl index ce98f9c..cfa002e 100644 --- a/assets/final/shaders/circle_mask_render.wgsl +++ b/assets/final/shaders/circle_mask_render.wgsl @@ -4,15 +4,7 @@ @group(0) @binding(0) var mask_tex: texture_2d<f32>; @group(0) @binding(1) var mask_sampler: sampler; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/compute/gen_blend.wgsl b/assets/final/shaders/compute/gen_blend.wgsl new file mode 100644 index 0000000..9fc9e1e --- /dev/null +++ b/assets/final/shaders/compute/gen_blend.wgsl @@ -0,0 +1,29 @@ +// This file is part of the 64k demo project. +// GPU composite shader: Blend two textures. + +struct BlendParams { + width: u32, + height: u32, + blend_factor: f32, + _pad0: f32, +} + +@group(0) @binding(0) var output_tex: texture_storage_2d<rgba8unorm, write>; +@group(0) @binding(1) var<uniform> params: BlendParams; +@group(0) @binding(2) var input_a: texture_2d<f32>; +@group(0) @binding(3) var input_b: texture_2d<f32>; +@group(0) @binding(4) var tex_sampler: sampler; + +@compute @workgroup_size(8, 8, 1) +fn main(@builtin(global_invocation_id) id: vec3<u32>) { + if (id.x >= params.width || id.y >= params.height) { return; } + + let uv = vec2<f32>(f32(id.x) / f32(params.width), + f32(id.y) / f32(params.height)); + + let color_a = textureSampleLevel(input_a, tex_sampler, uv, 0.0); + let color_b = textureSampleLevel(input_b, tex_sampler, uv, 0.0); + let blended = mix(color_a, color_b, params.blend_factor); + + textureStore(output_tex, id.xy, blended); +} diff --git a/assets/final/shaders/compute/gen_grid.wgsl b/assets/final/shaders/compute/gen_grid.wgsl new file mode 100644 index 0000000..cc5e189 --- /dev/null +++ b/assets/final/shaders/compute/gen_grid.wgsl @@ -0,0 +1,24 @@ +// GPU procedural grid pattern generator. +// Simple grid lines with configurable spacing and thickness. + +struct GridParams { + width: u32, + height: u32, + grid_size: u32, + thickness: u32, +} + +@group(0) @binding(0) var output_tex: texture_storage_2d<rgba8unorm, write>; +@group(0) @binding(1) var<uniform> params: GridParams; + +@compute @workgroup_size(8, 8, 1) +fn main(@builtin(global_invocation_id) id: vec3<u32>) { + if (id.x >= params.width || id.y >= params.height) { return; } + + let on_line = (id.x % params.grid_size) < params.thickness || + (id.y % params.grid_size) < params.thickness; + + let val = select(0.0, 1.0, on_line); + + textureStore(output_tex, id.xy, vec4<f32>(val, val, val, 1.0)); +} diff --git a/assets/final/shaders/compute/gen_mask.wgsl b/assets/final/shaders/compute/gen_mask.wgsl new file mode 100644 index 0000000..1ce9f52 --- /dev/null +++ b/assets/final/shaders/compute/gen_mask.wgsl @@ -0,0 +1,27 @@ +// This file is part of the 64k demo project. +// GPU composite shader: Multiply texture A by texture B (masking). + +struct MaskParams { + width: u32, + height: u32, +} + +@group(0) @binding(0) var output_tex: texture_storage_2d<rgba8unorm, write>; +@group(0) @binding(1) var<uniform> params: MaskParams; +@group(0) @binding(2) var input_a: texture_2d<f32>; +@group(0) @binding(3) var input_b: texture_2d<f32>; +@group(0) @binding(4) var tex_sampler: sampler; + +@compute @workgroup_size(8, 8, 1) +fn main(@builtin(global_invocation_id) id: vec3<u32>) { + if (id.x >= params.width || id.y >= params.height) { return; } + + let uv = vec2<f32>(f32(id.x) / f32(params.width), + f32(id.y) / f32(params.height)); + + let color_a = textureSampleLevel(input_a, tex_sampler, uv, 0.0); + let mask_b = textureSampleLevel(input_b, tex_sampler, uv, 0.0); + let masked = color_a * mask_b; + + textureStore(output_tex, id.xy, masked); +} diff --git a/assets/final/shaders/compute/gen_noise.wgsl b/assets/final/shaders/compute/gen_noise.wgsl new file mode 100644 index 0000000..5c0babd --- /dev/null +++ b/assets/final/shaders/compute/gen_noise.wgsl @@ -0,0 +1,26 @@ +// GPU procedural noise texture generator. +// Uses compute shader for parallel texture generation. + +#include "math/noise" + +struct NoiseParams { + width: u32, + height: u32, + seed: f32, + frequency: f32, +} + +@group(0) @binding(0) var output_tex: texture_storage_2d<rgba8unorm, write>; +@group(0) @binding(1) var<uniform> params: NoiseParams; + +@compute @workgroup_size(8, 8, 1) +fn main(@builtin(global_invocation_id) id: vec3<u32>) { + if (id.x >= params.width || id.y >= params.height) { return; } + + let uv = vec2<f32>(f32(id.x) / f32(params.width), + f32(id.y) / f32(params.height)); + let p = uv * params.frequency + params.seed; + let noise = noise_2d(p); + + textureStore(output_tex, id.xy, vec4<f32>(noise, noise, noise, 1.0)); +} diff --git a/assets/final/shaders/compute/gen_perlin.wgsl b/assets/final/shaders/compute/gen_perlin.wgsl new file mode 100644 index 0000000..73816d6 --- /dev/null +++ b/assets/final/shaders/compute/gen_perlin.wgsl @@ -0,0 +1,44 @@ +// GPU procedural Perlin noise texture generator. +// Fractional Brownian Motion using value noise. + +#include "math/noise" + +struct PerlinParams { + width: u32, + height: u32, + seed: f32, + frequency: f32, + amplitude: f32, + amplitude_decay: f32, + octaves: u32, + _pad0: f32, // Padding for alignment +} + +@group(0) @binding(0) var output_tex: texture_storage_2d<rgba8unorm, write>; +@group(0) @binding(1) var<uniform> params: PerlinParams; + +@compute @workgroup_size(8, 8, 1) +fn main(@builtin(global_invocation_id) id: vec3<u32>) { + if (id.x >= params.width || id.y >= params.height) { return; } + + let uv = vec2<f32>(f32(id.x) / f32(params.width), + f32(id.y) / f32(params.height)); + + var value = 0.0; + var amplitude = params.amplitude; + var frequency = params.frequency; + var total_amp = 0.0; + + for (var o: u32 = 0u; o < params.octaves; o++) { + let p = uv * frequency + params.seed; + value += noise_2d(p) * amplitude; + total_amp += amplitude; + frequency *= 2.0; + amplitude *= params.amplitude_decay; + } + + value /= total_amp; + let clamped = clamp(value, 0.0, 1.0); + + textureStore(output_tex, id.xy, vec4<f32>(clamped, clamped, clamped, 1.0)); +} diff --git a/assets/final/shaders/distort.wgsl b/assets/final/shaders/distort.wgsl index cca01c4..5d35129 100644 --- a/assets/final/shaders/distort.wgsl +++ b/assets/final/shaders/distort.wgsl @@ -1,15 +1,15 @@ @group(0) @binding(0) var smplr: sampler; @group(0) @binding(1) var txt: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, +#include "common_uniforms" + +struct DistortParams { + strength: f32, + speed: f32, }; @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; +@group(0) @binding(3) var<uniform> params: DistortParams; @vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> { var pos = array<vec2<f32>, 3>( @@ -22,6 +22,6 @@ struct CommonUniforms { @fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> { let uv = p.xy / uniforms.resolution; - let dist = 0.1 * uniforms.audio_intensity * sin(uv.y * 20.0 + uniforms.time * 5.0); + let dist = params.strength * uniforms.audio_intensity * sin(uv.y * 20.0 + uniforms.time * params.speed * 5.0); return textureSample(txt, smplr, uv + vec2<f32>(dist, 0.0)); } diff --git a/assets/final/shaders/ellipse.wgsl b/assets/final/shaders/ellipse.wgsl index 9c6b0d9..05dfcfc 100644 --- a/assets/final/shaders/ellipse.wgsl +++ b/assets/final/shaders/ellipse.wgsl @@ -1,12 +1,4 @@ -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(0) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/gaussian_blur.wgsl b/assets/final/shaders/gaussian_blur.wgsl index 3b87b10..02156f7 100644 --- a/assets/final/shaders/gaussian_blur.wgsl +++ b/assets/final/shaders/gaussian_blur.wgsl @@ -1,22 +1,14 @@ @group(0) @binding(0) var smplr: sampler; @group(0) @binding(1) var txt: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; -struct EffectParams { +#include "common_uniforms" +struct GaussianBlurParams { strength: f32, _pad: f32, }; @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; -@group(0) @binding(3) var<uniform> params: EffectParams; +@group(0) @binding(3) var<uniform> params: GaussianBlurParams; @vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> { var pos = array<vec2<f32>, 3>( diff --git a/assets/final/shaders/main_shader.wgsl b/assets/final/shaders/main_shader.wgsl index 7155a6d..ab0278c 100644 --- a/assets/final/shaders/main_shader.wgsl +++ b/assets/final/shaders/main_shader.wgsl @@ -1,12 +1,4 @@ -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(0) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/particle_compute.wgsl b/assets/final/shaders/particle_compute.wgsl index 38a95e1..ae513c8 100644 --- a/assets/final/shaders/particle_compute.wgsl +++ b/assets/final/shaders/particle_compute.wgsl @@ -5,15 +5,7 @@ struct Particle { color: vec4<f32>, }; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(0) var<storage, read_write> particles: array<Particle>; @group(0) @binding(1) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/particle_render.wgsl b/assets/final/shaders/particle_render.wgsl index 9030a3a..6a2b636 100644 --- a/assets/final/shaders/particle_render.wgsl +++ b/assets/final/shaders/particle_render.wgsl @@ -5,15 +5,7 @@ struct Particle { color: vec4<f32>, }; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(0) var<storage, read> particles: array<Particle>; @group(0) @binding(1) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/particle_spray_compute.wgsl b/assets/final/shaders/particle_spray_compute.wgsl index b165971..a4041f2 100644 --- a/assets/final/shaders/particle_spray_compute.wgsl +++ b/assets/final/shaders/particle_spray_compute.wgsl @@ -5,15 +5,7 @@ struct Particle { color: vec4<f32>, }; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(0) var<storage, read_write> particles: array<Particle>; @group(0) @binding(1) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/passthrough.wgsl b/assets/final/shaders/passthrough.wgsl index dfdacf4..266e231 100644 --- a/assets/final/shaders/passthrough.wgsl +++ b/assets/final/shaders/passthrough.wgsl @@ -1,15 +1,7 @@ @group(0) @binding(0) var smplr: sampler; @group(0) @binding(1) var txt: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; @vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> { diff --git a/assets/final/shaders/solarize.wgsl b/assets/final/shaders/solarize.wgsl index 645fb9a..de15dfc 100644 --- a/assets/final/shaders/solarize.wgsl +++ b/assets/final/shaders/solarize.wgsl @@ -1,15 +1,7 @@ @group(0) @binding(0) var smplr: sampler; @group(0) @binding(1) var txt: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -}; +#include "common_uniforms" @group(0) @binding(2) var<uniform> uniforms: CommonUniforms; diff --git a/assets/final/shaders/vignette.wgsl b/assets/final/shaders/vignette.wgsl index 4b096d7..b129883 100644 --- a/assets/final/shaders/vignette.wgsl +++ b/assets/final/shaders/vignette.wgsl @@ -1,20 +1,14 @@ @group(0) @binding(0) var input_sampler: sampler; @group(0) @binding(1) var input_tex: texture_2d<f32>; -struct CommonUniforms { - resolution: vec2<f32>, - _pad0: f32, - _pad1: f32, - aspect_ratio: f32, - time: f32, - beat: f32, - audio_intensity: f32, -};struct EffectParams { +#include "common_uniforms" + +struct VignetteParams { radius: f32, softness: f32, }; @group(0) @binding(2) var<uniform> common_uniforms: CommonUniforms; -@group(0) @binding(3) var<uniform> params: EffectParams; +@group(0) @binding(3) var<uniform> params: VignetteParams; @vertex fn vs_main(@builtin(vertex_index) vertex_idx: u32) -> @builtin(position) vec4<f32> { diff --git a/assets/final/test_demo_assets.txt b/assets/final/test_demo_assets.txt index d679237..dec8625 100644 --- a/assets/final/test_demo_assets.txt +++ b/assets/final/test_demo_assets.txt @@ -1,3 +1,3 @@ -KICK_1, NONE, KICK_606.spec, "606 Kick" -SNARE_1, NONE, SNARE_808.spec, "808 Snare" -CRASH_1, NONE, CRASH_DMX.spec, "DMX Crash" +KICK_1, NONE, music/KICK_606.spec, "606 Kick" +SNARE_1, NONE, music/SNARE_808.spec, "808 Snare" +CRASH_1, NONE, music/CRASH_DMX.spec, "DMX Crash" |
