From dfe33c099d36dad6d2a62ff583e7354df0a73cca Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 10 Feb 2026 18:53:17 +0100 Subject: feat: Add --shader-only option to convert_shadertoy.py Allows regenerating just the .wgsl shader file without touching .h/.cc files when iterating on shader code. Usage: ./tools/shadertoy/convert_shadertoy.py shader.txt EffectName --shader-only Co-Authored-By: Claude Sonnet 4.5 --- tools/shadertoy/convert_shadertoy.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'tools/shadertoy/convert_shadertoy.py') diff --git a/tools/shadertoy/convert_shadertoy.py b/tools/shadertoy/convert_shadertoy.py index 2f402cc..e85f384 100755 --- a/tools/shadertoy/convert_shadertoy.py +++ b/tools/shadertoy/convert_shadertoy.py @@ -296,15 +296,17 @@ def generate_shader(effect_name, shadertoy_code, is_post_process=False): def main(): if len(sys.argv) < 3: - print("Usage: convert_shadertoy.py [--post-process]") + print("Usage: convert_shadertoy.py [--post-process] [--shader-only]") print() print("Examples:") print(" ./tools/shadertoy/convert_shadertoy.py tunnel.txt Tunnel") print(" ./tools/shadertoy/convert_shadertoy.py blur.txt Blur --post-process") + print(" ./tools/shadertoy/convert_shadertoy.py tunnel.txt Tunnel --shader-only") print() print("Options:") print(" --post-process Generate post-process effect (operates on previous frame)") print(" Default: scene effect (renders geometry)") + print(" --shader-only Only regenerate .wgsl shader (skip .h/.cc files)") print() print("This will generate:") print(" src/gpu/effects/_effect.h") @@ -315,6 +317,7 @@ def main(): shader_file = sys.argv[1] effect_name = sys.argv[2] is_post_process = '--post-process' in sys.argv + shader_only = '--shader-only' in sys.argv # Ensure effect name is CamelCase if '_' in effect_name: @@ -339,6 +342,14 @@ def main(): shader_path = repo_root / "workspaces" / "main" / "shaders" / f"{snake_name}.wgsl" # Generate files + if shader_only: + print(f"Regenerating shader only: {effect_name}") + print(f" Shader: {shader_path}") + print() + shader_path.write_text(generate_shader(effect_name, shadertoy_code, is_post_process)) + print(f"✓ Shader regenerated") + return + print(f"Generating effect: {effect_name}") print(f" Header: {header_path}") print(f" Impl: {impl_path}") -- cgit v1.2.3