预览与渲染
渲染一次捕获一帧并将它们拼接成视频。慢帧使渲染时间更长,但您永远不会看到暂停 - 您会看到完成的 mp4。 预览实时执行相同的工作。如果绘制一帧需要 200 毫秒,您会看到 200 毫秒的冻结。 这就是为什么“渲染看起来不错,预览时断断续续”对于油漆较多的合成来说是预期的。这并不意味着预览被破坏了——这意味着单个帧对于实时播放来说太昂贵了。昂贵的 CSS 模式
这些模式最常导致预览速度低于 30 fps。背景过滤器:blur()
在大面积上采样的每个backdrop-filter: blur(radius) 都会强制合成器从元素后面读取像素,在它们上运行模糊内核,然后合成结果。成本与模糊区域和半径成比例。
堆叠的模糊层会增加成本。半径逐渐变大的八层(1、2、4、8、16、32、64、128 像素)在中层 GPU 上的 1920x1080 区域中每帧将花费 200 毫秒。
该怎么办:
- 将堆叠层数保持在最多 2-3 层,并手动调整半径
- 避免大面积使用
blur(128px)或blur(64px)— 最大半径决定成本 - 对于静态模糊,将其渲染为 PNG 并使用常规
<img>叠加层
过滤器:blur() 和过滤器:drop-shadow()
与backdrop-filter 相同的故事,但应用于元素本身而不是其后面。对于小元件来说很好,对于大元件来说价格昂贵。
许多元素上的阴影
少数元素上的box-shadow 和 text-shadow 没问题。在数十个同样具有动画效果的元素上,合成器会重新光栅化每一帧上的每个阴影层。
带有掩模图像的大梯度
与backdrop-filter 结合使用,mask-image 可以强制执行额外的合成器通道。如果同一个元素上有这两个,请考虑是否需要两者。
图像尺寸调整
图像源分辨率比文件大小更重要。 Chrome 在显示 JPEG 和 PNG 之前将其解码为原始 RGBA 位图 - 解码后的位图是:Terminal
测量缓慢的构图
不要猜测——测量。 Chrome 开发者工具拥有您所需的一切。
一旦你知道哪个类别占主导地位,你就知道要改变什么。
当预览速度不可避免地变慢时
有些作品对于实时播放来说确实太昂贵了。如果您已经减少了能做的,但预览仍然卡顿,渲染到 mp4 并观察输出是一个很好的工作流程 — 渲染仍然准确。Terminal
下一步
故障排除
环境、工具和渲染问题
常见错误
破坏渲染的合成陷阱
渲染
渲染模式、选项和标志
CLI 参考
CLI 命令的完整列表