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