@hyperframes/shader-transitions

中文文档
0.8.226发布于 2026/11/01TypeScriptESM + CJS构建来源已验证

超帧合成的WebGL着色器转换

中文使用文档
文档目录11 节
  1. 安装
  2. 使用
  3. 使用现有的时间轴
  4. 可用着色器
  5. API
  6. init(config): GsapTimeline
  7. TransitionConfig
  8. SHADER_NAMES
  9. 分布
  10. 相关的包
  11. 许可证

@hyperframes / shader-transitions

超帧合成的WebGL着色器转换。使用片段着色器渲染gpu加速的场景到场景转换,由GSAP时间轴驱动。

安装

npm install @hyperframes/shader-transitions

或者直接通过CDN加载:

<script src="https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js"></script>

使用

import { init } from "@hyperframes/shader-transitions";

const tl = init({
  bgColor: "#0a0a0a",
  accentColor: "#ff6b2b",
  scenes: ["scene-1", "scene-2", "scene-3"],
  transitions: [
    { time: 3, shader: "domain-warp", duration: 0.8 },
    { time: 8, shader: "light-leak", duration: 0.7 },
  ],
});

这个 init() 函数为每个过渡预捕获动画场景样本,在播放期间使用所选着色器合成缓存样本,并返回GSAP时间轴。场景动画在播放循环中不运行DOM捕获而通过着色器转换保持前进。如果WebGL不可用,它会回到正常的时间线播放,而不需要着色器合成。

当浏览器公开Chrome的实验性CanvasDrawElement API时,场景 capture使用原生的HTML-in-canvas via drawElementImage()。其他浏览器 使用现有的 html2canvas 回退。您可以对本机路径进行特性检测 与 isHtmlInCanvasCaptureSupported().

使用现有的时间轴

将你自己的GSAP时间轴传递到图层过渡上:

const tl = gsap.timeline({ paused: true });
// ... add your scene animations ...

init({
  bgColor: "#000",
  scenes: ["intro", "demo", "outro"],
  transitions: [
    { time: 5, shader: "cinematic-zoom" },
    { time: 12, shader: "glitch", duration: 0.5 },
  ],
  timeline: tl,
});

可用着色器

着色器描述
domain-warp有机噪声为基础的经纱发光边缘
ridged-burn脊状的噪音燃烧着火花和热光
whip-pan水平运动模糊模拟快速相机平移
sdf-iris圆形虹膜擦拭,发光环边
ripple-waves从中心辐射的同心纹波畸变
gravitational-lens扭曲重力与色差
cinematic-zoom径向变焦模糊与彩色边缘
chromatic-splitRGB通道分离从中心扩展
glitch块位移和扫描线的数字故障
swirl-vortex螺旋旋转与噪声为基础的翘曲
thermal-distortion热气从底部微微升起
flash-through-white闪光到白色,然后显示下一个场景
cross-warp-morph噪声驱动的变形混合两个场景
light-leak温暖的电影光泄漏与镜头光晕

API

init(config): GsapTimeline

选项类型要求描述
bgColorstring是场景捕捉的后退背景色(十六进制)。使用构图的主体/画布背景-单独的场景设置自己的 background-color 通过CSS。
accentColorstring否着色器发光效果的强调色(十六进制)
scenesstring[]是每个场景的元素id,按顺序排列
transitionsTransitionConfig[]是转换定义(见下文)
timelineGsapTimeline否要将过渡附加到的现有时间轴
compositionIdstring否覆盖 data-composition-id 时间线注册
previewCaptureFpsnumber否浏览器预览预捕获样本每转换秒。默认为 30;渲染使用确定性的每帧合成代替。

浏览器预览捕获规模和过渡准备加载UI所有权由 <hyperframes-player> (shader-capture-scale, shader-loading),而不是组合代码。直接的非玩家预览保留了内置的全保真加载回退。

浏览器预览使用从组合ID、场景DOM/样式签名、转换时间、捕获FPS、比例和尺寸派生的键在IndexedDB中存储捕获的转换快照。在刷新时,匹配的快照被重新加载到WebGL纹理中,而不是再次被捕获。运行时场景或样式表编辑仅将相邻的过渡缓存标记为dirty;重新捕获被延迟到播放,以便编辑保持响应。

TransitionConfig

选项类型默认的描述
timenumber- - - - - -启动时间(秒)
shaderShaderName- - - - - -上面表格中的着色器名称
durationnumber0.7转换持续时间(秒)
easestring"power2.inOut"GSAP缓和功能

SHADER_NAMES

所有可用的着色器名称字符串的数组,用于验证或构建ui。

import { SHADER_NAMES } from "@hyperframes/shader-transitions";
// ["domain-warp", "ridged-burn", "whip-pan", ...]

分布

格式文件用例
ESMdist/index.js捆绑器(Vite, webpack等)
cjdist/index.cjsNode.js / require()
IIFEdist/index.global.js<script> 标签,CDN(全局) HyperShader)

所有格式都包含源映射。包括TypeScript定义。

许可证

麻省理工学院

版本与发布记录

@hyperframes/shader-transitions 共发布 552 个版本,首次发布于 2026/04/14;过去 12 个月发布了 552 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.226latest2026/11/012 天前
0.8.2252026/11/012 天前
0.8.2242026/11/012 天前
0.8.2232026/10/313 天前
0.8.2222026/10/313 天前
0.8.2212026/10/304 天前

其他发布通道:alpha → 0.7.67-alpha.0,desktop → 0.8.53-desktop.0,hdr → 0.8.190-hdr.1。

关于 @hyperframes/shader-transitions 的常见问题

@hyperframes/shader-transitions 是什么?

超帧合成的WebGL着色器转换

如何安装 @hyperframes/shader-transitions?

在项目目录运行 npm install @hyperframes/shader-transitions,或使用 pnpm add / yarn add / bun add。

@hyperframes/shader-transitions 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@hyperframes/shader-transitions 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@hyperframes/shader-transitions 可以商用吗?

@hyperframes/shader-transitions 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@hyperframes/shader-transitions 还在维护吗?

最新版本 0.8.226 发布于 2026/11/01(2 天前);至今共发布 552 个版本,其中过去 12 个月发布了 552 个;首次发布于 2026/04/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。