最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

游戲渲染:SDF渲染還原死亡擱淺般的精細地面

2022-12-10 23:34 作者:DeadCyber  | 我要投稿

最近,死亡擱淺2的預(yù)告片發(fā)布了:

????

??? 讓我回想起死亡擱淺1。死亡擱淺1確實是一部優(yōu)秀的作品。從畫面角度來說,如此大地形下,土壤和植被的細節(jié)能這么多,實在是令人驚艷。令我影響深刻的尤其是Sam在冥灘上癱坐的時候,可以看見地面上的細節(jié)幾乎是像素級的,真正把次世代這3個字詮釋得淋漓盡致:

???

??? 那么,這樣精細的地面是如何能在玩家機器上跑得動的呢?(其次,在我個人的純SDF渲染流程里,怎樣應(yīng)用上呢?)接下來我將以一個解釋給純小白的視角,介紹這背后的技術(shù)。



一 超級建模?


??? 我們能想到最直觀的方式,就是使用超精細的模型。


??? 這個思路在UE5出現(xiàn)之前,是不可能被考慮的。原因很簡單,所需要的三角面數(shù)太多,玩家機器根本跑不動。


??? 而且一個超級模型處在傳統(tǒng)渲染管線里,牽扯到方方面面的計算,一但玩家移動視角,三角面的剔除,LOD切換,大世界的載入.......會使得計算消耗呈倍增長,讓幾乎每一個環(huán)節(jié)都出問題。



二 法線貼圖也不夠


????高精度三維模型的方案,不能被考慮的根本原因,還是數(shù)據(jù)量太大。如果我能減少數(shù)據(jù)量,豈不美哉?


??? 有一點了解的朋友可能知道,游戲模型在制作的時候會使用高模制作,然后用算法生成一個沒有細節(jié)的低模,最后將高模的細節(jié)烘培到一張法線圖上,貼在低模上,就能看起來和高模類似。


??? 這樣模型頂點數(shù)可以降得非常少,并且還能看起來很細致。之所有有這么神奇的效果,是因為根據(jù)法線貼圖計算出來的光照確實有著正確的光照強度。


?? 對于不想關(guān)心數(shù)學(xué)的朋友,可以把它理解成一個神奇的化妝品,畫在臉上可以勾勒輪廓,有明暗效果,并且其中含有的微型珍珠顆粒隨著光照變化起到非常動人和精細的效果。

???

??? 但法線貼圖和此類化妝一樣,雖然能模擬外表,但不能真正改變表面高度。導(dǎo)致我們從側(cè)面看的時候,還是“平平無奇”。

圖片來自網(wǎng)絡(luò),侵刪

???

圖片來自網(wǎng)絡(luò),侵刪

??? 假設(shè)我們的表面有一個小坑,坑里有一個小植物,那么從側(cè)面看的時候,應(yīng)該是看不到這個植物的——它應(yīng)該被坑擋住了。而如果我們只有法線貼圖,無論怎么變化視角,植物都能被看見。

???

??? 所以我們?nèi)鄙俚?,?strong>高度帶來的視覺遮擋問題



三 視差貼圖還不夠


??? 既然缺少高度,那么我們就引入高度圖。高度圖比法線圖更簡單,只需要存儲一個高度值就行了。

??? 把高度圖用上,卻不改變模型頂點位置和數(shù)量的技術(shù),叫“視差貼圖”。


??? 不得不說,這個名字起得不是很好。對于其效果來說,確實是起到欺騙人眼,但并沒有改變實體的效果。


??? 但是對其技術(shù)而言,跟視差沒有什么關(guān)系,更和uv偏移沒有什么關(guān)系。很多人一知半解,然后放網(wǎng)上以訛傳訛,這也是為什么很多人沒能真正理解和靈活運用視差貼圖技術(shù)的真正原因——因為“視差貼圖”技術(shù)真正地去(近似)計算了人眼射線和射線上高度曲線的相交點,從而根據(jù)相交點的位置取相應(yīng)像素,從某種意義上是真正的RayTrace。之所以有人會跟uv扯上關(guān)系,是因為高度場本來就是由一張貼圖決定的,算出了相交點;因為是一張圖,肯定會跟uv有關(guān)系,但這個技術(shù)的本質(zhì)跟什么uv偏移沒有任何關(guān)系。


????這個技術(shù)的本質(zhì),一言以敝之,就是視線射線與局部高度場求交點的問題,直觀的方法是二分法,最后在兩個正負點取中點。


?? 之所以我說“近似”計算,是因為實際求交點考慮到性能問題,只會固定一個次數(shù),或者接受一個error。


??? 網(wǎng)上有很多亂七八糟的實現(xiàn)和解釋,這里我就不贅述了。


??? 現(xiàn)在,由于高度產(chǎn)生的遮擋問題是解決了:

???

網(wǎng)圖,侵刪

??? 但還是有很多缺點,比如二分法求交點,你得保證函數(shù)連續(xù)吧,但是高度圖不一定連續(xù)啊,這就導(dǎo)致交點可能會不止1個,然后由于誤差范圍設(shè)置不當計算出錯;迭代次數(shù)少了,出錯;多了,太耗;error一致吧,性能不穩(wěn)定;迭代一致吧,error不穩(wěn)定.......


??? 不過最重要的問題,還是我們花費了這么多性能,馬上快趕上超級模型的消耗了,可側(cè)面看還是平平無奇啊.......



