為什麼在ndc歸一化座標已經包含了視錐體剔除功能的情況下 還需要視錐體裁剪?

時間 2021-06-05 15:44:35

1樓:Binarizer

這兩個完全不一樣的哦。

視錐裁剪(Frustum Culling)一般是CPU做,只檢測包圍盒或者球(DX11後用GPU寫CS也可以,保證當幀不回讀就行);後面的是GPU做,你不可能在CPU階段就把所有頂點都去乘MVP的,而如果把所有東西一股腦都扔給GPU,你的GPU扛得住嗎?隨著解析度要求逐漸公升高,對填充率的要求指數上公升,導致大多數遊戲可都是GPU瓶頸哦。

那如果CPU階段包圍盒直接乘MVP呢?也可以,其實題主可以試著寫一下,跟你拿相機6個clip面裁剪沒本質區別的,甚至更慢。軟體光柵化就是在做這個事情。

題外話,除了Frustum Culling外,CPU還會進一步做Occlusion Culling,剔除雖然在視錐裡,但被前面物體擋住的東西,來進一步減少GPU的活兒。有的做法是軟體光柵化,用簡單網格算出精度極低的深度圖,然後對每個包圍盒只判斷最外面的3個頂點是否凸出;有的做法是回讀深度圖,需要延遲幾幀(UE就是這麼弄的)。

2樓:

是的,功能上是類似的,就是粒度不同。

你可以不做視錐剔除,把場景的所有資料扔給GPU進行渲染,結果是一樣的。只不過就是GPU會比較可憐。

GPU的(圖形渲染管道的)工作單位是頂點——三角面——畫素。也就是說在GPU當中沒有物體的概念(當然嚴格來說通過傳遞額外的引數給GPU也可以做到物體的區分,但是這並不會改變GPU進行工作的基本單位),所以所有剔除都是以這些細小的圖元單位進行的,效率不高。

通過給每個場景物體預先計算好包圍盒,我們可以用一些非常輕量的演算法完成物體級別的遮擋剔除,其中包括視錐剔除。這可以大大減少GPU的工作量。

當然,在當今的GPGPU當中,這種物體級別的剔除本身也是可以交給Compute Shader來完成的。這種技術出現的時間還不長,目前用的人也比較少。所以還是有不少人有只有CPU可以進行物體級別的剔除的概念。

3樓:

更通俗的來說,優化往往是多階段的,各個領域對優化都會有相應的broad pass和narrow pass,相互結合才能實現最終的優化

對於題中情形,物體剔除就是broad pass,gpu clip則是narrow pass

4樓:吉良吉影

粒度不同。

視錐剔除是在object層面的,對object的aabb做處理,直接剔除aabb在視錐外的object。

裁剪是在圖元(三角形)層面的,視錐剔除之後的object可能跨越視錐平面,對這種object對構成object mesh的三角形再做裁剪。

5樓:MultivacX

你可以簡單理解為:

視錐體剔除:如果在應用程式階段,能夠判斷出物體A 不在視錐體內部並且與視錐體的6個面沒有交叉,那麼就把物體A剔除,不用發給幾何處理階段

裁剪:物體A與視錐體的6個面有交叉,意味著物體A的某一部分a在視錐體外,那麼在幾何處理階段完成投影後,就得把a給裁剪掉(只保留視錐體內的圖元),不用發給螢幕對映

6樓:kkkk

減少從CPU到GPU的傳送,可以用球或者aabb等做更簡單的culling計算,除了culling 其他的計算也可以根據看得見看不見來cull簡化--看不見的離得遠的不用(少)算。cpu view frustum culling實現很容易,加上考慮下每個frame的連續性,是提高引擎效率的最行之有效的方法之一。

7樓:MaxwellGeng

先反對一下前邊的一些回答,視錐剔除不一定要用CPU,用GPU也可以,具體實現請看我的專欄,視錐剔除的用處在於剔除粒度粗,乙個物體有10000個三角面,並且鐵定不會出現在螢幕上,你是把物體剔除一遍直接過濾掉還是把所有三角面都遍歷一遍再過濾掉,哪個效率高?這個很明顯吧。

8樓:

應用程式階段是在cpu處理。

光柵化是在gpu處理。

你可以把cpu和gpu分別當成前後端,他們不能直接資料共享,或者是代價過大。

視錐體裁剪就類似前端優化,把不必要的請求命令過濾掉,減少通訊(即互動)開銷和gpu工作量。

9樓:倪璐舟

應用程式階段乙個很重要的任務是「場景管理」。通過特定的資料結構,應用程式可以將待渲染的物體組織起來。這樣在做視錐裁剪時,就可以利用加速演算法,以很小的代價,剔除大量不可見的物體,它們就不會被送往渲染流水線,GPU的負載就會降低。

10樓:StevenZ

因為送到gpu的物體少了,那麼 draw call、setpass就少了

如果不做應用程式階段的剔除,雖然他們被送進管線後也會被剔除掉,但是他們很可能會阻塞在管線的入口處進都進不去...

所以粗粒度的剔除工作是必須的

為什麼現在比賽在藍色方已經一選ad的時候,紅色方也會優先在一二選將AD選出來

禿皮騷油 因為先手選英雄會被後手康特,比如現在這個版本月男EZ不被ban的情況下基本就是一邊乙個了,假設藍色方一搶月男,如果紅色方一二手選個中野組合,相當於藍色方二三手有乙個中野位置的康特選,因為紅色方一二手不選第三手必選EZ的,不然第二輪BAN 就沒了 而如果一二手就選EZ的話,剩下的位置可以選乙...

在買包這件事上 為什麼一些買奢侈品牌的女人喜歡嘲笑沒有買的!?

劉鈃 只能說明有些人就是喜歡嘲笑別人,氣有笑無,與他們買不買奢侈品包沒關係,他們是這樣的人,買一塊錢乙個的饅頭也會笑話買六毛錢乙個饅頭的人。 sweety君君 不是很懂題主所說的這類人的心理活動 但是就我而言的話,我並不會嘲笑誒。因為我覺得這就是乙個很open的事,買不買完全看自己的選擇。有的很富的...

已經發生過性關係,為什麼女生不願意接受在一起

媚雪 呃,我覺得樓主你需要改變一下自己,我感覺到在這段關係裡更想維持的是你而不是她,但是女生老實講會比較容易厭煩 舔狗 沒有特別的意思,只是覺得這個詞概念準確一點,希望樓主不要介意 這個女生已經說了不想提這方面的問題,所以我覺得樓主你以後不用再提了,就是維持目前這種關係吧,然後不用太刻意卻又很周到地...