Wiki · Autograph / Shadertoy / GLSL
Autograph Shadertoy porting and validation guide
A practical guide for moving a Shadertoy-style fragment shader into Autograph, identifying unsupported assumptions, validating coordinates and channels, and deciding whether the result is safe for production.
What Autograph supports
Autograph provides Shadertoy generators and modifiers for GLSL fragment shaders. Maxon documents two modes: a Shadertoy-compatible mode intended for many single-pass shaders, and an Autograph Extended mode with additional behavior and restrictions. The usual entry point is mainImage(out vec4 fragColor, in vec2 fragCoord).
Do not assume that every shader on shadertoy.com will paste in unchanged. Maxon states that native multi-pass shaders and sound are not supported directly. Some visual multi-pass designs can be rebuilt by chaining several Shadertoy modifiers, but that becomes an explicit Autograph composition rather than a direct one-step import.
Classify the shader before porting
- Single-pass procedural image: the best first candidate. It computes the current pixel from coordinates, uniforms, and optional texture inputs.
- Single-pass image effect: suitable when the shader reads one or more source textures and does not depend on previous frames.
- Multi-pass buffer shader: requires a deliberate reconstruction of pass order and intermediate images in Autograph.
- Feedback or simulation: depends on previous-frame state and should not be assumed compatible without a tested feedback path.
- Sound shader: outside the documented Autograph Shadertoy support.
Coordinate and resolution checks
- Autograph passes pixel coordinates through
fragCoord. Maxon documents coordinates from 0.5 to resolution minus 0.5, with resolution supplied throughiResolution. - Check whether the source shader normalizes coordinates by width, height, or the smaller dimension. A square preview can hide aspect-ratio errors that appear in delivery formats.
- Test portrait, landscape, square, and non-integer scaling. Hard-coded values such as 1920, 1080, or 0.5 often reveal hidden assumptions.
- Confirm vertical orientation. GLSL environments can differ in framebuffer origin and texture-coordinate convention, so a shader or texture may need a Y inversion.
- Check pixel-center assumptions before judging one-pixel lines, grids, and signed-distance-field edges.
Uniforms and animation
- List every built-in or custom uniform the shader expects before editing the code.
- Confirm how time is supplied and whether the shader expects continuous seconds, frame-derived time, or a reset at the composition start.
- Test frame zero, a middle frame, and a late frame. Large time values can expose floating-point precision problems in procedural motion.
- Replace mouse-dependent interaction with explicit Autograph controls when the result must render deterministically.
- Make random seeds and variation controls explicit. A production render should not change because of an undocumented default or session state.
Texture inputs and filtering
- Document what each channel represents: color image, mask, noise texture, lookup table, data map, or previous pass.
- Check wrap mode, filtering, mip behavior, texture resolution, and whether coordinates are normalized.
- Do not run data maps through display color transforms. Normals, depth, IDs, and other utility data are not display-referred images.
- Test transparent edges and RGB outside alpha when the shader reads or writes RGBA imagery.
- When rebuilding a multi-pass shader, verify the exact resolution and precision of each intermediate pass rather than accepting preview defaults.
Alpha and compositing behavior
- Determine whether the source shader writes meaningful alpha or simply returns 1.0.
- Check whether RGB is straight or already multiplied by alpha before merging it over another image.
- Test the result over black, white, saturated colors, and transparency to reveal halos or hidden RGB.
- For additive effects such as fire, sparks, and glows, decide whether alpha represents coverage, intensity, or is not useful at all.
- Use channel-processing controls deliberately. Autograph's Shadertoy modifier can process or bypass red, green, blue, and alpha independently.
Color-management checks
- Establish whether numeric shader colors are intended as display-referred RGB values or scene-linear light values.
- Do not assume that code written for a browser preview will automatically match an ACES or OCIO-managed composition.
- Apply display transforms only for viewing. Keep scene-linear compositing operations and data textures in their intended domains.
- Compare the shader in Autograph with a reference capture only after both are viewed through known and equivalent transforms.
- Record any deliberate conversion around the shader so another artist can reproduce the look.
Performance and numerical stability
- Profile at delivery resolution, not only in a reduced viewer.
- Watch for long loops, ray-marching step counts, repeated texture reads, high-frequency noise, and branches that vary heavily by pixel.
- Test the first, middle, and last frames of the final duration. Time-dependent loops and coordinates can become unstable later in a shot.
- Render representative frames on the actual production GPU and driver combination. Shader compilers and floating-point behavior can differ across implementations.
- Prefer bounded loops and defined values. GLSL portability is strongest for well-formed code; undefined operations can produce platform-dependent results.
Common failure patterns
- Black output: compile error, unsupported syntax, missing texture, invalid uniform, or a coordinate range that never reaches the visible pattern.
- Image is upside down: texture or framebuffer origin differs from the source environment.
- Shader works only in a square frame: aspect correction is missing or tied to a fixed resolution.
- Animation speed is wrong: time units or composition timing differ from the source.
- Edges have halos: alpha association or hidden RGB is inconsistent with the downstream merge.
- Color does not match the reference: the browser preview and Autograph composition are using different transfer functions or display transforms.
- Preview works but final render fails: the delivery resolution, GPU load, texture precision, or pass dependency differs from the interactive test.
Minimum acceptance test
- Archive the original shader URL, author attribution, license information, and an untouched source copy.
- Identify single-pass, multi-pass, feedback, texture, and sound dependencies.
- Compile in an empty Autograph verification project and save the exact error text if compilation fails.
- Test at 1:1 pixel scale in square, portrait, and landscape frames.
- Check frame zero, a middle frame, a late frame, and the final delivery frame.
- Validate texture channels, alpha, backgrounds, and color-management assumptions.
- Render a short image sequence at delivery resolution and compare it with the interactive viewer.
- Record Autograph version, GPU, driver, shader mode, source textures, controls, and known limitations.
Practical rule
Treat a copied Shadertoy shader as source code that must be integrated and tested, not as a portable visual asset. The smaller and more explicit its inputs, passes, coordinates, color assumptions, and license are, the safer it is to use in an Autograph project.
Useful next pages
- Autograph color transform troubleshooting checklist
- Autograph alpha and premultiplication troubleshooting checklist
- Autograph render review and delivery checklist
- Autograph first verification project checklist
Sources checked
- Maxon Autograph Help: Shadertoy generator — checked 2026-07-28. Used for the documented
mainImage()entry point, pixel-coordinate range,iResolution, and the limits on multi-pass shaders and sound. - Maxon Autograph Help: Shadertoy modifier — checked 2026-07-28. Used for Shadertoy Compatible and Autograph Extended modes and per-channel processing controls.
- Khronos: OpenGL Shading Language 4.60 specification — checked 2026-07-28. Used for fragment-shader behavior, compilation and linking, texture-function constraints, coordinate conventions, and portability cautions around well-formed code.
- Khronos OpenGL Registry — checked 2026-07-28. Used to verify the current canonical GLSL specification source.