编程语言
首页 > 编程语言> > UNITY STANDARD ASSETS源码学习笔记(二)Sun Shafts

UNITY STANDARD ASSETS源码学习笔记(二)Sun Shafts

作者:互联网

  这个其实就是God Ray的一种实现,即提取图中亮度大的部分,做径向模糊,然后叠加在原图上。有一篇讲的很不错的God Ray的文章中有提到这个方法,其中的图很直观。https://blog.csdn.net/puppet_master/article/details/79859678

 

 

   用他这张图,结合Unity的Sun Shafts,跑了下类似的效果,还是比较好看的。

  原图:

 

  GodRay:

 

 

   不过这个感觉光的颜色不太对劲,换了个颜色就挺不错的了:

 

 

 

   另外,参考了另一个人的博客,搞了一个类似于丁达尔效应或者体积雾的效果(博客地址:https://zhuanlan.zhihu.com/p/186270029):

 

 

  不过因为博客园似乎无法上传视频,只能作罢了,不过本来这种情况下出现雾也就不太符合自然情况。

 

  关于源码部分,frag分为使用深度图和不使用深度图的。

  先看一下一个公共函数:

 

   这个函数根据传入的值,如果把超出亮度阈值的部分转化成一个half返回,由于rgb相同的一定是灰色,所以这就是注释中说的greyscale的含义;从这里可以知道shader中有提取高亮度的部分,并受到参数控制。

  对于使用深度的部分,代码如下:

 

   可以很明显的看到只有深度很远的才会被采样,所以相机里面直接放一张图也是可以后处理的。

  对于不使用深度部分,代码如下:

 

   其中的Luminance函数式用来计算一个颜色的灰度值的,也就是说,代码比较了天空和该点颜色差值的灰度值,如果过小,就使用天空盒的颜色进行转换,说实话,这里没有看的太懂,实际上,场景跑起来的效果也是怪怪的= =。

  总而言之,这个提取高亮部分做径向模糊的思路还是比较惊艳的,不过Unity源码本身没有看的太明白。。

 

标签:原图,深度图,颜色,ASSETS,Sun,源码,灰度,部分
来源: https://www.cnblogs.com/zzyDS/p/16275152.html