#游戏unity-VR场景漫游#shader之消除纹理重复感
生活随笔
收集整理的這篇文章主要介紹了
#游戏unity-VR场景漫游#shader之消除纹理重复感
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
當(dāng)游戲中地面的紋理都是重復(fù)的時(shí)候,會(huì)看起來(lái)很假,而且影響沉浸感。
很明顯地可以看出來(lái)有固定的pattern。這主要是因?yàn)槊總€(gè)0~1的tile內(nèi)的紋理都是完全一樣的,iq提出了兩種方法來(lái)改良,使得看起來(lái)不會(huì)這么有重復(fù)感。當(dāng)然,這兩種技術(shù)都會(huì)成倍增大采樣的次數(shù),同時(shí)也有一些額外的計(jì)算,但效果還是不錯(cuò)的,在能夠承受這種cost的時(shí)候還是很值得一用的。
對(duì)每個(gè)tile使用的紋理進(jìn)行隨機(jī)的翻轉(zhuǎn)和平移
- 消除每個(gè)tile的重復(fù)感。這是通過(guò)判斷當(dāng)前所處的tile(這可以利用floor(uv)輕松得到),然后給每個(gè)tile一個(gè)四維的偽隨機(jī)數(shù),xy表示該tile的翻轉(zhuǎn)方向(即水平和豎直方向上是否要進(jìn)行mirror),zw表示該tile的平移方向,至此就可以保證每個(gè)tile都是不同的了。
上一步的結(jié)果有兩個(gè)問(wèn)題,首先是在tile和tile相交處有明顯的接縫問(wèn)題。這個(gè)可以通過(guò)算該tile旁邊的三個(gè)tiles的采樣結(jié)果,然后靠uv的小數(shù)部分判斷距離接縫處的距離,并據(jù)此來(lái)混合四個(gè)采樣結(jié)果,模糊接縫處使得結(jié)果看起來(lái)比較自然。何時(shí)開(kāi)始混合邊界可以當(dāng)成一個(gè)參數(shù)來(lái)調(diào)節(jié)。
即便模糊了接縫處,還是會(huì)有一些殘留的接縫。這些接縫產(chǎn)生的原因是因?yàn)槲覀冞@種方法會(huì)使得uv在tile的邊界處產(chǎn)生很大的跳躍,導(dǎo)致mipmaping的時(shí)候也會(huì)出現(xiàn)跳躍。解決方法就是傳遞正確的ddx和ddy給tex2D函數(shù),避免uv跳躍即可。
Voronoi分布來(lái)劃分和混合空間
這種劃分的好處是混合是發(fā)生在Voronoi圖上的,而不是整整齊齊的方格上,看起來(lái)可能更加自然。
- 空間劃分。整個(gè)空間還是會(huì)有若干的tile,但是會(huì)在每個(gè)tile內(nèi)隨機(jī)生成一個(gè)Voronoi點(diǎn),每個(gè)點(diǎn)對(duì)應(yīng)了一個(gè)紋理樣式(靠隨機(jī)平移來(lái)區(qū)分)。
- 混合。計(jì)算每個(gè)像素所在的周圍9個(gè)Voronoi點(diǎn),采樣得到它們的紋理顏色,混合的時(shí)候依靠該像素到每個(gè)Voronoi點(diǎn)的距離的高斯衰減值作為混合權(quán)重,也就是說(shuō),距離Voronoi點(diǎn)越近權(quán)重越高。與方法一不同,這種方法其實(shí)隨時(shí)隨地都在混合(方法一的混合只發(fā)生在邊界處),因此采用高斯衰減的好處就在于越靠近高斯衰減權(quán)重會(huì)迅速升高,使得混合不會(huì)造成整體非常模糊。最后,還需要對(duì)總體混合權(quán)重進(jìn)行一次歸一化,防止顏色失真。
shader代碼——
總結(jié)
以上是生活随笔為你收集整理的#游戏unity-VR场景漫游#shader之消除纹理重复感的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 挖金必备,皆为利来
- 下一篇: 18个国外优质图片素材