Unity Fine Prued Tiled Light (FPTL)
Fine Prued Tiled Light Lists
視頻講解:https://www.bilibili.com/video/av90517615
FPT是在Tile裁剪的基礎(chǔ)上在進(jìn)行一次剔除
可用于Forward Render和Deferred Shading兩種渲染管線
利用了并行架構(gòu)進(jìn)行優(yōu)化
將線程分為線程組再分為多個(gè)線程,Thread Group中線程可以同步,做到每個(gè)算法單元的同步(要考慮到硬件性能)。在指定線程組中的線程數(shù)量時(shí),大小要小于等于1024,AMD中為64的倍數(shù),intel中為32的倍數(shù)
CPU和GPU數(shù)據(jù)傳遞通過(guò)Computer Buffer(同步,需等待結(jié)束,在Editor中也可以使用,但是性能較差)
GPU和renderpipeline數(shù)據(jù)傳遞通過(guò)RWStructured Buffer(在GPU中傳遞)
一般步驟
對(duì)于每個(gè)相機(jī)
CPU端查找所有與視椎體相交的光源列表,并排序
GPU端計(jì)算在屏幕空間下光源的AABB
將屏幕分成16*16px per Tile
通過(guò)screenXY計(jì)算Tile的數(shù)量
那么1個(gè)Tile=1個(gè)thread group=64個(gè)線程
計(jì)算depth-buffer中的最大與最小深度(與線程同步)
得到min,max后,將相交光源的index存入Light List
做fine prued裁剪(判斷是否在光源形狀中,檢查光源的類(lèi)型,一條線程1個(gè)像素、一條線程4個(gè)光源,用Or操作最后儲(chǔ)存的位數(shù)據(jù))
在最終的渲染中使用該光源
Tips
首先在HDRP中要開(kāi)啟該功能(在Assets中)
因?yàn)樾枰疃戎?#xff0c;所以只能用于不透明物體
在deferred中強(qiáng)制開(kāi)啟,透明物體使用clustered
在forward中選擇開(kāi)啟,透明物體使用clustered
?
總結(jié)
以上是生活随笔為你收集整理的Unity Fine Prued Tiled Light (FPTL)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支付宝申请信用卡好批吗?支付宝绑定信用卡
- 下一篇: C# 多态相关的文章