diff options
| -rwxr-xr-x | tools/shadertoy/convert_shadertoy.py | 6 | ||||
| -rw-r--r-- | workspaces/main/shaders/scene1.wgsl | 4 |
2 files changed, 7 insertions, 3 deletions
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<f32>) -> @location(0) vec4<f32> {{ - let q = p.xy / uniforms.resolution; + // Flip Y to match ShaderToy convention (origin at bottom-left) + let flipped = vec2<f32>(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; diff --git a/workspaces/main/shaders/scene1.wgsl b/workspaces/main/shaders/scene1.wgsl index b0ec2ab..7af3811 100644 --- a/workspaces/main/shaders/scene1.wgsl +++ b/workspaces/main/shaders/scene1.wgsl @@ -246,7 +246,9 @@ fn effect(p: vec2<f32>) -> vec3<f32> { } @fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> { - let q = p.xy / uniforms.resolution; + // Flip Y to match ShaderToy convention (origin at bottom-left) + let flipped = vec2<f32>(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; var col = effect(coord); |
