unity3d 随机生成地形之随机山脉
利用Fractal Noise生成地形,再加上山體shader,外加雪shader
Noise生成結(jié)果
?
noise?生成主要參考這篇文章,就不再贅述
Value3D:
 
Perlin2D:
 
Fractal Noise:
?
地形生成結(jié)果
生成地形網(wǎng)格方法主要參考這篇文章,就不再贅述
noise?頻率:22,分辨率:256
 
Value3D:
?
 Perlin2D:
?
 Fractal Noise:
?
noise?有很多用處,比如地形,水體,流體,特殊物體的紋理,或使貼圖不重復(fù)等等
?
山體shader
 Shader方面分為兩層,上層為巖石,下層為植物,(可根據(jù)貼圖變化)
使用了四種貼圖,上層兩種,下層兩種,噪聲貼圖來調(diào)整兩種比例,以免一種過為單調(diào),人工跡象明顯
代碼主要是利用lerp
注意:生成地形時,noise的uv比例要調(diào)整好(山體密度與細(xì)節(jié))
雪部分主要根據(jù)下雪方向與法線方向判斷,兩者做點(diǎn)積,
再把下雪部分賦以特定雪紋理,就ok了
if (dot(N, _SnowDir) > _SnowInten) {c = _SnowColor;N = normalize(i.normal) + normalize(UnpackNormal(tex2D(_SnowNormalTex, i.uv_SnowNormalTex)));}結(jié)果
加上霧效與AA,bloom
?
?
?
?
全部代碼已共享至github
 
????????????????????????????? ---------------by?? wolf96 
轉(zhuǎn)載于:https://www.cnblogs.com/zhanlang96/p/4709687.html
總結(jié)
以上是生活随笔為你收集整理的unity3d 随机生成地形之随机山脉的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 在子线程中创建新的窗体,遇到的问题。
 - 下一篇: android通用的UUID唯一标示符