cos
cos
一个数学节点,封装了 GLSL 的 `cos()` 函数。它接收一个输入(通常是时间或 UV 坐标),并输出一个在 -1 到 1 之间平滑振荡的周期性值。
核心优势
通过将底层的 `cos()` 函数抽象为可复用的节点,极大地简化了周期性动态效果(如波浪、脉冲)的创建。它提升了代码的可读性和可组合性,让开发者能以更直观的节点化思维进行创作,而无需手写 GLSL 和管理变量。
常见用途
通过在顶点着色器中修改顶点高度,模拟水面或旗帜的波浪效果。
通过周期性地改变材质的自发光颜色强度,实现平滑的呼吸灯或脉冲效果。
在片元着色器中基于 UV 坐标生成程序化的条纹或环形波纹图案。
作为一个在 [0, 1] 区间内来回摆动的混合因子,用于在两种状态(如颜色、纹理)之间平滑过渡。
如何调整
通过控制其输入值来调整效果。在 `cos` 节点前乘以一个值(频率)可以使振荡更密集或稀疏;加上一个值(相位,通常是时间)可以使效果产生位移或动画。
代码示例
1 // 创建一个在 0.0 和 1.0 之间平滑振荡的值
2 const pulse = cos( time ).mul( 0.5 ).add( 0.5 );
3
4 // 用它来驱动自发光颜色的强度
5 material.emissiveColor = baseColor.mul( pulse );