mx_frame
mx_frame
MaterialX 兼容别名:返回当前渲染帧号(无符号整数 uint),与 frameId 等效,可用于逐帧切换的离散逻辑。
核心优势
无缝移植 MaterialX 着色器,并提供不依赖连续时间的离散帧计数;避免浮点时间带来的漂移与精度问题,非常适合奇偶切换、步进动画、抖动/TAA 等用例。
常见用途
TAA/抖动:按帧奇偶在两套采样模式间切换。
定格/步进动画:每 N 帧推进一次状态或阈值。
逐帧重置随机种子:生成闪烁、胶片噪声或蓝噪点抖动。
Flipbook/序列帧:使用 mod(mx_frame(), 帧数) 选择贴图子帧。
如何调整
该节点只读且每渲染帧自增 1。通过改变取模基数(例如 uint(8)→uint(16))可调整切换周期;结合比较(奇偶、阈值)或整除可构造多级步进动画。若需连续时间,请改用 time 或 deltaTime。
代码示例
1
2// 每 8 帧在两种颜色间切换(前 4 帧 A,后 4 帧 B)
3const phase = mod( mx_frame(), uint(8) );
4const isFirstHalf = phase.lessThan( uint(4) );
5
6material.colorNode = cond(
7 isFirstHalf,
8 color( 0x00ffaa ),
9 color( 0x2244aa )
10);
11