Paper Shaders 是一个面向网页前端的技能,用于操作 paper-design/shaders 提供的命名画布着色器运行时;它不负责布局系统,也不是设计生成器。上游来源观察与许可证记录在 references/upstream.md 中,选择 API、版本或生命周期改动前应先阅读该参考。
用途与路由 技能先做选择:判断 Paper Shaders 是否适合已有界面,属于适用性检查;在 React 中加入命名着色器,走 React 集成路径;在其他浏览器前端加入着色器,走原生集成路径;需要停止动画、调整尺寸、减少 GPU 开销或移除挂载时,走生命周期诊断路径。任意 GLSL 编写或 Three.js 场景不属于本包职责,应路由出去;现成模态框、bento 块或栅格布局应交给 UI 布局或现有组件负责人。技能还提示:通用渐变仍可用 CSS,添加 WebGL 前应先确认确有运行时收益。
主要能力 技能支持通过 React 命名组件(例如 MeshGradient)集成;被检查的组件接受 colors、distortion、swirl、speed 和 frame 等参数,共享挂载接受 width/height 或普通 div 样式以及渲染边界。原生集成使用 ShaderMount,配合真实挂载的 HTMLElement、选定的片元着色器和匹配的 uniform;可通过 setUniforms、setSpeed、setFrame 与像素边界设置器更新支持的值。技能还涵盖无障碍与回退:源码请求 WebGL2,不可用时抛出错误且不提供 CSS 回退,回退应由使用方应用处理;被检查的挂载不会自动读取 prefers-reduced-motion,需要将减少动效和显式暂停映射为 speed=0。性能方面,运行时已对隐藏文档和离屏挂载暂停动画,默认最小像素比为 2、最大像素数为 8,294,400,填充率问题可先降低 maxPixelCount;移除时应调用 dispose() 而非仅删除 canvas。
使用方式 流程要求先建立集成契约:检查使用方包清单、框架边界、现有特效和目标容器,记录所选着色器及其用途、尺寸与动效策略,从 @paper-design/shaders 与 @paper-design/shaders-react 中只选一个入口,并选定精确版本。被检查的两个包均为 0.0.81,React 包声明 React 18/19 peer。上游警告即使 0.0.x 更新也可能破坏兼容性。操作按影响把关:公开源码检查无需执行包;安装前需写明依赖版本、包管理器命令、锁文件和受影响文件,并获得明确批准;安装、运行下载代码或获取远程图片资源都需审批。纹理默认本地并已清权,远程纹理会带来网络与 CORS 问题。
适用场景与限制 适用于在 React 或其他浏览器前端为容器加入命名着色器、调优 uniforms 和渲染边界、诊断动画与清理生命周期、处理 WebGL 回退和减少动效。限制包括:不提供现成布局组件,不编写任意 GLSL 或 Three.js 场景;源码未建立上下文丢失恢复或 dispose 后 GPU 内存完全释放的保证;异步图片加载路径的取消保证需另行检查。交付时需返回所选路径、包与版本、源码固定点、改动文件、清理负责人、回退与动效决策、许可证处理、已用审批、已执行检查与未解决风险;仅源码审查不能证明视觉质量、无障碍合规或性能。