Unreal 2D案例 地圖生成 偽代碼(by shadertoy)
有了理論基礎(chǔ)后,就可以很輕松用shadertoy坐測(cè)試了。
一、隨機(jī)數(shù)

如果uv.x和uv.y的乘數(shù)不夠大,太接近,就會(huì)看到重復(fù)性。

二、noise
有句老話叫:遠(yuǎn)看巴適得板,近看麻子點(diǎn)點(diǎn)。
我們?nèi)【W(wǎng)格的四個(gè)點(diǎn),中間的值進(jìn)行平滑。

因?yàn)?fragcoord / iresolution得到的值為0~1,所以u(píng)v*1.0 = 0.0~1.0


仔細(xì)看noise部分
decimal_fraction:小數(shù)部分
ID:整數(shù)部分
bl 所在ID的 bottom left
br 所在ID 的 bottom right
tl 所在ID的 top left
tr 所在ID的 top right
然后用mix,平滑他們的值,
b和t用小數(shù)部分的x坐標(biāo),再在y的部分平滑。
當(dāng)然我們可以把他們的四個(gè)頂點(diǎn)的偏移修改,就會(huì)得到一些奇奇怪怪但是有規(guī)律的畫面
比如bl偏移不是(0,0),改成(1,0);

三、平滑的noise
只需要添加一行
df = df*df*(3.-2.*df);
因?yàn)閐f是0~1,所以 df越小,df*df越小,但是 (3-2*df)越大,就像把他們會(huì)得到一個(gè)平滑的曲線.

四、讓noise更加的隨機(jī)
多個(gè)圖層疊加就可以了

如下

五、裝逼
給偏移的時(shí)候添加時(shí)間

動(dòng)畫參考下面鏈接:
https://www.bilibili.com/video/bv1cU4y1e7wY?vd_source=a7e6223853bf30207cbe0820f61dfce9
總結(jié):
簡(jiǎn)單一句話不能概況,又不能不寫,單獨(dú)開張。