[专栏作家]Unity&Shader案例篇—地图上热图分布

一、介绍

在二维平面地图上随机或者指定位置生成一系列的热量、能源或者其他需要表示的信息的分布图。可以通过切换不同的贴图表示不同的信息,如图所示表示的是该地区的降水量的变化

如图所示为表示该地区的温度变化分布图

二、实现

在贴图的的某个位置处绘制指定半径的圆圈,然后调整圆圈的强度也即透明度。因此Shader部分会定义这两类变量,因为Shader里面不能定义没有长度的数组,只能一开始给个固定比较大的100作为初始长度,在代码里传这个数组变量的时候只要不超过这个数组的长度的参数都是可以的。当然你穿了101个数组的参数也不会报错,但是超出100的肯定也不会被shader代码使用到。代码如下:

然后,计算每个分布点位置相对世界坐标原地的距离,再结合强度就可以都到一个输出的透明度值。片段着色器代码为:

接下来编写控制脚本,这里写了一个随机的位置、半径和强度。

最后要得到如上图所示的闪烁的热图效果,就是在已有的点位置上加一个噪声处理,如下:

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();