- 音视频
- 图形学
- 桌面应用
【免费下载链接】t3
TiXL is an open source software to create realtime motion graphics.
AfterGlow2 是 TiXL 实时动态图形软件中Lib.image.fx.feedback反馈效果库的一员,专门为移动画面(Moving Images)创建余辉(Afterglow)效果——物体运动后留下逐渐衰减的发光拖影。本文以仓库中的 AfterGlow2 算子文档 为核心骨架,结合其源码、符号定义与 UI 配置,完整讲解 AfterGlow2 的 6 个输入参数、2 个输出端口的含义与默认值、内部子图实现原理,以及如何将其嵌入 PostFX 后处理管线。读完本文,你将能在 TiXL 中熟练调出拖影长短、辉光强度、模糊程度、叠加色调等各类余辉观感,并理解这类"帧间反馈累积"效果的底层数据流。
AfterGlow2 在 TiXL 算子库中的定位
AfterGlow2 归属于Lib.image.fx.feedback命名空间,仓库中与之对应的源码为 AfterGlow2.cs。从算子库索引 feedback 目录 README 可以看到,该目录集中了 TiXL 中所有基于"反馈(Feedback)"机制的图像效果算子:
- AfterGlow / AfterGlow2—— 为移动图像创建余辉拖影效果,其中 AfterGlow2 是较新版本;
- FluidFeedback—— 反馈与位移(Displacement)组合的流体化示例;
- AdvancedFeedback—— 更强大但更难控制的进阶反馈效果,会利用边缘检测并稳定反馈缓冲区的数值范围;
- AdvancedFeedback2—— 基于 OKLab 色彩空间改进的反馈效果;
- SimpleLiquid / SimpleLiquid2—— 移植自 Shadertoy 的"简单细节流体"效果。
原文档还指出,AfterGlow2 适合与以下算子共同构建一条完整的 PostFX 后处理管线:MotionBlur(运动模糊)、DepthOfField(景深)、ChromaticAberration(色差)、Glow(辉光)、Grain(颗粒)、Blur(模糊)。这些算子与 AfterGlow2 一样,都位于图像特效家族中,可以在 TiXL 节点图里串成"先拖影、再模糊、再加辉光"的复合风格化流程。
需要区分的是:AfterGlow2 属于"帧间反馈"类效果(同一画面的历史帧不断累积),与 AfterGlow 旧版同源。旧版 AfterGlow.cs 额外暴露了ContrastOffset2(对比度偏移)与Resolution(分辨率)两个输入;AfterGlow2 则精简掉这两个参数,改用OrgColor(原图着色)参数,并把输入分组为 Settings(DecayRate、GlowImpact、BlurAmount)与 Color(Color、OrgColor)两组,交互上更直观。
输入参数详解(含默认值与取值范围)
原文档完整列出了 AfterGlow2 的 6 个输入参数。以下表格在继承原文档描述的基础上,补充了从符号定义 AfterGlow2.t3 与界面配置 AfterGlow2.t3ui 中确认的默认值、取值范围与分组信息:
| 名称(相关性 & 类型) | 原文档描述 | 默认值 | 界面范围/约束 | UI 分组 |
|---|---|---|---|---|
| Image(Texture2D) | — | null | 任意纹理输入 | — |
| DecayRate(Single) | 定义余辉衰减的快慢 | 0.015666667 | 0 ~ 1,ClampMin + ClampMax,步长 Scale=0.001 | Settings |
| GlowImpact(Single) | 控制辉光效果的强度 | 0.7 | 0 ~ 1,ClampMin,步长 Scale=0.01 | Settings |
| BlurAmount(Single) | 控制余辉产生的图像被模糊的程度 | 2.0 | 0 ~ 10,ClampMin | Settings |
| Color(Vector4) | 定义添加到余辉上的颜色 | (1, 1, 1, 1) | 无范围约束 | Color |
| OrgColor(Vector4) | 定义添加到原始图像上的颜色 | (1, 1, 1, 1) | 0 ~ 1,ClampMin + ClampMax | Color |
各参数的实际作用可从源码中的槽位定义逐一对应:
Image:输入纹理,对应 AfterGlow2.cs 中的InputSlot<Texture2D> Image,是效果的数据源,通常接入视频、渲染场景或上一级特效的输出;DecayRate:余辉衰减速率。值越大,历史帧残留消失得越快,拖影越短;值接近 0 时残影滞留很久,产生长拖尾。UI 中将取值范围钳制在 0~1 之间,并提供 0.001 的精细步长,便于微调;GlowImpact:辉光强度。从 AfterGlow2.t3 的连接关系可以看到它被送入内部Blur节点的Opacity(不透明度)输入,即通过控制模糊层的不透明度来调节辉光强弱;BlurAmount:模糊量。同样从符号定义可见,它被接到内部Blur节点的Size(模糊尺寸)输入,负责把余辉图像"糊开",产生柔和的弥散拖影;Color:加到余辉层上的颜色。它接入内部DrawScreenQuad节点,用指定颜色给残影重新着色,例如注入偏暖或偏冷的色调;OrgColor:加到原始图像上的颜色。它接入内部Blend节点的ColorA输入,对当前帧原图做统一染色,实现"原图调色 + 余辉着色"的双通道控制,这是 AfterGlow2 相对旧版 AfterGlow 的差异化能力。
输出端口
| 名称 | 类型 |
|---|---|
| Output | T3.Core.DataTypes.Texture2D |
| CombinedLayers | T3.Core.DataTypes.Command |
两个输出端口在 AfterGlow2.cs 中分别声明为Slot<Texture2D>与Slot<Command>:
- Output:合成后的余辉效果纹理,供后续算子继续处理或直接显示;
- CombinedLayers:一个 Command 类型输出,代表内部图层合并后的绘制命令。在 TiXL 中
Command输出可被合入更大的渲染流程(如输出到主渲染目标或与其他 Command 复合),可用于把内部合成的多层结果整体提交给渲染管线。
内部实现原理:从符号子图看"帧间反馈累积"
AfterGlow2 是一个组合算子(Composite Operator),其核心逻辑并不在 C# 中硬编码,而是通过 AfterGlow2.t3 定义的子图(Children)与连接(Connections)装配而成。从符号定义可以推断其内部数据流大致为:
- 取尺寸:
GetTextureSize读取输入Image的分辨率,经ScaleSize(Scale=1.0)后作为RenderTarget的Resolution输入,保证离屏渲染目标与源图尺寸一致; - 离屏渲染目标:
RenderTarget配置为Multisampling=4(4x MSAA 抗锯齿)、Clear=false(不清屏),ClearColor 为接近纯黑的极小值(1.49e-8, 1.49e-8, 0, 0)。不清屏是余辉效果的关键——上一帧绘制的内容会保留在缓冲区中,与当前帧叠加,从而形成历史帧的累积残影; - 原图染色:
Blend节点把OrgColor(ColorA)与输入Image(ColorB)混合,得到被着色的当前帧,然后交给Execute绘制到渲染目标上; - 余辉着色与模糊:
DrawScreenQuad使用Color输入给残影着色(BlendMode=1),随后Blur节点(默认 Offset=-0.04、Samples=8、Size≈2.02、Opacity≈0.7333、Resolution=1280×720)对图像进行模糊。这里BlurAmount→Size、GlowImpact→Opacity、DecayRate经Vector4调制后的颜色层(Layer2d 的 Color 值约(0, 0, 1e-6, 0.008),带极低透明度)→模糊层不透明度,共同构成"模糊 + 辉光 + 衰减"的合成; - 分层输出:多个
Layer2d节点(BlendMode 分别为 1 与 0,其中一个 Stretch=(4,1)、ScaleMode=4)把各层组合,最终输出到Output(Texture2D)与CombinedLayers(Command)两个端口。
整体上,AfterGlow2 的余辉本质是"不清屏的渲染目标 + 每帧衰减遮罩 + 模糊辉光 + 双路染色"的组合:历史帧在缓冲区内持续累积,DecayRate控制的衰减遮罩让旧帧逐帧淡出,BlurAmount/GlowImpact让残影柔和发光,Color/OrgColor分别给残影与原图着色。
实战用法:把 AfterGlow2 接入 PostFX 管线
结合原文档的建议,AfterGlow2 的典型使用方式如下:
- 搭建输入链:将视频、粒子渲染或场景纹理接入
Image输入。由于效果依赖帧间信息,输入应随时间变化(如移动的对象、滚动的画面),静止画面几乎看不到余辉; - 调拖影长短:先调
DecayRate。想要短促利落的拖尾,把值提高到 0.05~0.1;想要绵长的流光,降到 0.005~0.01。UI 的 0.001 步长适合精细调节; - 调辉光观感:用
GlowImpact(0~1)控制模糊层的强度,用BlurAmount(0~10)控制拖影的弥散范围。两者配合可以做出"硬边拖尾"(低 BlurAmount)或"霓虹光带"(高 BlurAmount + 高 GlowImpact)两种风格; - 双路调色:
Color决定残影颜色(例如用青色/洋红营造赛博朋克氛围),OrgColor决定原图色调(例如略微暖化或冷化当前帧),两个 Vector4 的 RGBA 分量可独立驱动,也可连接参数动画随时间渐变; - 串联其他后处理:AfterGlow2 的
Output输出纹理可继续接入 MotionBlur、DepthOfField、ChromaticAberration、Glow、Grain、Blur 等 PostFX 算子形成完整风格化管线;CombinedLayers的 Command 输出可汇入更大的合成流程; - 对比旧版 AfterGlow:若需要额外的对比度偏移(
ContrastOffset2)或手动指定Resolution,可改用 AfterGlow;若追求更可控、更稳定的反馈行为,可研究 AdvancedFeedback 与 AdvancedFeedback2。
仓库文件速查
| 文件 | 作用 |
|---|---|
| .help/docs/operators/lib/image/fx/feedback/AfterGlow2.md | 算子文档(本文主体) |
| .help/docs/operators/lib/image/fx/feedback/README.md | feedback 算子库索引 |
| Operators/Lib/Symbols/image/fx/feedback/AfterGlow2.cs | C# 槽位定义(Guid、输入输出声明) |
| Operators/Lib/Symbols/image/fx/feedback/AfterGlow2.t3 | 符号定义:子图结构、连接关系与参数默认值 |
| Operators/Lib/Symbols/image/fx/feedback/AfterGlow2.t3ui | 界面配置:参数范围、Clamp 约束、分组与描述 |
| Operators/Lib/Symbols/image/fx/feedback/AfterGlow.cs | 旧版 AfterGlow 的 C# 定义(对比参考) |
小结
AfterGlow2 是 TiXL 中实现"运动余辉拖影"最直接、参数最聚焦的算子之一:6 个输入覆盖了源图像、衰减速率、辉光强度、模糊量、残影着色与原图着色,2 个输出分别提供纹理与 Command 两种消费方式。其核心实现依赖"不清屏渲染目标 + 衰减遮罩 + 模糊层"的帧间累积机制,这一点已由 AfterGlow2.t3 的子图结构印证。将它与 MotionBlur、DepthOfField、ChromaticAberration、Glow、Grain、Blur 等算子串联,即可在实时动效中快速构建出富有层次的 PostFX 风格化管线。
- 音视频
- 图形学
- 桌面应用
【免费下载链接】t3
TiXL is an open source software to create realtime motion graphics.
相关推荐
tsParticles External Trail 交互插件:为鼠标轨迹打造粒子拖尾效果的完整实战指南
tsParticles External Trail 交互插件:为鼠标轨迹打造粒子拖尾效果的完整实战指南 本篇基于 tsParticles 官方仓库中 inte
前端ThreeJS-water:零基础打造电影级3D水面效果的完整实战指南
ThreeJS water:零基础打造电影级3D水面效果的完整实战指南 ThreeJS water是一个基于Three.js框架实现的高性能3D水面模拟项目,它
图形学3D渲染如何用Slint粒子系统快速打造惊艳动态效果:从入门到精通的完整指南
如何用Slint粒子系统快速打造惊艳动态效果:从入门到精通的完整指南 Slint 是一个声明式的图形用户界面(GUI)工具包,专为 Rust、C++ 或 Jav
前端UI组件桌面应用嵌入式移动开发跨平台
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考