convertToTexture
convertToTexture
一个强大的工具函数,它能将任何 TSL 节点图的视觉输出结果“快照”或“烘焙”成一个可复用的纹理,从而将繁琐的手动“渲染到纹理”(RTT)流程完全自动化。
核心优势
终极的抽象能力。它将创建渲染目标、独立场景、相机和执行渲染等所有复杂的底层 RTT 操作封装在单个函数调用中,从而在 TSL 的声明式工作流内解锁了后期处理、反馈循环和实时程序化纹理生成等高级特效。
常见用途
实时生成程序化纹理,如将复杂的噪声计算结果“烘焙”成贴图。
连接后期处理效果链,将上一个滤镜的输出作为下一个滤镜的输入。
创建反馈循环与模拟,通过读取上一帧的结果来实现拖影或反应扩散效果。
作为性能缓存,将静态但计算昂贵的节点图只渲染一次并复用其结果。
如何调整
通过在第二个参数中提供配置对象来调整,例如 `{ width: 512, height: 512 }` 可以控制生成纹理的分辨率,这是性能和质量之间的权衡。改变其第一个参数(输入的节点网络)则会从根本上改变被“快照”的内容,例如引入 `timerLocal` 节点可以创造出动态变化的纹理。
代码示例
1// 1. 创建一个随时间变化的动态图案
2const animatedPattern = checkerPattern.uv( uv().add( sin( timerLocal() ) ) );
3
4// 2. 将这个动画图案“快照”成一张纹理,它会在每一帧自动更新
5const dynamicTexture = convertToTexture( animatedPattern );