D5渲染器:實時絲滑度|D5大場景承載力和交互體驗
所見即所得的交互體驗是 D5渲染器的核心價值所在。D5 GI 技術為實時渲染的性能提供了保障,但隨著場景復雜程度的增加,渲染開銷會逐漸增大,實時預覽幀數會不可避免地降低。
在場景面數極多,有大量燈光和大量材質的情況下,D5 是否還能夠保證實時預覽的幀率和對操作的響應速度,是關乎用戶使用體驗的大課題。
一、模型加載優化
很多三維模型資產不僅面數極多,并且由無數個子對象組成,降低渲染效率,D5 渲染器會自動合并特定種類資產的模型,將多個小模型合并成大模型,減少 DrawCall*,提升運行效率。
自 D5 2.0 版以來,模型被加載為效率更高的多邊形渲染方法,這一改進大大提高了實時性能,2.0 版相對于 1.9 版的實時幀率和響應速度有了明顯的提升。
*DrawCall: CPU 向 GPU 發送一次渲染命令,便稱為一次 DrawCall,DrawCall數量過多,會造成GPU長時間等待,降低渲染效率。
二、材質紋理優化
新版 D5 渲染器使用 Texture Streaming(紋理流送)技術,動態加載紋理貼圖,確保只有在攝影機看到材質紋理的時候才會加載,其他紋理暫時保存在磁盤上。此項技術配合 mipmap 可以保證材質紋理在任意距離都看起來剛剛好,并且開銷最小。
經對比試驗,開啟紋理流送后,無論是顯存占用還是內存占用都有所降低,幀率有輕微提升。一些特定場景,顯存占用節省了40%以上(由11G下降為6.2G)。
三、多燈場景優化
通常來說,場景中光源越多,實時預覽就會越卡頓(幀率下降)。
如下這個夜景場景中,有幾百盞光源。
老版本的缺點在于:在計算著色的時候,不能根據燈的數量動態分配顯存,所以必須預先根據燈的上限數量(如:1024 盞燈)分配內存,而且,畫面的分辨率越高,顯存的開銷就越高,這對實時預覽的性能帶來了挑戰。
為了解決這個問題,D5 優化了對燈光采樣的策略,先是把 1024 盞燈分成一個一個的小組,計算每個小組的燈光總亮度,再去進一步采樣對場景貢獻較大的燈組中的具體燈光,經過這樣的優化,場景在燈光上限達到 1024 盞燈的時候,計算 GI 的開銷由 23.84 毫秒 下降為 11.54 毫秒,顯存占用減少了 150M 左右。
四、GI 算法的優化
新版 D5 GI 采樣算法的優化,對于大場景同樣也會有運算效率的提升,2.1 版在反射運算中有2-4倍的效率提升,GI 計算有不到4倍左右的效率提升,這就是為什么相同場景下,D5 2.1 版的幀率永遠高于 2.0 版。
D5 “絲滑度”總結
絲滑度包含兩個指標:
1.用戶鼠標點擊用戶界面發出命令后到 D5 視口預覽做出第一幀響應的時間。
2.視口動態變化時,實時渲染的幀率。
下圖是 D5 1.9 版和 D5 2.1 版“絲滑度”的對比:
解析:左右同時點擊鼠標切換場景,可以看到右側新版 D5 響應指令的速度明顯優于舊版(右側永遠比左邊先動),同時,在晃動鏡頭時,新版幀率大約提升了接近一倍。
評論(0)