• 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源码本身没有看的太明白。。

  • 相关阅读:
    PYTHON 函数总结
    PYTHON 模块总结
    python例题21--30
    python例题11--20
    python例题 1--10
    如何选中表格内同类名的某一行?
    table表格td内内容自动换行
    layer弹出层传值到父页面
    DIV内数据删除操作
    锚记搞定窗口滚动
  • 原文地址:https://www.cnblogs.com/zzyDS/p/16275152.html
Copyright © 2020-2023  润新知