spherizeUV
spherizeUV
对 UV 坐标应用球形畸变,在 2D 平面上程序化地创建类似鱼眼镜头、水滴或引力场的视觉扭曲效果。
核心优势
能够直接在着色器中实时生成可动态调整参数的程序化畸变效果,避免了预制纹理的需要,且封装了复杂的数学运算,易于集成使用。
常见用途
模拟放大镜或鱼眼镜头
模拟水滴或涟漪效果
创建科幻/魔法效果(如黑洞、传送门)
如何调整
主要通过调整 `strength` 和 `center` 输入来控制。正的 `strength` 值会产生向外凸出的“鱼眼”效果,值越大畸变越强;负值则产生向内收缩的“挤压”效果。改变 `center`(一个 vec2 向量)可以移动畸变中心点,若连接鼠标坐标等动态数据,可实现交互式透镜效果。
代码示例
1// strength: 畸变强度, 正值凸出, 负值凹陷
2const strength = uniform( 1.5 );
3
4// 将 spherizeUV 应用于默认 uv(), 中心点默认为 vec2(0.5)
5const distortedUV = spherizeUV( uv(), strength );