viewportSafeUV
viewportSafeUV
通过深度检查来修正折射效果中的瑕疵,确保扭曲的UV坐标只采样背景物体,防止前景被错误地“贴”在折射表面上。
核心优势
它将复杂的深度比较逻辑封装成一个节点,彻底解决了折射效果中常见的前景物体渲染错误问题,让开发者能轻松创建出物理上更准确、视觉上更可信的折射材质。
常见用途
物理准确的玻璃或钻石材质
带有波浪的真实水面
热浪或魔法护盾等失真效果
如何调整
该节点本身无参数可调,其行为完全取决于你传入的UV节点的扭曲强度和模式。它的作用是“纠错”而非创造效果,通过对比使用和不使用它,可以清晰地看到其修正前景渲染错误的核心价值。
代码示例
1// 创建一组扭曲的UV来模拟折射
2const distortedUV = screenUV().add( normalWorld.xy.mul(0.1) );
3
4// 【核心步骤】将扭曲的UV传入 viewportSafeUV 进行深度检查
5const safeUV = viewportSafeUV( distortedUV );
6
7// 使用返回的“安全”UV来采样背景
8const refractedColor = viewportTexture( safeUV );