四 置換貼圖,最后的答案?


??? 看了上文的內(nèi)容,相信你也發(fā)現(xiàn)了:最后還是要真正地提高模型頂點位置,才行啊。


??? “置換貼圖”技術(shù)就應(yīng)運而生。這個名字取得更是狗食,因為還是用那張高度圖,根本就沒有別的圖片。硬要解釋的話,就是用它“置換”了原本平平無奇的模型。


??? 從技術(shù)內(nèi)容角度講,它也沒有任何技術(shù)難點,無非是根據(jù)高度圖將模型頂點往上拉一下。不過由于模型是地模,根本沒有頂點可拉,所以要配合硬件的曲面細分,先給Mesh加很多頂點,再往上拉(視頻1min12s):

???

??? 如果你是一個能獨立思考的人,相信你也發(fā)現(xiàn)了:什么傻玩意兒,那我早搞個高模不就完事了,跟你這扯什么扯,還要高度圖干啥。


??? 事實證明確實如此:1.很多游戲開發(fā)者不適用GPU硬件的曲面細分和Geometry Shader,因為其性能問題和bug問題嚴重? 2.UE5使用Nanite讓游戲能支持超級模型,并在開發(fā)界面中徹底去除了曲面細分相關(guān)功能。


??? 那死亡擱淺用的是啥呢?從網(wǎng)上看到的一些死亡擱淺culling(優(yōu)化三角面剔除)操作,我個人傾向認為是純堆三角面數(shù)(使用超級模型),然后手動處理Culling,LOD,加載流等所有頭疼的東西。也就是說,不像UE5的Nanite開發(fā)了一勞永逸的自動化支持超級模型的流程,也沒有用到各種花里胡哨,而是手動處理所有邏輯,保證玩家流程里能畫質(zhì)拉滿。


??? 所以分析下來,死亡擱淺的地形也沒有那么精細,也沒有用什么神奇技術(shù),只是某幾個單獨場景比較精細罷了?


???? 一方面,可以這么說,也許實際游玩的時候確實一般般,只不過被其他東西掩蓋了:

網(wǎng)圖,侵刪

??? 另一方面,即使是“播片狀態(tài)”,就這個畫質(zhì)來說,如果全用超級模型,我也很懷疑,玩家機器上是否能跑得動:

網(wǎng)圖,侵刪

??? 那么死亡擱淺到底用的是哪個技術(shù),視差?置換?細分?它們自己的Nanite?......


??? 對我來說,無所謂了。因為小島的游戲不應(yīng)該用來評價,而應(yīng)該用來啟發(fā)。



五 如果能超越這個時代


??? 之前做SDF地形的時候,由于是純數(shù)學(xué)建模,也沒有對PBR支持全貼圖流程,所以比較丑。

???


??? 不過受到置換貼圖的啟發(fā),我意識到,之前做的所謂SDF Terrain Detail,就可以看作是一種純數(shù)學(xué)的置換貼圖?,F(xiàn)在我在SDF造型的基礎(chǔ)上,加上高度圖進行offset,也就是

? SDFoffset = -k*HeightMap[uv].r

就能對SDF表面進行Displacement。并且不同的物體可以選擇不同的k,displacement低可以選比如0.5的K,這樣raymarch的步數(shù)會少一些,提升性能。而需要Displacement比較高的地方可以選0.1的K,用來應(yīng)對計算錯誤,以支持更高的“拔高”。


??? 選擇了制作規(guī)范的PBR貼圖后,發(fā)現(xiàn)配合SDF Displacement,效果確實比之前好得多。

???

由于處在我的SDF渲染流程里,使得每一塊凸起的石頭都可以產(chǎn)生實時SDF軟陰影。在商業(yè)引擎中,目前只在UE5里看到類似的功能。(當然UE5對此也做了很多優(yōu)化,導(dǎo)致了表現(xiàn)有bug,性能有提升等...總之那些方面是沒有可比性)



六 總結(jié):小島,死亡擱淺,播片與技術(shù)


??? 對死亡擱淺,我看過最多的負面評價,是不好玩,無聊。對小島類游戲,是討厭他的播片。這些都是合理的,但從另一方面講,正是因為小島癡迷于播片形式,才使得他可以在播片過程中追求極限。而這個追求極限的過程中,帶來了技術(shù)的普及。我覺得之所以有那么多人崇拜小島,可能就是因為他以自身經(jīng)歷證明了一件事:只要心懷善良,不與資本同流合污,是可行的;追求獨特,是可行的;追求極限,是可行的;理想主義,是可行的。這難道不美好嗎?


游戲渲染:SDF渲染還原死亡擱淺般的精細地面的評論 (共 條)

分享到微博請遵守國家法律
清原| 东乌珠穆沁旗| 天峨县| 河津市| 保亭| 星子县| 台安县| 辉南县| 朔州市| 武清区| 施甸县| 温宿县| 威海市| 女性| 平江县| 沂源县| 建德市| 泰州市| 响水县| 河津市| 突泉县| 普安县| 上犹县| 民乐县| 辽源市| 济宁市| 留坝县| 佳木斯市| 水城县| 东莞市| 瑞安市| 延安市| 启东市| 富锦市| 泾阳县| 社会| 长治市| 朝阳县| 甘南县| 连州市| 科技|