From cb5cdbfb55cfa0185b2489ada75ff846f8aeab02 Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 10 Feb 2026 18:26:38 +0100 Subject: fix: Flip Y-axis to match ShaderToy coordinate convention ShaderToy uses bottom-left origin with Y-up, but our system uses top-left origin with Y-down. Added Y-flip in fragment shader to correctly display ShaderToy effects. **Changes:** - workspaces/main/shaders/scene1.wgsl: Flip Y before coordinate conversion - tools/shadertoy/convert_shadertoy.py: Generate Y-flip in all conversions **Formula:** ```wgsl let flipped = vec2(p.x, uniforms.resolution.y - p.y); ``` This ensures ShaderToy shaders display right-side up. Co-Authored-By: Claude Sonnet 4.5 --- tools/shadertoy/convert_shadertoy.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tools/shadertoy') diff --git a/tools/shadertoy/convert_shadertoy.py b/tools/shadertoy/convert_shadertoy.py index 48201bc..2f402cc 100755 --- a/tools/shadertoy/convert_shadertoy.py +++ b/tools/shadertoy/convert_shadertoy.py @@ -113,9 +113,11 @@ def convert_shadertoy_to_wgsl(shader_code): # Indent main body indented_main = '\n'.join(' ' + line if line.strip() else '' for line in converted_main.split('\n')) - # Build fragment function + # Build fragment function with Y-flip for ShaderToy convention fragment = f"""@fragment fn fs_main(@builtin(position) p: vec4) -> @location(0) vec4 {{ - let q = p.xy / uniforms.resolution; + // Flip Y to match ShaderToy convention (origin at bottom-left) + let flipped = vec2(p.x, uniforms.resolution.y - p.y); + let q = flipped / uniforms.resolution; var coord = -1.0 + 2.0 * q; coord.x *= uniforms.resolution.x / uniforms.resolution.y; -- cgit v1.2.3