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,纹理频率会提高;测试图采用边界限制,因此不会自动出现重复铺贴。