GLSL 效果示例

三平面贴图:给没有 UV 的岩石贴上纹理

旋转岩石,对比单向投影的拉伸和三轴混合后的过渡。

在线示例

修改右侧代码,左侧预览会实时更新。

观察什么

旋转岩石,对比单向投影的拉伸和三轴混合后的过渡。

实现原理

按法线三轴权重混合三个平面投影,岩石陡面不再只靠一个投影方向取纹理。

找到控制效果的代码

return length(p)-.7-.07*sin(p.x*9.)*sin(p.y*8.)*sin(p.z*8.);

动手修改

把 pow(abs(normal),vec3(4.)) 的混合权重指数从 4. 改为 1.。三张投影图会在更宽范围内混合,凹凸岩石上的过渡更容易看清。

调试与成本

每次表面命中在追踪和法线估算后,还增加三次纹理读取。把三处投影尺度 *.5+.5 改为 *1.+.5,纹理频率会提高;测试图采用边界限制,因此不会自动出现重复铺贴。

用到的内置函数

一步步学会这个效果