3

这是我第一次发帖; 如果看起来我迷路了,请原谅我,因为我迷路了。

我正在使用高度图在 WebGL 和three.js 中实现大型地形。我可以用常规的 PlaneGeometry 做我想做的一切(到目前为止)——设置平面,从高度图中读取和分配高度值,从高度图中读取和插入顶点间高度,以便玩家可以沿着地形无需参考几何图形,也无需指定纹理和灯光。

问题是我似乎仅限于 513x513 顶点平面;任何高于此,一切都开始突突或崩溃。我知道解决这个问题的方法是使用缓冲几何和着色器将繁重的工作卸载到 GPU 上,我已经想出了如何将高度读入一个数组,然后将该数组交给 GPU 进行置换,但是现在我丢失了照明信息,我不知道如何找回它。我想我可以添加自己的灯光,但我很确定有一种方法可以告诉着色器使用场景的灯光。我认为该解决方案与 ShaderLib 和/或 UniformUtils 有关,但我不知道如何使用它们,而且我在网上找到的所有示例都已损坏。

所以我想我的问题是:如何获取现有着色器(phong、lambert)的一部分并将我自己的代码添加到它们中?

4

0 回答 0