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

  • 相关阅读:
    iOS-Foundation框架—结构体(转载)
    Spring-boot-admin功能说明
    http状态响应码对照表
    spring cloud config 详解
    bat 常用命令
    kafka 安装
    Zookeeper 安装和配置
    使用事件和消息队列实现分布式事务(转)
    消息总线
    分布式配置中心高可用
  • 原文地址:https://www.cnblogs.com/zzyDS/p/16275152.html
Copyright © 2020-2023  润新知