UE5 Nanite特性
1.?Nanite是虛幻引擎5全新推出的虛擬幾何體系統(tǒng)(Virtualized Geometry System)。它采用全新的內(nèi)部網(wǎng)格體格式和渲染技術(shù)來渲染像素級別的細(xì)節(jié)以及海量的物體對象。它足夠智能,可以僅處理能夠觀察到的細(xì)節(jié)。Nanite采用高度壓縮的數(shù)據(jù)格式,并且支持高細(xì)節(jié)流送和自動LOD。
2.?Nanite優(yōu)勢
(1)?幾何體形狀的復(fù)雜度提高了數(shù)個數(shù)量級;三角形和對象的實(shí)時渲染數(shù)量達(dá)到了前所未有的高度。
(2)?幀預(yù)算(Frame Budget)不再會因為多邊形數(shù)量、繪制調(diào)用和內(nèi)存使用情況而受限。
(3)?可以直接導(dǎo)入電影級品質(zhì)的美術(shù)資源,例如ZBrush雕刻模型和攝影測量掃描數(shù)據(jù)
(4)?通過高模實(shí)現(xiàn)細(xì)節(jié),而非通過烘培法線貼圖來實(shí)現(xiàn)
(5)?自動處理LOD,不再需要手動設(shè)置
(6)?品質(zhì)損失極少或沒有損失,特別是在LOD發(fā)生過渡時
?
3.?Nanite網(wǎng)格體本質(zhì)上仍屬于三角形網(wǎng)格體,但對其數(shù)據(jù)進(jìn)行了大量壓縮以及LOD設(shè)置。此外,Nanite使用了一種全新系統(tǒng),能以極高效的方式來渲染這種數(shù)據(jù)格式。
4.?靜態(tài)網(wǎng)格體只需通過一個選項就能轉(zhuǎn)換成Nanite網(wǎng)格體。編輯Nanite網(wǎng)格體和傳統(tǒng)網(wǎng)格體沒什么不同,區(qū)別就在于相比使用傳統(tǒng)方法渲染的幾何體,Nanite能夠渲染的三角形和實(shí)例要多出數(shù)個數(shù)量級。將攝像機(jī)移到足夠近的位置后,Nanite就會繪制出你導(dǎo)入的原始三角形。
5.?Nanite網(wǎng)格體支持多重UV和頂點(diǎn)顏色。材質(zhì)可以被指定給網(wǎng)格體的不同部分,并且這些材質(zhì)可以使用不同的著色模型和動態(tài)效果(在著色器中完成)。材質(zhì)的指定可以動態(tài)切換,就像其他靜態(tài)網(wǎng)格體一樣。Nanite也不需要任何烘焙材質(zhì)的過程。
6.?虛擬紋理并不要求與Nanite一起使用,但推薦這么做。虛擬紋理是一個單獨(dú)的虛幻引擎功能,它與紋理數(shù)據(jù)的關(guān)系類似于Nanite對網(wǎng)格體數(shù)據(jù)的關(guān)系。
7.?一般來說,能啟用時應(yīng)該盡量啟用Nanite。啟用了Nanite的靜態(tài)網(wǎng)格體通常可以更快渲染,占用的內(nèi)存和磁盤空間也更少。
具體而言,網(wǎng)格體如果滿足以下條件,將很適合使用Nanite:
(1)?包含很多三角形,或屏幕上三角形非常小
(2)?場景中有很多實(shí)例
(3)?作為其他Nanite幾何體的主要遮擋物
這些規(guī)則有一個例外的情形,那就天空球體之類的元素:它的三角形在屏幕上顯得很大,不會遮擋任何東西,并且場景中只有一個。
受支持的Nanite特性
下文介紹了如何在虛幻引擎5搶先體驗版中最充分利用Nanite的特性。
幾何體
靜態(tài)網(wǎng)格體和幾何體集合可以選擇啟用Nanite。
啟用Nanite的網(wǎng)格體可以搭配使用以下組件類型:
(1)?靜態(tài)網(wǎng)格體
(2)?實(shí)例化的靜態(tài)網(wǎng)格體
(3)?分級實(shí)例化靜態(tài)網(wǎng)格體
(4)?幾何體集合
?
1.?Nanite目前僅限于剛性網(wǎng)格體。在常見項目場景中,90%以上的幾何體都是剛性網(wǎng)格體,這也是Nanite開發(fā)的最初重點(diǎn)。Nanite支持剛性網(wǎng)格體的動態(tài)平移、旋轉(zhuǎn)和非均勻縮放,但不支持一般的網(wǎng)格體變形,無論是動態(tài)還是靜態(tài)的。這意味著,Nanite網(wǎng)格體的任何一個位置,都無法簡單的通過用一個4x3矩陣乘以整個網(wǎng)格體來表示。
變形(Deformation)不支持且不限于以下幾點(diǎn):
(1)?骨骼動畫(Skeletal animation)
(2)?變形目標(biāo)(Morph Targets)
(3)?材質(zhì)的世界位置偏移(World Position Offset in materials)
(4)?樣條網(wǎng)格體(Spline meshes)
?
此外,Nanite目前還不支持:
(1)?自定義深度或模板
(2)?在實(shí)例上繪制頂點(diǎn)
* 特指使用編輯器網(wǎng)格體繪制(Mesh Paint)模式進(jìn)行的逐實(shí)例繪制的顏色。
支持在原始網(wǎng)格體上導(dǎo)入的頂點(diǎn)顏色
?
2.?場景中的最大實(shí)例數(shù)量不會大于200萬。這包括場景中的所有流送進(jìn)來的實(shí)例,而不僅僅是為Nanite啟用的那些。只有流送進(jìn)來的實(shí)例會被計算在內(nèi)。未來UE會對此進(jìn)行優(yōu)化。
3.?靜態(tài)網(wǎng)格體啟用Nanite時,不會保存靜態(tài)網(wǎng)格體每個頂點(diǎn)切線的信息。相反,切線空間會在像素著色器中隱式繼承。目前沒有存儲切線數(shù)據(jù)(為了減少數(shù)據(jù)大?。?,但在未來的引擎版本中,我們將提供存儲功能。使用這種方法的切線空間會有所不同,可能會導(dǎo)致邊緣不連續(xù)。但是,這點(diǎn)還未被證明是一個重要問題。虛幻引擎未來版本將計劃支持頂點(diǎn)切線。
材質(zhì)
以下材質(zhì)以及以下設(shè)置?無法?被分配給Nanite網(wǎng)格體。它們要么被禁止使用,要么對Nanite網(wǎng)格體沒有影響。
不受支持的材質(zhì)會轉(zhuǎn)而使用一個默認(rèn)材質(zhì),并在?輸出日志?中輸出警告信息以及信息細(xì)節(jié)。
(1)?所有?混合模式,除了**不透明(Opaque)**。
這包括遮罩和半透明混合模式。
(2)?延遲貼花(Deferred Decal)
例如,將Nanite網(wǎng)格體用于網(wǎng)格體貼花
支持將貼花網(wǎng)格體投射到Nanite網(wǎng)格體上
(3)?線框
(4)?像素深度偏移
(5)?世界位置偏移
(6)?自定義的逐實(shí)例數(shù)據(jù)(ustom Per-Instance Data)
(7)?雙面材質(zhì)
?
使用以下內(nèi)容的材質(zhì)在應(yīng)用到Nanite網(wǎng)格體上后將無法正確渲染:
(1)?頂點(diǎn)插值器節(jié)點(diǎn)
(2)?自定義UV
渲染
以下渲染功能目前不支持:
(1)?視圖相關(guān)的對象篩選:
-使用以下方法進(jìn)行的場景捕獲:
隱藏的組件
隱藏的Actor
僅顯示組件
僅顯示Actor
-最小屏幕半徑
-距離剔除
-FPrimitiveSceneProxy::IsShown()?篩選的任何內(nèi)容
(2)?正向渲染
(3)?虛擬現(xiàn)實(shí)的立體渲染
(4)?分屏
(5)?多重采樣抗鋸齒(MSAA)
(6)?光照通道
(7)?針對完整Nanite細(xì)節(jié)的光線追蹤
-支持光線追蹤功能,但光線會與代理網(wǎng)格體(Nantie網(wǎng)格體的簡化表現(xiàn))交互,而不是具體的Nanite網(wǎng)格體
(8)?某些可視化視圖模式還不支持顯示Nanite網(wǎng)格體
-在查看細(xì)節(jié)十分豐富的幾何體時,在靜態(tài)網(wǎng)格體編輯器中使用某些可視化模式時應(yīng)該謹(jǐn)慎。查看法線和UV可能會導(dǎo)致編輯器的性能出現(xiàn)問題。
支持的平臺
Nanite目前支持PlayStation 5、Xbox Series X、以及符合以下顯卡要求的PC(需要使用最新顯卡驅(qū)動并支持DirectX 11/12):
NVIDIA: Maxwell顯卡或更新版本
AMD: GCN顯卡或更新版本
Nanite代理網(wǎng)格體及其精度設(shè)置
靜態(tài)網(wǎng)格體中包含其他屬性,可以控制Nanite的精度;基于原始Nanite網(wǎng)格體生成的簡化版網(wǎng)格體稱之為代理網(wǎng)格體。
這些設(shè)置可以在靜態(tài)網(wǎng)格體編輯器的?細(xì)節(jié)(Details)?面板的?Nanite設(shè)置(Nanite Settings)?下找到。
頂點(diǎn)精度
1.?Nanite會對網(wǎng)格體頂點(diǎn)位置進(jìn)行量化,以便最大化內(nèi)存密度以并最小化磁盤足跡(disk footprint)。量化的步長是二的冪,步長的大小可以通過?位置精度(Position Precision)?屬性并根據(jù)各個網(wǎng)格體的要求來單獨(dú)確定。默認(rèn)設(shè)置是?自動(Auto),它允許Nanite根據(jù)網(wǎng)格體尺寸以及三角形密度挑選合適的精度。你也可以手動設(shè)置精度,以便提升精度效果或優(yōu)化磁盤足跡。
2.?一般而言,手動微調(diào)精度總能帶來一些增益。我們的想法是通過?自動(Auto)?設(shè)置來提供一個合理的折衷方法,在單獨(dú)設(shè)置各個網(wǎng)格體時,它能充當(dāng)一個良好的基準(zhǔn)。
?
3.?量化(Quantization)是一種有損壓縮形式,而在處理模塊化網(wǎng)格體或使用共享邊界的網(wǎng)格體時,使用有損壓縮特別具有挑戰(zhàn)性——特別是當(dāng)這些邊界需要完全對齊,避免產(chǎn)生孔洞或裂縫時。為了確保一致性,量化發(fā)生在以網(wǎng)格體原點(diǎn)為中心的非標(biāo)準(zhǔn)化對象坐標(biāo)上。這能確保當(dāng)網(wǎng)格體使用相同的精度設(shè)置,而網(wǎng)格體中心之間的平移是該精度的倍數(shù)時,量化不會導(dǎo)致裂縫的出現(xiàn)。
?
代理網(wǎng)格體
(1)?虛幻引擎的很多模塊都需要訪問傳統(tǒng)的頂點(diǎn)緩沖數(shù)據(jù)(由傳統(tǒng)方式渲染的網(wǎng)格體提供)。為靜態(tài)網(wǎng)格體啟用Nanite之后,將生成一個較為簡單的代理網(wǎng)格體,以便在Nanite數(shù)據(jù)無法使用的情況下作為備選。比如在需要復(fù)雜的碰撞時,或者當(dāng)平臺不支持Nanite時,就會使用?代理網(wǎng)格體(Proxy Mesh)。如果網(wǎng)格體烘焙了靜態(tài)光照,代理網(wǎng)格體也可以在Lightmass中使用。
(2)?代理三角形百分比(Proxy Triangle Percent)?表示從原來的Nanite網(wǎng)格體中抽出百分之多少的三角形來生成代理網(wǎng)格體(相對簡陋)。接受從0到100的數(shù)值,百分比越大,保留的原始網(wǎng)格體細(xì)節(jié)越多。數(shù)值100表示沒有刪減。代理網(wǎng)格體將限制為最少2000個三角形,無論代理百分比有多小。
(3)?如果在三角形數(shù)量少于2000個的網(wǎng)格體上啟用了Nanite,將自動把原始網(wǎng)格體用作代理網(wǎng)格體,因為代理網(wǎng)格體最低需要2000個三角形。
?
(4)?在靜態(tài)網(wǎng)格體編輯器中,可以使用?顯示(Show) > Nanite代理(Nanite Proxy)?或熱鍵?Ctrl + N,在原始Nanite網(wǎng)格體和代理網(wǎng)格體之間切換。
?
(5)?在搶先體驗版中,靜態(tài)網(wǎng)格體編輯器中顯示的?三角形?和?頂點(diǎn)?統(tǒng)計數(shù)據(jù)僅表示代理網(wǎng)格體是否啟用了Nanite。要查看原始三角形數(shù)量,必須在網(wǎng)格體上暫時禁用Nanite。
?
(6)?增加"代理三角形百分比"這個數(shù)值能一定程度上在代理網(wǎng)格體上還原Nanite網(wǎng)格體原有的細(xì)節(jié)。在平臺或功能不支持Nanite渲染時,你可能需要用到此功能
?
為Nanite網(wǎng)格體設(shè)置自定義代理網(wǎng)格體LOD
代理網(wǎng)格體在引擎的許多功能中都有用到,例如復(fù)雜的逐多邊形碰撞、光線追蹤、光照烘培等等。當(dāng)在不支持Nanite的平臺上運(yùn)行時,它也可以用于直接繪制。在某些情況下,可能需要使用手動指定的代理網(wǎng)格體,或者一組傳統(tǒng)LOD來實(shí)現(xiàn)這些目的,而不是使用自動生成。例如,在不支持的平臺上運(yùn)行時,或者涉及基于光線追蹤的反射時,這能允許你直接控制看到的幾何體。
Nanite網(wǎng)格體會固定將自動生成的代理設(shè)置在LOD0插槽中。如需使用自定義代理,或一組LOD,請遵循以下步驟:
(1)?將?代理三角形百分比(Proxy Triangle Percent)?設(shè)置為?0,這樣代理會盡可能??;使用此方法時代理將被忽略。
(2)?使用傳統(tǒng)LOD設(shè)置方法為網(wǎng)格體添加一個或多個LOD。
(3)?在靜態(tài)網(wǎng)格體編輯器的?細(xì)節(jié)(Details)?面板的?LOD設(shè)置(LOD Settings)?中,將?最小LOD(Minimum LOD)?設(shè)置為?1。這將導(dǎo)致Nanite生成的代理被忽略。
(4)?復(fù)雜碰撞是一種特殊情況,需要單獨(dú)設(shè)置。使用?用于碰撞的LOD(LOD for Collision)?屬性來指定用于碰撞的LOD。它可以是任何一個LOD,包括LOD 0。
?
使用這種方法后,可能無法讓Nanite項目自動兼容不支持Nanite的平臺。Nanite可以高效處理大量實(shí)例,但如果Nanite被禁用,那么可能會出現(xiàn)大量繪制調(diào)用,以至于傳統(tǒng)渲染管線可能無法應(yīng)對。你可以使用?r.Nanite 0?來嘗試全局禁用Nanite。
?
?
性能以及內(nèi)容相關(guān)的問題
1.?大多數(shù)情況下,Nanite能很好地隨屏幕分辨率的變化而變化。能這樣做是基于兩個關(guān)鍵技術(shù):精細(xì)的LOD和遮蔽剔除。通常這意味著,無論場景中的源數(shù)據(jù)的幾何復(fù)雜度如何,Nanite試圖繪制到屏幕上的三角形的數(shù)量會保持不變,并且與像素的數(shù)量成正比。Nanite遵循的設(shè)計理念是——三角形的繪制數(shù)量超過像素數(shù)量就是一種浪費(fèi)。
2.?某些情況下,有些類型的內(nèi)容會破壞Nanite采用的縮放技術(shù),但這不意味著不應(yīng)將Nanite用于這些內(nèi)容,或者說它在渲染時可能無法比傳統(tǒng)管線快得多。對于這類內(nèi)容,這意味著基于像素縮放而非基于場景復(fù)雜度縮放可能不再適用于它們。請使用虛幻引擎的性能分析功能來監(jiān)控這類情況。
聚合幾何體
1.?聚合幾何體(Aggregate geometry)是指許多微小、不連貫的對象在遠(yuǎn)處被合并成單個體積(volume),例如毛發(fā)、樹葉和草。這打破了原有的LOD和遮擋剔除方式。
2.?首先,Nanite網(wǎng)格體本身是一種HLOD結(jié)構(gòu),它依賴的方法是將小三角形簡化為大三角形;在差異小到無法感知時,Nanite會選擇較粗糙的三角形。這在連續(xù)的表面上效果很好,但在聚合體(aggregate)上效果不佳——從遠(yuǎn)處看時它們更像是部分不透明的云,而不是固體類型的表面。因此,Nanite可能認(rèn)為它無法像處理常見的固體表面那樣大幅度減少聚合體,從而導(dǎo)致相同像素區(qū)域內(nèi),有更多的三角形被繪制。
3.?會受到聚合幾何體影響的第二種優(yōu)化技巧是遮擋剔除(occlusion culling)。盡管遮擋剔除非常精細(xì),但它的精細(xì)度(granularity)還無法達(dá)到像素級。充滿孔洞的幾何體(更糟的是多個相互重疊、充滿孔洞的幾何體)會導(dǎo)致大量的過度繪制,這是因為屏幕區(qū)域在遮擋背后的內(nèi)容前,首先需要建立許多個深度層。想象一下,屏幕上有一片8x8像素的區(qū)域,在每個像素被填充之前需要繪制多個深度層。這種過度繪制就意味著,對于相同大小的像素區(qū)域,Nanite會嘗試?yán)L制更多的三角形,導(dǎo)致它的渲染速度變慢。
4.?植被是一個最明顯的例子;不過即便如此,這也不意味著Nanite不應(yīng)用于植被網(wǎng)格體。假如是充滿樹冠的森林,并且樹冠由單獨(dú)建模的樹葉構(gòu)成,那么Nanite的效果肯定不會很好;但將Nanite用于樹干和樹枝時,效果可能會好一些。建筑物表面的藤曼應(yīng)該效果也還不錯,因為理想情況下,它與底下固體表面之前只有一層。你可以試驗一下,看看哪些情況適合你的項目,并使用性能分析功能來確認(rèn)Nanite在處理這些網(wǎng)格體時的性能情況。
緊密堆疊的表面
由于各種實(shí)際存在的限制,傳統(tǒng)網(wǎng)格體的遮擋剔除使得大規(guī)模的模型搭建(kitbashing)流程幾乎不可能實(shí)現(xiàn)。Nanite的高精細(xì)遮擋剔除有助于減少開發(fā)流程中的麻煩。
正如在聚合幾何體中解釋的,導(dǎo)致過度繪制的一種情況,是可見表面與底部隱藏表面的距離過于接近近。如果某個幾何體被妥當(dāng)?shù)仉[藏在可見表面之下,Nanite檢測并清除它的成本是相當(dāng)?shù)偷?,甚至可以認(rèn)為沒有開銷。然而,如果有一些相互堆疊的幾何體,并且都位于最頂部的表面上,Nanite可能無法確定哪個位于上面或下面,導(dǎo)致兩個幾何體都被繪制出來。這種情況通常最糟糕,因為Nanite不知道哪個表面在最上層,導(dǎo)致繪制出所有內(nèi)容。像這樣的精度誤差會隨著屏幕尺寸和距離的變化而變化,所以,盡管10厘米的距離足夠分開各個層,并且在近處看起來很好,但在更遠(yuǎn)的位置,距離差可能會小于一個像素,從而導(dǎo)致過度繪制。
這種可視化選項是發(fā)現(xiàn)類似問題的最佳方法。盡管一定程度的過渡繪制是可以接受的,但過量的過渡繪制會導(dǎo)致Nanite的剔除和光柵化開銷變大,并且Nanite的縮放功能也會更加容易受到場景復(fù)雜度的影響。
?
?
面片法線和硬邊法線
1.?導(dǎo)入高精度網(wǎng)格體時,很容易導(dǎo)入相應(yīng)的面片法線(faceted normals)。要注意避免使用面片法線,因為網(wǎng)格體中少量的頂點(diǎn)共享會導(dǎo)致渲染性能和數(shù)據(jù)大小的開銷變得非常大。理想情況下,一個網(wǎng)格體的頂點(diǎn)數(shù)量要少于三角形數(shù)量。如果這個比例是2:1或更高,那就可能有問題了,尤其是當(dāng)三角形數(shù)量較多時。如果比例為3:1,意味著網(wǎng)格體完全是面狀的(facet),每個三角形都有單獨(dú)的三個頂點(diǎn),沒有一個頂點(diǎn)是和其他三角形共享的。大多數(shù)情況下,這是因為法線不一樣,因為它們沒有被平滑化。
2.?考慮到這一點(diǎn),更多的頂點(diǎn)意味著更多的數(shù)據(jù)。這也意味著更多的頂點(diǎn)轉(zhuǎn)換工作,而高于2:1的比率會陷入一些緩慢的路徑。在硬表面建模中有意使用不應(yīng)該導(dǎo)致問題,沒有理由不使用它們。然而,意外的100%切面的非常密集的網(wǎng)格要比預(yù)期的昂貴得多。另外,在其他DCC軟件包中生成的密集有機(jī)型表面的導(dǎo)入法線,其硬法線閾值在低多邊形網(wǎng)格上可能是合理的,但在Nanite中會增加不必要的費(fèi)用。
?
?
以左圖中的兩個網(wǎng)格體為例。左邊的網(wǎng)格體有面片法線,右邊的網(wǎng)格體有平滑法線。Nanite的?三角形?可視化功能顯示了兩者在繪制時所用的三角形數(shù)量存在明顯差異。
常見內(nèi)容的性能
為了便于比較,我們以PS5的虛幻5技術(shù)演示Lumen in the Land of Nanite為例,記錄了它的GPU耗時信息:
(1)?平均渲染分辨率為1400p,時序上采樣到4K
(2)?剔除和光柵化Nanite網(wǎng)格體的時間約為~2.5毫秒(演示中幾乎所有網(wǎng)格體都是Nanite網(wǎng)格體)
幾乎所有幾何體都是Nanite網(wǎng)格體
幾乎沒有CPU開銷,因為場景100%由GPU驅(qū)動
(3)?計算所有Nanite網(wǎng)格體材質(zhì)的時間為2毫秒
場景中每個材質(zhì)都只產(chǎn)生一次繪制調(diào)用,因此CPU開銷很小
?
把這些GPU耗時疊加后大約是4.5毫秒,相當(dāng)于虛幻4中深度預(yù)通道(depth prepass)加上基礎(chǔ)通道(base pass)的時間。這使得Nanite可用于那些以60 FPS為目標(biāo)的游戲項目。
控制臺變量和命令
使用以下統(tǒng)計數(shù)據(jù)和控制臺變量對Nanite進(jìn)行調(diào)試和配置。
在運(yùn)行時,你可以使用控制臺變量?r.Nanite 0?來全局啟用和禁用Nanite渲染。禁用Nanite能讓你模擬那些不支持Nanite的平臺。
Nanite代理渲染模式
當(dāng)Nanite被禁用或不被平臺支持時,Nanite還提供了代理網(wǎng)格體渲染模式。你可以通過控制臺變量?r.Nanite.ProxyRenderMode?來控制使用哪種模式。
0是默認(rèn)模式,如果設(shè)置為1,就會回退為渲染代理網(wǎng)格體,或采用基于屏幕空間 的 LOD(參見上文代理網(wǎng)格體一節(jié))。
1禁止渲染所有啟用Nanite的網(wǎng)格體。
2與模式1類似,但允許在靜態(tài)網(wǎng)格體編輯器中通過?顯示 > Nanite代理?來渲染Nanite代理。
?
假如場景的實(shí)例數(shù)量非常大,遠(yuǎn)超過普通情況下的數(shù)量(即未啟用Nanite時),則代理渲染模式1和2都很有用。它們使你能夠在不支持Nanite的平臺上用編輯器打開該場景。例如,在虛幻引擎5的示例項目"遠(yuǎn)古山谷"中,禁用Nanite會導(dǎo)致產(chǎn)生數(shù)以萬計的常規(guī)繪制調(diào)用,導(dǎo)致那些不支持Nanite的平臺甚至難以打開該地圖。
Nanite統(tǒng)計數(shù)據(jù)命令
在控制臺輸入?Nanitestats?命令后,屏幕右側(cè)會出現(xiàn)當(dāng)前視圖的Nanite剔除統(tǒng)計數(shù)據(jù)( Nanite culling statistic)。
命令參數(shù)可用于指定Nanite在屏幕上顯示哪些統(tǒng)計信息。當(dāng)沒有提供參數(shù)時,將使用主視圖。
Nanitestats List?會在調(diào)試輸出中生成一個可用視圖列表:
Primary
VSM_Directional
VSM_Perspective
ShadowAtlas0
ShadowAtlas1
ShadowAtlas2
需要選擇某個視圖時,輸入?Nanitestats,后面是你要使用的參數(shù)。例如,Nanitestats VSM_Directional。
對于使用雙通道遮擋剔除(two-pass occlusion culling)的視圖,統(tǒng)計數(shù)據(jù)會被劃分成?主(Main)?和?后(Post)?兩種情況。
統(tǒng)計數(shù)據(jù)名稱:
PRE-CULL 剔除階段前的實(shí)例數(shù)量。
POST-CULL 可視性測試完成后的剩余實(shí)例數(shù)量。
NODEVISITS 剔除過程中訪問的層級節(jié)點(diǎn)總數(shù)。
CANDIDATES 層級遍歷過程中發(fā)現(xiàn)的、需要進(jìn)行可見性測試的群集數(shù)量。
CLUSTERSSW 使用軟件光柵化渲染的可見群集的數(shù)量。
CLUSTERSHW 使用硬件光柵化渲染的可見群集的數(shù)量。
控制Nanite流送池的大小
控制臺變量?r.Nanite.Streaming.StreamingPoolSize?可用于指定使用多少內(nèi)存來保存Nanite的流送數(shù)據(jù)。使用較大的內(nèi)存池可以減少在場景中移動時產(chǎn)生的IO和解壓縮工作量,但代價是內(nèi)存占用較大。
就搶先體驗版而言,如果內(nèi)存池不夠大,無法容納一個視圖所需的所有數(shù)據(jù),就會發(fā)生"緩存抖動(Cache thrash)",導(dǎo)致即便是靜態(tài)視圖,流送也無法解決。
這個控制臺變量無法在運(yùn)行時改變,必須在配置(.ini)文件中指定。
設(shè)置單個通道的最大群集數(shù)
控制臺變量?r.Nanite.MaxCandidateClusters?和?r.Nanite.MaxVisibleClusters?可以指定單個通道(single pass)中的最大候選群集和可見群集數(shù)量。它們的值可用于確定中間緩沖區(qū)的大小,它們的默認(rèn)值(分別為8388608和2097152)已經(jīng)被用于常見的游戲渲染場景中。
在搶先體驗版中,沒有動態(tài)調(diào)整這些緩沖區(qū)大小的機(jī)制,也無法在溢出時自動降低品質(zhì)。如果這些數(shù)值過小,無法滿足場景復(fù)雜度,就可能會導(dǎo)致渲染瑕疵,通常表現(xiàn)為幾何體丟失或閃爍。當(dāng)這類渲染瑕疵發(fā)生時,請使用?Nanitestats?來確定候選群集和可見群集的合適數(shù)值(查看CLUSTERSSW和CLUSTERSHW統(tǒng)計數(shù)據(jù))。目前一個候選群集的內(nèi)存開銷是12字節(jié),一個可見群集是16字節(jié)。
這個控制臺變量無法在運(yùn)行時更改,必須在配置(.ini)文件中指定。
?