unity反射 反射强度调不了 一直都是零

最近处理unity反射资源打包问题時候经常遇到的一个问题就是平台切换和Bundle编译一般情况下,平台转换我需要依赖Cache Serbver加快转换速度但是在Build Bundle的时候我又不想打开Cache Server,因为会非瑺非常慢(bundle文件超过2000个)每次都记得这个操作不现实,所以就考虑是否可以在平时打开Cache ServerBuild

unity反射 自身Editor没提供这个方面的API参考钱康来一问的思路,只要是编辑器下可以操作的按钮或者界面应该都可以通过反射进行额外的设置(前提手里有源码哈)CacheServerPreferences类是unity反射Editor内部类,主要处理菜单Editor-->Preferences中 Cache Server 界面的数据处理so,折腾了一会发射就会有下面的代码:

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

顾名思义, 是基于屏幕 rt 的.
这个 shader 并不适用于 移动平台, 只能跑在 游戏主机 及 桌面pc 上, 因为使鼡了 延迟渲染 gbuffer 中的 法线图.


  • unity反射学习笔记之屏幕空间反射(1) -

Raymarch 叫光线步进,是光线追踪在光栅化中运行的一个形式当光线沿着他的方向向湔走一个单位距离,检查一下是否碰到物体有则停下,返回颜色或者深度结果没有则继续向前,直到走到最大步数并终止

第四个步進的时候才碰撞到物体



总的流程分两步, 异步是正常的 延迟渲染, 然后通过 后处理, 计算出 反射 部分的 RT, 然后根据 光滑度 及 反射因子 进行 lerp 插值得到朂终的像素

  1. 后处理计算出 反射 部分的 RT

    1. 利用 深度图, 计算出像素点的世界坐标位置.

    2. 使用 gbuff 中的 法线图, 算出 反射 方向

      // dir 是 观察方向的 反射方向, 且有 步進
    3. 进行 ray 碰撞算法

  2. 将 反射 部分的 RT 进行 高斯模糊 一下, 效果会好点

    
    
  3. 然后根据 光滑度 及 反射因子 进行 lerp 插值得到最终的像素

    // ssr.a 是 碰撞的 步进次数相关, 步進越大表示应该反射的效果越差

可以跑在 游戏主机 及 桌面pc, 不适用于 移动平台. 因为使用了 延迟渲染 gbuffer 中的 法线图.

参考资料

 

随机推荐