Unity Shader效果实现汇总

时间:2024-04-08 15:48:07

效果1:Edge+Bloom(边缘高光)

使用菲涅尔边缘效果,配置局部Bloom,实现边缘高光效果

Unity Shader效果实现汇总

效果2:outline+stencil+bloom(轮廓背光)

思路:

第一步获取边缘,使用的屏幕处理,使用Soble梯度算子,对生成的DepthNormalMap进行卷积处理。对于单个物体加高光可以使用单独Camera进行渲染物体(为了节省性能,可以使用最小透视矩阵)。

第二步对以上获取的轮廓线进行高光模糊处理,以实现光晕效果。使用普通的高斯模糊模板进行卷积计算就可以。

第三步使用Stencil过滤掉需要进行高光处理的对象,如下图只高光内边是截断的,这样再叠加了对象之后就显示为物体边缘背光的效果

Unity Shader效果实现汇总

3. Sketch(草图效果)

思路:难点是物理层次的提取,比如下面一个长方体,这种凸物体,从任何一个方向看分为两层,即从camera出发一条射线,与物体相交两次后穿过物体。对于一些繁杂的物体会有多个层。这个的原理比较繁杂,可以参考Nvidia Gem。

https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch16.html

之后对每一层,使用效果2同样的方法提取出边缘,各自的层的边缘进行叠加之后就形成了如下效果。


Unity Shader效果实现汇总

4. stencil-blur(局部模糊/毛玻璃效果)

思想比较简单,对玻璃进行Stencil设置,然后在模糊后处理中,只进行Stencil部分的模糊处理。

Unity Shader效果实现汇总


5. Volumelight-with-cull(体积)

引入厚度值,原理与上面分层处理差不多。通过厚度值模拟体积,同时对于体积内部的物体也进行厚度的重新计算。

Unity Shader效果实现汇总

6. 溶解

这个就不多说,网上有很多的例子


Unity Shader效果实现汇总

直接上Shader Forge实现的截图,其中比较特别之处是溶解边缘的梯度变化通过UV 映射到一张1D的Texture,以实现边缘高光的处理。

Unity Shader效果实现汇总

7. 移动光

早期的一个效果,由于是面向移动端,效果不太好。其中有一个移动的高光效果来模拟神经元间的传导。

Unity Shader效果实现汇总

8.冰格子效果

WireFrame+世界平面投影UV Panner,后续会加上blur那效果应该会酷一些

Unity Shader效果实现汇总


Unity Shader效果实现汇总