{"$id": "https://hypna.space/hypnospec/draft/2025-07/feature/space.hypna.feature.spirals.customgl/", "$ref": "https://hypna.space/hypnospec/draft/2025-07/schemas/feature/", "id": "space.hypna.feature.spirals.customgl", "creator": "hypna.space", "version": "2025-07", "type": "object", "title": "Scripted WebGL Spiral Feature Descriptor", "description": "This feature renders a spiral from a user-authored WebGL fragment shader. The player supplies the standard spiral uniforms (iTime, iRes, u_resolution, spiralColor, bgColor, spinSpeed, throbSpeed, throbStrength, zoom); the fragment shader source is fully editable by the session author.", "required": true, "useProjectLevelConfiguration": false, "properties": {"configuration": {"type": "object", "properties": {"opacity": {"type": "number", "description": "Opacity of the spiral canvas", "default": 0.6}, "spiral_color": {"type": "string", "description": "Color passed to the shader as the spiralColor uniform (HEX CODE)", "default": "#FFFFFF"}, "bg_color": {"type": "string", "description": "Color passed to the shader as the bgColor uniform (HEX CODE)", "default": "#000000"}, "spin_speed": {"type": "number", "description": "Value passed to the shader as the spinSpeed uniform", "default": 1}, "throb_speed": {"type": "number", "description": "Value passed to the shader as the throbSpeed uniform", "default": 2}, "throb_strength": {"type": "number", "description": "Value passed to the shader as the throbStrength uniform", "default": 1}, "zoom": {"type": "number", "description": "Value passed to the shader as the zoom uniform", "default": 1}, "fragment_source": {"type": "string", "description": "WebGL 1 (GLSL ES 1.0) fragment shader source rendered on a full-screen quad. May declare any of the standard spiral uniforms."}}}}, "dependencies": []}