【游戲開發(fā)】Cluster Light Culling是什么?
關(guān)于RenderPath
主流目前有Forward ,Deferred
而對(duì)于多光源,傳統(tǒng)的Forward管線采用,一盞燈光燈光多渲染一遍物體的方法來繪制多光源,也就是Forward Add的方式,這種方式隨著燈光的數(shù)量上漲,即會(huì)造成O(n*m)的復(fù)雜度。
而Deferred對(duì)于多光源,則是以先渲染圖形信息GBuffer,然后延后處理燈光,O(n m)的復(fù)雜度。
為什么會(huì)突然好奇~~?
因?yàn)镃luster出現(xiàn)頻率高。。還實(shí)現(xiàn)過總有一點(diǎn)蛋疼的感覺。。。當(dāng)看到URP也有LightCulling時(shí)(不知道里面的實(shí)現(xiàn)有沒有Tile)~就去了解一下...
Cluster Base Light Culling
無論是Deferred還是Forward,在燈光數(shù)量大的時(shí)候其實(shí)性能消耗還是很嚴(yán)重的,Deferred雖然解決了Forward Add在多光源下OverDraw和DC嚴(yán)重的問題。但也無法處理燈光數(shù)量巨大時(shí)(燈光范圍影響小)。
普遍來說,如果不做Cluster,燈光機(jī)型剔除,基本的做法是用攝像機(jī)視椎體與點(diǎn)光(球體),與SpotLight(椎體)來進(jìn)行碰撞檢測(cè)做剔除。但是對(duì)于 Small light range,上千棧燈光,就很有必要做Tile / Cluster來剔除燈光。。
簡(jiǎn)單的原理理解:
1.劃分Tile
給屏幕分Tile,如16x16為一個(gè)Tile,每個(gè)Tile都是一個(gè)視椎體,然后從ClipSpace轉(zhuǎn)到View Space中計(jì)算,計(jì)算視椎體與每個(gè)燈光(點(diǎn)光球體/椎體)的相交來判定燈光是否剔除。
2.數(shù)據(jù)結(jié)構(gòu)方面
1.Global Light List
2.Global Light Index List
3.Light Grid {Light Count,Light Start Offset}
按照理解,Light LIst,和Light Index List,就像VertexBuffer,和IndexBuffer,所以,最后計(jì)算完后,每個(gè)shader計(jì)算著色,也是通過 ClipPos->ScreenPos ->計(jì)算出TileIndex,得到LightGrid -> 再索引到 -> 對(duì)應(yīng)的燈光信息。
3.Light Culling
1.如3dgep的教程,沒有按照Depth來再分Slice 視椎體,是通過直接讀取深度圖,判定每個(gè)ThreadGroup (Tile)的min max Depth來決定視椎體裁剪燈光的。
2.Opaque和Transparent的裁剪因?yàn)閙ix max depth的原因, 有所不同,因?yàn)橥该魑矬w一般不會(huì)寫入深度圖,所以min depth必須=near plane,我們只能裁剪Opaque后面的燈光。
3.因?yàn)闊艄馐歉鶕?jù)cluster來裁剪的,一個(gè)group Thread 包含TileSizexTileSize的線程數(shù),每個(gè)線程都可以負(fù)責(zé)256次方的燈光,即線程1處理燈光{1,256,512...},線程2處理{2,257,513},因?yàn)槭钦麄€(gè)Tile,所以遍歷燈光當(dāng)然分開到每個(gè)線程啦。
4.Final shade
1.燈光剔除完成后,我們就知道了 每個(gè)Tile接受的LightList
2.通過ClipPos - > ScreenPos - >拿到對(duì)應(yīng)的Tile->索引到燈光
3.遍歷燈光計(jì)算燈光信息
總結(jié):
Cluster的基本思路就是 分塊,3dgep,只在2D上分了Tile,而在Emil Persson的pdf里面,則對(duì)比了幾種cluster and depth的策略。
Cluster Light Culling,可以 用于Deferred (Tile base deferred),也可以用于Forward(forward plus),主要是用于用于減少燈光的復(fù)雜度。
轉(zhuǎn)載聲明:本文來源于網(wǎng)絡(luò),不作任何商業(yè)用途。

全部評(píng)論


暫無留言,趕緊搶占沙發(fā)
熱門資訊

太秀了!第17屆王座杯大賽獲獎(jiǎng)名單公布!

專訪|王氏教育集團(tuán)康海威老師:國(guó)民手游《王者榮耀》曹操高低模打造者...

分享一組貓控治愈系插畫師 limduey的作品

游戲原畫人體線稿怎么畫?快來get!

游戲美術(shù)設(shè)計(jì)師的重要性

海報(bào)設(shè)計(jì)丨這些插畫類的中文海報(bào)也太太太好看了吧!...

男人學(xué)點(diǎn)什么一技之長(zhǎng)比較好?

28歲學(xué)什么技術(shù)可以從頭再來?

王座杯比賽答疑,快來GET正確交稿姿勢(shì)!
