摘要:
在写Visibility Buffer流程之前,还得给自己的管线添加延迟渲染的流程。
于是乎在参考HDRP的Deferred Lighting的时候看到了Indirect Dispatch的优化手法,然后也意识到这样的优化手法也能够作用到之前写的SSR之中。 阅读全文
摘要:
很早之前就看HDRP里面的Color ColorPyramid的生成不爽了,都不知道为什么明明有现成的ColorPyramid.compute放着不用,还是用的是PixelShader生成。DrawCall数量多,效率也不够Compute的方式快。
这篇文章主要解析ColorPyramid.compute怎么用LDS优化GuassianBlur以及不同方式Copy mip 0的性能对比。 阅读全文
摘要:
原本一开始是想着写个简单点的SSR的,看到HDRP SSR利用Motion Vector重新投影能够用历史帧实现异步,就肘不动道了。
于是乎就想通过这篇文章记录关于unity实现Motion Vector输出的一些坑点(材质Pass Enable/模版值管理)。 阅读全文
摘要:
在之前的项目开发HDRP的时候,就觉得绑定RT的管理就像一坨屎一样难受,改了管线RT的绑定顺序,原来的Shader输出又会有问题(主要是SV_Target顺序问题),
为了解决所有pass的RT绑定顺序的问题,后面就想着用代码生成的办法自动生成Include文件,规范Pass输出struct引用文件,顺带也把这个GenerateHLSL Attribute解析一下,于是乎就有了这一篇文章。 阅读全文
摘要:
这一章是把之前留的关于标量化LightLoop的坑给填了,会涉及到一些关于GPU的硬件知识,标量化变量的好处和途径。 阅读全文
摘要:
看完上一节基本上HDRP的光照剔除数据的流程就写完了,这一节主要是解析适用于透明队列的Cluster光照剔除。
为了让Cluster的均匀分布,Cluster的光照剔除也同样是借助了PreDepth的深度图。 阅读全文
摘要:
如果看了前面的BigTileLightList的建立,这一章会简单一点。
因为如果启用了BigTile之后,这里的BuildPerTileLightList就需要从BigTileLightList里面读取LightList。
否则还是需要像BigTile一样去先走同样的灯光剔除流程(NDCAABBBoundTest,SphericalIntersectionTests,
然后才到最后的FinePruneLightsTest。 阅读全文
摘要:
这一节主要解析BigTile的流程,BigTile主要的作用是:
在进行更细粒度的剔除之前,建立起来屏幕空间上的LightList(BigTile)。
在建立更细粒度的Tile Light List的时候,可以通过屏幕坐标映射找到对应的BigTile,只需对BigTile内的Light做剔除计算,从而减少剔除时的运算量。 阅读全文
摘要:
FPTL也叫Fine Pruned Tiled Light Lists。自从我开发HDRP的时候,就一直想把这个FPTL的实现完全看明白。但是无论是国内还是国外都几乎找不到关于HDRP相关算法的解析,基本上都是寥寥草草几句话带过,于是乎就有了这篇水文。 阅读全文
摘要:
过滤掉unity里面的其他没有用的Shader,或者重新将工程里面的Shader列表重新排序,避免美术使用乱七八糟项目以外的Shader的解决方案 阅读全文