frontFacing
frontFacing
在 TSL 着色器中提供一个布尔值,用于判断当前片元(像素)是否属于几何体的“正面”,直接对应 GLSL 内置变量 `gl_FrontFacing`。
核心优势
它是区分几何体正反面的唯一、零成本且绝对可靠的方式,是实现真正双面材质(即正反面具有不同外观)的基石。
常见用途
为物体正反面应用不同的颜色或纹理,如扑克牌。
在模型剖面视图中,为暴露的内表面(反面)应用特殊高亮颜色。
为双面材质修正光照,确保反面的法线也能正确朝向相机。
作为调试工具,通过不同颜色显示来检查模型中是否存在法线翻转问题。
如何调整
此节点的值不可调整。它的布尔值(true/false)由相机相对于几何表面的观察角度决定。要使其生效,必须在 JavaScript 中将材质的 `side` 属性设置为 `THREE.DoubleSide`。
代码示例
1// 如果是正面,使用正面颜色;否则,使用背面颜色
2outputNode.color = cond( frontFacing, frontSideColor, backSideColor );
3
4// 为确保双面光照正确,让法线始终朝向相机
5const facingNormal = cond( frontFacing, normal, negate( normal ) );