defineShader().
Time is frame-based (u_time = frame / fps), making shaders deterministic and seekable.123<Background> <BandsShader speed={0.5} /> </Background>
defineShader() from framer) can be ported to egaki
using defineShader() from cli/src/vite/shader-renderer.tsx.framerusercontent.comdefineShader configMDX_BUILTIN_COMPONENTS in mdx-video.tsxu_time = frame / fpspreserveDrawingBuffer: true is set automatically for WebCodecs compatibility12345678910111213import { defineShader } from 'egaki/src/vite/shader-renderer' const MyShader = defineShader({ title: 'MyShader', fragment: ` float d = length(v_uv - 0.5); float pulse = sin(u_time * speed + d * 10.0) * 0.5 + 0.5; fragColor = vec4(pulse, 0.2, 0.8, 1.0); `, propertyControls: { speed: { type: 'number', defaultValue: 1.0, min: 0, max: 5, step: 0.1 }, }, })