最近在想办法实现多角色与草地交互的办法(简单来说就是踩草、气浪影响草之类的),一般来说都需要在Shader里处理,之后就采取了一系列的办法,比如说将角色的坐标描画到RenderTarget上之类的,结果效果不甚理想,而且由于RenderTarget上的数据是二维的信息,没法理想的处理Z轴的变化(角色跳起来之类的),多一个RenderTarget描画Z的信息又太占用空间了。最后还是回到老的思路,Shader里能不能用数组来存放附近的坐标信息?虚幻提供的材质参数集(MaterialParameterCollection)并没有提供数组,思来想去,那就用RenderTarget模拟数组提供坐标信息给Shader吧。
(以下用RT称呼RenderTarget)
首先,虽然我们看到的都是RT图片,然而它实际上都是由数字构成,比如说格式为RTF RGBA32f的实际上那四个通道对应的是32位的浮点数据,所以说,我们只需要将每个像素都看作是一个4维的数据那就可以用RT来模拟数组了。
以下是正文,RT数组的制作方法。
首先创建RT
创建了1024大小的数组
然后需要制作一个描画RT的像素蒙版,3*3像素即可,四通道中正中为白色