UE4是一款VR開發(fā)軟件,近日UE4的軟件工程師就這個軟件的VR開發(fā)進行了一次講解,這里說的是跟攝像機交互的方法。
和攝像機進行交互
同樣的,在近處的平面投射也會從那個預訂距離開始,來放棄任何已經(jīng)被渲染為立體的碎片。
這個方法讓我們能夠在立體像素和平面像素之間有一個清晰的深度順序:我們知道所有的立體像素離攝像機位的距離都比平面像素的距離要小。
這避免了在某些方式下進行最終的場景整合階段時,需要用到深度比較而導致的昂貴性能開銷,最小化了像素著色器調用的數(shù)量。
但比起基于物體的方式,這種基于像素的分裂平面的方式,最大缺陷就是繪制調用數(shù)量不那么可控。
任何穿過此分裂平面上的物體,都必須同時進行立體和平面的渲染,盡管最終沒有任何一個像素會被繪制兩次。
哪怕對很近的遠平面的視椎體剔除,用普通的視椎體剔除技巧來最小化遞交到立體緩存的繪制調用數(shù)量,也會比較麻煩:一個遠處的物體有著很大的包圍盒。
比如說環(huán)境的立方體貼圖永遠會通過視椎體剔除繪制;就算由于遠平面距離較短,它的任何像素都沒有被被顯示出來,但是它的包圍盒和攝像機位的視椎體產(chǎn)生了交叉。
為了避免這種情況,我們還增加了一種方式來讓你在平面渲染引擎中可以手動標記一些物體,讓它們永遠不會被立體緩存進行渲染。
為了知道哪個物體需要標記,我們還增加兩種渲染模式:一種只顯示立體緩存,而不顯示包含平面遠景部分的整合層;
而另一種顯示立體緩存的同時,加上了用來進行視錐體剔除的區(qū)分平面和立體部分的遠景平面,但沒有深度測試。
簡要來說:任何被渲染到第二張圖像上而沒有渲染到第一張圖像上的物體,都需要一個繪制調用,但由于遠平面距離較短而不會顯示出來。
純立體緩存
遞交到純立體緩存的繪制調用
在這個例子里,我們可以注意到,遠景的地形由于其很大的包圍球,經(jīng)過了視錐體剔除的測試。
但由于其距離已超過了三十英尺的深度分裂平面,而不應該被渲染出來:我們需要為它加上標記來強制只進行平面的渲染,節(jié)省寶貴的繪制調用資源。
這個標記在UE4編輯器的物體細節(jié)/渲染區(qū)域下,名字叫“Force Mono”。