如何在Unity5中渲染不断变化的高度图?

How to render evolving heightmap in Unity5?

我在Unity中生成了一个灰度高度图,我想渲染它。类似于 Unity 中的地形,但不使用地形组件并且能够经常更改而不会造成太多性能损失。

目前我生成了一个网格(在 c# 中),然后在脚本中改变了每一帧的顶点。然而,这很慢,并且限制了我的高度图的分辨率(Unity 只允许最多 65000 个顶点的网格)。

所以我想知道,有没有更好的方法来渲染这个高度图?

备注:

非常感谢!

我刚才找到了如何做到这一点,但忘了 post 我的解决方案。所以一年多后就在这里,也许它会对其他人有所帮助:

您可以简单地将顶点函数添加到任何着色器中:

首先添加如下内容:#pragma surface surf Standard fullforwardshadows vertex:vertvertex:vert 部分很重要,类似的行可能已经在着色器中,因此只需将其添加到该行)。

然后用你的名字创建顶点函数(在我的例子中是"vert"):

void vert(inout appdata_full v) {
    float4 wsr = tex2Dlod(_MyTexture, v.texcoord);
    v.vertex.y = wsr.r + wsr.g + wsr.b;
}

你还需要一个采样器(我只是把它放在 vert 函数上面)

sampler2D _MyTexture;