{"name":"prefab-shader-canvas","title":"Shader canvas","kind":"prefab","status":"available","summary":"Full-screen fragment shader boilerplate: uniforms for time/mouse/resolution.","spec":"prefab-shader-canvas@0.1.1","version":"0.1.1","versions":["0.1.1","0.1.0"],"license":"MIT","source":"prototir","sizeKB":null,"requires":[],"permissions":[],"flags":{"wasm":false,"streamed":false},"compatibility":"Desktop and mobile browsers with WebGL.","install":{"manifest":"{\n  \"modules\": [\n    \"prefab-shader-canvas@0.1.1\"\n  ]\n}","importFrom":"prefab-shader-canvas"},"example":"import { createShaderCanvas } from 'prefab-shader-canvas';\n\ncreateShaderCanvas({\n  fragment: `\n    precision mediump float;\n    varying vec2 v_uv;\n    uniform float u_time;\n    void main() {\n      gl_FragColor = vec4(v_uv, 0.5 + 0.5 * sin(u_time), 1.0);\n    }`\n});","api":[{"heading":"createShaderCanvas({ fragment, canvas, onFrame })","entries":[{"signature":"fragment","description":"GLSL fragment shader. Uniforms: float u_time (seconds), vec2 u_resolution (px), vec2 u_mouse (px, top-left origin); varying vec2 v_uv in 0..1. Compile errors are thrown with the GLSL log."},{"signature":"canvas","description":"Your own canvas; otherwise a full-window one is added to the page."},{"signature":"onFrame(time)","description":"Called after each frame is drawn."},{"signature":"returns { canvas, destroy() }","description":"destroy() stops the loop and frees the GL program and buffers."}]}],"notes":["Throws when WebGL is unavailable, so a fallback can be shown."],"upstreamDocs":null,"labs":[]}