來(lái)點(diǎn)新鮮的 VR的渲染優(yōu)化經(jīng)驗(yàn)總結(jié)

來(lái)源:游資網(wǎng) 更新日期:2016-03-27 作者:佚名

    VR渲染需要左右眼兩幅不同的畫面,現(xiàn)在的大部分引擎都是暴力的直接渲染兩遍,這樣做想想性能也很難達(dá)到75FPS(或90FPS)。

    以O(shè)culus DK2為例,1920x1080@75FPS,加上Super Sampling就變成了(UE4默認(rèn)135%)2592x1458@75FPS。

    如果是Oculus的消費(fèi)者版本和HTC Vive,分辨率和刷新率更是提升到了2160x1200@90FPS, 推薦配置是GTX980驚恐,以135%的Super Sampling為標(biāo)準(zhǔn)的話,只是Color Buffer每秒的數(shù)據(jù)量就有2160x1200x1.35x90x8 byte ≈ 2.34GB。這還沒(méi)算Post Processing里的N多張Render Target和Deferred Rendering的GBuffer、Light Buffer。

    性能永遠(yuǎn)是VR渲染的最具有挑戰(zhàn)的部分,本著能省一點(diǎn)是一點(diǎn)的思路,VR的渲染優(yōu)化我總結(jié)了這么一些:

    雖然VR渲染需要左右兩幅畫面, 但是有很多效果是不需要畫兩次的:

    Shadow Map

    部分的Reflection

    Occlusion Query

    大多數(shù)Post Processing

    API層面的優(yōu)化,有這么幾個(gè)思路:

    如果實(shí)現(xiàn)了多線程的渲染,一般會(huì)有一個(gè)Command Buffer,直接分別以不同的View提交兩次。針對(duì)每個(gè)物體分別提交兩次, 相比上面這個(gè)State切換開(kāi)銷會(huì)節(jié)省一些。使用Geometry Shader直接把Mesh分成左右眼的,drawcall不會(huì)翻倍了。但是坑爹的GS性能不咋地。使用Instancing一次drawcall繪制兩個(gè)Viewport, 跟GS類似,但性能大約是GS的3倍。這只是減少一些API調(diào)用、State切換還有Vertex處理的消耗,那瓶頸最大的Pixel處理的消耗怎么減少呢?

    Valve使用一個(gè)Stencil Mesh, 剔除了17%的像素。

    NVIDIA的GameWorks也提供了一種方法, 叫Multi-Resolution Shading,大概的思路就是邊緣的像素經(jīng)過(guò)變形后會(huì)損失一些,另外人眼對(duì)視線中心的像素更敏感,所以周圍一圈可以降低分辨率來(lái)渲染。通過(guò)這種方式可以節(jié)省25%到50的像素。

4.jpg

5.jpg

    硬件方面,NVIDIA和AMD都推出了雙GPU渲染的支持,即每塊GPU渲染一只眼睛的畫面。嗯,這一定是個(gè)陰謀,他們肯定在偷著樂(lè):這下顯卡不愁賣了。

1.jpg

    SONY的PS VR在PS4的機(jī)能下實(shí)現(xiàn)了120FPS。聽(tīng)起來(lái)不可思議,實(shí)際是60FPS通過(guò)reproject插值出中間幀,跟Killzone的Temporal Reprojection 和Oculus的Timewrap差不多原理。

 標(biāo)簽:VR軟件 應(yīng)用技巧
廣告聯(lián)系:010-82755684 | 010-82755685 手機(jī)版:m.pjtime.com官方微博:weibo.com/pjtime官方微信:pjtime
Copyright (C) 2007 by PjTime.com,投影時(shí)代網(wǎng) 版權(quán)所有 關(guān)于投影時(shí)代 | 聯(lián)系我們 | 歡迎來(lái)稿 | 網(wǎng)站地圖
返回首頁(yè) 網(wǎng)友評(píng)論 返回頂部 建議反饋
快速評(píng)論
驗(yàn)證碼: 看不清?點(diǎn)一下
發(fā)表評(píng)論