unity3d 随机生成地形之随机山脉
利用Fractal Noise生成地形,再加上山体shader,外加雪shader
Noise生成结果
noise 生成主要參考这篇文章,就不再赘述
Perlin2D:
Fractal Noise:
地形生成结果
生成地形网格方法主要參考这篇文章。就不再赘述
noise 频率:22,分辨率:256
Value3D:
noise 有非常多用处,比方地形。水体。流体。特殊物体的纹理。或使贴图不反复等等
山体shader
Shader方面分为两层。上层为岩石,下层为植物,(可依据贴图变化)使用了四种贴图,上层两种,下层两种,噪声贴图来调整两种比例,以免一种过为单调,人工迹象明显
代码主要是利用lerp
注意:生成地形时,noise的uv比例要调整好(山体密度与细节)
雪部分主要依据下雪方向与法线方向推断,两者做点积,
再把下雪部分赋以特定雪纹理,就ok了
if (dot(N, _SnowDir) > _SnowInten) { c = _SnowColor; N = normalize(i.normal) + normalize(UnpackNormal(tex2D(_SnowNormalTex, i.uv_SnowNormalTex))); }
结果
加上雾效与AA,bloom
所有代码已共享至github
---------------by wolf96 http://blog.csdn.net/wolf96