您好,登錄后才能下訂單哦!
小編給大家分享一下unity3d中光照探針的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
需求
常規(guī)的unity烘焙光照探針 是采用3階球諧來(lái)存儲(chǔ)的 有9個(gè)float3數(shù)據(jù),一般項(xiàng)目探針數(shù)量不會(huì)太多所以不用考慮內(nèi)存問(wèn)題。但我參與的 生死狙擊2 (可點(diǎn)擊看游戲視頻)項(xiàng)目 ,有開(kāi)放大世界,所有 lightmap加lightprobe 顯存開(kāi)銷(xiāo)巨大500多M。所以我實(shí)現(xiàn)了一套VLM烘焙方式,提高10倍的烘焙速度 和 節(jié)省22倍的顯存開(kāi)銷(xiāo).這套方案太復(fù)雜 我這里只是分享其中的一個(gè)壓縮技術(shù)。如果你也因?yàn)槠渌蛐枰獕嚎s 或因?yàn)榍蛑C模型尾巴有漏光問(wèn)題需要解決 可以參考下我的做法。
基礎(chǔ)思路
首先想到的肯定是 2階球諧來(lái)存,因?yàn)椴簧俅罄姓f(shuō)過(guò)精度也夠。而且unity的realtime gi好像就是用的2階.我沒(méi)有采用2階的原因是球諧算法沒(méi)有完全掌握,根據(jù)顏色反向構(gòu)建和壓縮 特別是工具修復(fù)漏光時(shí) 需要用到 半球拷貝(對(duì)sh某個(gè)方向的顏色拷貝到另一個(gè)sh的某個(gè)方向)都很不好掌控,雖然能找到算法但如果你和我一樣 對(duì)自己沒(méi)完全掌握的算法用起來(lái)有點(diǎn)擔(dān)心 ,那么就適合這樣直觀的方式來(lái)存儲(chǔ)。
我們用一個(gè)豐富點(diǎn)的烘焙情況做為測(cè)試基準(zhǔn)
首先想到的是cubemap xyz正負(fù)方向6個(gè)方向分別存一個(gè)顏色,采樣的時(shí)候只需要 計(jì)算6次max(0,dot(dir,normal))*colr;就可以得到個(gè)不錯(cuò)的結(jié)果 如下圖
升級(jí)思路 (正戲開(kāi)始)
雖然模擬了個(gè)大概但,6個(gè)顏色 沒(méi)比9個(gè)少多少 而且2階球諧只需要4個(gè)顏色,所以我打算開(kāi)始采用4方向軸。我想到正四面體,因?yàn)?個(gè)頂點(diǎn)是對(duì)稱的 也就是數(shù)學(xué)意義完全相同的 所以中心指向4個(gè)頂點(diǎn)得到的4個(gè)坐標(biāo)軸 兩兩夾角都相同,所以很適合用來(lái)建立一個(gè)4半軸坐標(biāo)系(應(yīng)該算非笛卡爾坐標(biāo)系) ,通過(guò)計(jì)算或查詢固定的角度可以選一個(gè)4個(gè)軸的方向,我選了 一個(gè)TetrahedroDirs = { new Vector3(-0.8164966f, -0.3333331f, -0.4714046f), new Vector3(0.8164966f, -0.3333331f, -0.4714046f), new Vector3(0, -0.3333331f, 0.9428091f), new Vector3(0, 1, 0) };就是 一個(gè)頂點(diǎn)是向上的。因?yàn)橹挥?個(gè)顏色所以很好用3張圖存儲(chǔ)。效果但看誤差嚴(yán)重實(shí)際上效果 間接光貢獻(xiàn)度不大 這點(diǎn)差距不敏感
代碼也很簡(jiǎn)單 ,為什么要比直角坐標(biāo)系 +1/3 可以自己思考下,實(shí)際上可以進(jìn)一步壓縮掉75% ,因?yàn)?可以某大區(qū)域只設(shè)置一個(gè)顏色 然后只記錄間接光的強(qiáng)度,這樣4個(gè)強(qiáng)度剛好一個(gè)rgba圖就可以存入 只有 引擎的 1/7容量。如果這種極限壓縮不符合項(xiàng)目,那么可以讓一個(gè)場(chǎng)景只用256種顏色 然后每個(gè)探針多一個(gè)byte 存入顏色索引,256色配合256強(qiáng)度 和插值計(jì)算也很豐富了。
端游項(xiàng)目實(shí)裝效果
重大內(nèi)存/顯存收益
0.58G 到23M 壓縮到原來(lái)的3.87%
當(dāng)然內(nèi)存/顯存巨大收益并非直接來(lái)自這個(gè)探針?lè)桨付莵?lái)自我VLM的實(shí)現(xiàn),VLM大量探針用了本方案。
以上是“unity3d中光照探針的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。