For Tailwind CSS v3 docs, click here.

Shader Toy 预览器

一个强大且灵活的组件,可在浏览器中渲染来自 ShaderToy 的交互式 GLSL 着色器。

API

属性名类型默认值描述
shaderCodestring-来自 ShaderToy 的 GLSL 片段着色器源码。
mouseMode'click' | 'hover''click'鼠标跟踪模式:点击触发或持续悬停触发。
huenumber0调整着色器输出的色相(Hue)。
saturationnumber1调整着色器输出的饱和度(Saturation)。
brightnessnumber1调整着色器输出的亮度(Brightness)。
speednumber1
classstring-应用于容器的自定义类名。

安装

请确保在项目中安装并引入 ogl(用于渲染)。

npm
pnpm
bun
yarn
npm i ogl

使用 CLI 安装

npm
pnpm
bun
yarn
npx shadcn-vue@latest add "https://registry.inspira-ui.com/shader-toy.json"

手动安装

复制并粘贴以下代码:

ShaderToy.vue
InspiraShaderToy.ts

功能特性

  • 兼容 ShaderToy:支持 ShaderToy 风格的 mainImageiTimeiResolutioniMouse 等变量。
  • GLSL 着色器渲染:支持完整的 ShaderToy 式片段着色器渲染。
  • iMouse 交互支持:支持实时鼠标交互(点击或悬停)。
  • HSV 颜色控制:动态调整着色器的色相、饱和度和亮度。
  • 响应式设计:画布尺寸会随容器大小自动调整。
  • 运行时控制:支持动态播放、暂停和重置着色器。

注意事项

  • 将 ShaderToy 风格的着色器封装并转换为适用于 WebGL2 环境。
  • 颜色控制(huesaturationbrightness)通过后处理步骤实现 HSV 调整效果。

致谢

  • 基于 OGL 构建。
  • 灵感来源于 Shadertoy,并进行了 Vue 兼容性适配。