THREE 下另類的 HDR 壓縮方法

HDRPrefilterTexture

介紹

在 THREE 中使用 HDR 需要經(jīng)過 PMREMGenerator 處理才能使用,并且在小程序 WebGL 環(huán)境下有部分機(jī)型在前后切換頁面會偶現(xiàn)生成出錯誤的紋理(見小程序 WebGL 奇妙的 Bug 之旅 ),該項(xiàng)目的功能是導(dǎo)出PMREMGenerator生成產(chǎn)物到 PNG,再利用 PNG 無損壓縮實(shí)現(xiàn)體積減少

輸入大小為 5.3MB 的http://www.yanhuangxueyuan.com/threejs/examples/textures/equirectangular/venice_sunset_2k.hdr

環(huán)境 REGBLoader 耗時 PMREMGenerator 耗時 總耗時
模擬器 144ms 17ms 161ms
小米 8 509ms 55ms 564ms

注:RGBELoader 主要是加載網(wǎng)絡(luò)耗時

// HDR原本加載路徑
RGBELoader -> PMREMGenerator -> 設(shè)置scene.environment

// 優(yōu)化后的路徑
TextureLoader -> 設(shè)置texture屬性 -> 設(shè)置scene.environment

PMREMGenerator產(chǎn)物導(dǎo)出后的PNG只有1046.863kb,體積減少了4415.182kb

所以就有了這個HDRPrefilterTexture的項(xiàng)目,同時解決小程序下某些機(jī)型 bug,同時也優(yōu)化加載時間,但是僅僅適用于 HDR 需要PMREMGenerator處理的場景。

其實(shí)也是一個優(yōu)化的思路,其他紋理需要經(jīng)過特定處理才能直接使用的,均可以把產(chǎn)生物導(dǎo)出。

Demo

image

TODO

  1. 支持批量導(dǎo)出 done
  2. 生成導(dǎo)出大小對比表格 done

倉庫地址

https://github.com/deepkolos/hdr-prefilter-texture

https://github.com/deepkolos/three-platformize

LiveDemo

https://deepkolos.github.io/hdr-prefilter-texture/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容