简介
Rinne 是一个面向现代 Web 的交互式动画引擎,专注于极高性能和可预测的状态管理。
为什么选择 Rinne?
Section titled “为什么选择 Rinne?”大多数动画库使用“状态插值”模型,即动画将属性从值 A 移动到值 B。当多个动画同时作用于同一个属性时,它们通常会产生冲突或互相覆盖。
Rinne 采用了 纯叠加架构 (Universal Additive Architecture, UAA)。动画不再产生绝对值,而是产生累加的偏移信号。
Vvisual
=
Vbase
+
∑
Δoffsets
这意味着我们可以同时在一个属性上叠加“震动”、“呼吸”和“移动”的增量,而不会产生逻辑冲突。
面向性能的设计
Section titled “面向性能的设计”Rinne 的内核采用 SoA (Structure of Arrays) 布局,而非传统的 AoS (Array of Objects)。通过将属性存储在连续的 Float64Array 缓冲区中,Rinne 最大化了 CPU 缓存命中率,并完全避免了渲染循环中的对象分配。
- 50,000+ 活跃节点:在 sub-2ms 的帧预算内稳定运行。
- 零 GC 压力:播放期间无对象创建。
- 单次写回:每帧仅对 DOM 或 WebGL 目标执行一次物理赋值。