pass
pass
一个强大的节点,它将一个完整的渲染通道(用指定相机渲染指定场景)封装起来,并将其结果作为一个类似纹理的颜色节点,供其他材质使用。
核心优势
它将多通道渲染无缝集成到 TSL 节点系统中。它抽象了复杂的底层操作(如管理渲染目标),允许开发者将一个完整的渲染通道当作一个简单的颜色输入来使用,从而极大地简化了传送门、安防监控和动态反射等效果的创建。
常见用途
创建传送门:传送门材质的颜色由一个 `pass` 节点提供,该节点使用放置在目标地点的相机来渲染目标场景。
模拟安防监控:每个监视器屏幕都使用一个 `pass` 节点,并关联一个场景中的不同固定摄像头,以显示“直播画面”。
生成实时反射:使用 `pass` 节点从物体视角渲染周围环境,从而为复杂曲面创建一个动态的反射贴图。
如何调整
调整是在 JavaScript 中通过修改 `pass` 节点的属性或其引用的对象来完成的。在渲染循环中改变 `camera` 的位置会动态更新视图(如移动传送门视角)。切换 `.scene` 属性会立即改变渲染内容(如切换电视频道)。降低 `.resolution` 属性会使输出图像像素化,但能显著提升性能。
代码示例
1// 1. 为传送门另一侧准备场景和相机
2const portalScene = new THREE.Scene();
3const portalCamera = new THREE.PerspectiveCamera();
4
5// 2. 传送门材质的颜色直接来自 pass 节点
6const portalMaterial = new MeshBasicNodeMaterial({
7 colorNode: pass(portalScene, portalCamera)
8});