summaryrefslogtreecommitdiff
path: root/workspaces/test
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-14 15:13:09 +0100
committerskal <pascal.massimino@gmail.com>2026-02-14 15:13:09 +0100
commite38be0dbf5816338ff97e2ee2f9adfff2902dc2b (patch)
tree42e380626c6f9d0e0137336c8c2dfb68df327dae /workspaces/test
parentd6cc50eb49275bbc0de21d4c65a5172d5d65f790 (diff)
refactor(wgsl): modularize common shader functions
Extracted common WGSL functions into separate files in `common/shaders/` to improve reusability and maintainability. - Created `common/shaders/render/fullscreen_vs.wgsl` for a reusable fullscreen vertex shader. - Created `common/shaders/math/color.wgsl` for color conversion and tone mapping functions. - Created `common/shaders/math/utils.wgsl` for general math utilities. - Created `common/shaders/render/raymarching.wgsl` for SDF raymarching logic. - Updated multiple shaders to use these new common snippets via `#include`. - Fixed the shader asset validation test to correctly handle shaders that include the common vertex shader. This refactoring makes the shader code more modular and easier to manage.
Diffstat (limited to 'workspaces/test')
-rw-r--r--workspaces/test/assets.txt4
-rw-r--r--workspaces/test/shaders/chroma_aberration.wgsl9
-rw-r--r--workspaces/test/shaders/distort.wgsl9
-rw-r--r--workspaces/test/shaders/solarize.wgsl9
-rw-r--r--workspaces/test/shaders/vignette.wgsl10
5 files changed, 8 insertions, 33 deletions
diff --git a/workspaces/test/assets.txt b/workspaces/test/assets.txt
index ed81885..b717e15 100644
--- a/workspaces/test/assets.txt
+++ b/workspaces/test/assets.txt
@@ -54,6 +54,10 @@ SHADER_RENDER_LIGHTING_UTILS, NONE, ../../common/shaders/render/lighting_utils.w
SHADER_MESH, NONE, shaders/mesh_render.wgsl, "Mesh Rasterization Shader"
MESH_CUBE, NONE, obj/test_mesh.obj, "A simple cube mesh"
DODECAHEDRON, NONE, obj/dodecahedron.obj, "A dodecahedron mesh"
+SHADER_RENDER_FULLSCREEN_VS, NONE, ../../common/shaders/render/fullscreen_vs.wgsl, "Fullscreen Vertex Shader"
+SHADER_MATH_COLOR, NONE, ../../common/shaders/math/color.wgsl, "Color Functions"
+SHADER_MATH_UTILS, NONE, ../../common/shaders/math/utils.wgsl, "Math Utilities"
+SHADER_RENDER_RAYMARCHING, NONE, ../../common/shaders/render/raymarching.wgsl, "Raymarching Functions"
SHADER_VIGNETTE, NONE, shaders/vignette.wgsl, "Vignette Shader"
SHADER_COMPUTE_GEN_NOISE, NONE, ../../common/shaders/compute/gen_noise.wgsl, "GPU Noise Compute Shader"
SHADER_COMPUTE_GEN_PERLIN, NONE, ../../common/shaders/compute/gen_perlin.wgsl, "GPU Perlin Noise Compute Shader"
diff --git a/workspaces/test/shaders/chroma_aberration.wgsl b/workspaces/test/shaders/chroma_aberration.wgsl
index 6c942b7..ee730b1 100644
--- a/workspaces/test/shaders/chroma_aberration.wgsl
+++ b/workspaces/test/shaders/chroma_aberration.wgsl
@@ -10,14 +10,7 @@ struct ChromaAberrationParams {
@group(0) @binding(2) var<uniform> uniforms: CommonUniforms;
@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>(
- vec2<f32>(-1, -1),
- vec2<f32>(3, -1),
- vec2<f32>(-1, 3)
- );
- return vec4<f32>(pos[i], 0.0, 1.0);
-}
+#include "render/fullscreen_vs"
@fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> {
let uv = p.xy / uniforms.resolution;
diff --git a/workspaces/test/shaders/distort.wgsl b/workspaces/test/shaders/distort.wgsl
index 5d35129..607ac60 100644
--- a/workspaces/test/shaders/distort.wgsl
+++ b/workspaces/test/shaders/distort.wgsl
@@ -11,14 +11,7 @@ struct DistortParams {
@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>(
- vec2<f32>(-1, -1),
- vec2<f32>(3, -1),
- vec2<f32>(-1, 3)
- );
- return vec4<f32>(pos[i], 0.0, 1.0);
-}
+#include "render/fullscreen_vs"
@fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> {
let uv = p.xy / uniforms.resolution;
diff --git a/workspaces/test/shaders/solarize.wgsl b/workspaces/test/shaders/solarize.wgsl
index de15dfc..0a69b83 100644
--- a/workspaces/test/shaders/solarize.wgsl
+++ b/workspaces/test/shaders/solarize.wgsl
@@ -5,14 +5,7 @@
@group(0) @binding(2) var<uniform> uniforms: CommonUniforms;
-@vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {
- var pos = array<vec2<f32>, 3>(
- vec2<f32>(-1, -1),
- vec2<f32>(3, -1),
- vec2<f32>(-1, 3)
- );
- return vec4<f32>(pos[i], 0.0, 1.0);
-}
+#include "render/fullscreen_vs"
@fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> {
let uv = p.xy / uniforms.resolution;
diff --git a/workspaces/test/shaders/vignette.wgsl b/workspaces/test/shaders/vignette.wgsl
index b129883..c4d0389 100644
--- a/workspaces/test/shaders/vignette.wgsl
+++ b/workspaces/test/shaders/vignette.wgsl
@@ -10,15 +10,7 @@ struct VignetteParams {
@group(0) @binding(2) var<uniform> common_uniforms: CommonUniforms;
@group(0) @binding(3) var<uniform> params: VignetteParams;
-@vertex
-fn vs_main(@builtin(vertex_index) vertex_idx: u32) -> @builtin(position) vec4<f32> {
- var pos = array<vec2<f32>, 3>(
- vec2<f32>(-1.0, -1.0),
- vec2<f32>(3.0, -1.0),
- vec2<f32>(-1.0, 3.0)
- );
- return vec4<f32>(pos[vertex_idx], 0.0, 1.0);
-}
+#include "render/fullscreen_vs"
@fragment
fn fs_main(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {