自定义效果
如果设置里没有你想要的效果,就让代理来做:每次点击时泛起的波纹、像呼吸一样明暗变化的暗角、最后几秒淡出到黑色。代理把效果写成一个小小的 GPU 着色器,OpenScreen 会在预览以及每次导出(MP4 和 GIF)中绘制它,Windows、macOS 和 Linux 上都是如此。
效果来自代理:内置聊天,或者 Claude Code、Codex 等 MCP 客户端(参见 AI 编辑)。效果进入项目后,你可以在编辑器里自己调整。
请求一个效果
描述你想看到什么,以及在什么时候出现,例如“每次点击都有波纹”“最后两秒淡出到黑色,字幕也一起”。代理会写出效果、把它放到时间轴上,并且可以用 getFrames 查看结果,无需导出视频。
效果知道光标在哪里、每次点击落在哪里,知道经过缩放和布局之后录屏和摄像头在视频中的位置,也知道当前时间。因此,光晕可以跟随鼠标,波纹可以从每次点击的位置泛起,无论缩放把它移到了哪里。
在编辑器中
项目里一有效果,时间轴上就会在全屏摄像头区间下方出现效果专用的一行。每个区块都显示效果的名称。可以像其他区间一样移动、调整长度、复制粘贴或删除它,Ctrl/Cmd + Z 可以撤销修改。同一时间只播放一个效果:粘贴到另一个效果上会被拒绝。
点击区块即可打开它的检查器:
- 每个设置对应一个控件:代理为效果提供的每个设置,会显示为滑块、开关、颜色或点。
- 作用于,即效果绘制在哪里:
- 画面(默认):录屏、摄像头、光标和背景,位于你的标注和字幕之下,文字保持清晰可读。
- 文字:只作用于标注和字幕。
- 两者:整个画面,包括文字,例如连字幕一起覆盖的淡出到黑色。
- 开销:轻、中、重或很重(参见下文)。
- 代码:只读的着色器代码,附带复制代码按钮。要修改它,请让代理来改。
把复制的效果粘贴到另一个项目时,它的代码也会一起带过去。
开销
开销根据代码估算:统计效果为每个像素读取画面的次数。同一份代码在任何电脑上都得到相同的级别。不会因为开销而拒绝任何效果:效果越重,适合它的片段就越短。
| 级别 | 典型效果 | 适合 |
|---|---|---|
| 轻 | 暗角、调色、点击波纹 | 整个视频 |
| 中 | 色差、轻微模糊、故障效果 | 几十秒 |
| 重 | 强模糊、散景 | 一个转场、一个高光时刻 |
| 很重 | 光线步进、模拟 | 几秒钟:导出依然准确但更慢,在性能较弱的 GPU 上预览可能会变慢 |
效果无法编译时
代理的代码会在效果被接受之前编译。编译失败的代码会连同编译器的错误一起被拒绝,项目保持不变。
在另一台电脑上打开的项目,仍可能遇到判断不同的编译器。这时效果不会被绘制,它的检查器会显示无法在这台电脑上编译以及错误信息,导出则会在没有该效果的情况下继续。
他人的项目
项目会带着其中效果的代码,所以打开别人的项目会运行不是你写的代码。这段代码只在 GPU 上运行,无法访问你的文件、网络或应用的内存。
面向代理开发者
相关工具是 addEffect、setEffect、setEffectDefinition 和 getEffect,用 removeModifier 移除效果。完整的约定,也就是 effect(uv) 函数、它能读取的内容及其规则,在 MCP 资源 openscreen://effects/contract 中。