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