zoukankan      html  css  js  c++  java
  • ShaderLab-12chapter屏幕后处理、高斯模糊、图片置灰效果、Bloom

    屏幕后处理的原理

    • 使用特定的材质去渲染对应相机*裁剪*面的4边形面片(刚好填充屏幕)

    • 标配代码
      实际上屏幕后处理是,渲染了和屏幕大小的面片。需要关掉Cull 和深度写入。如果在透明物体渲染之前调用后处理,会产生异常。

    ZTest Always Cull Off ZWrite Off
    

    屏幕后处理-高斯模糊

    原理与思想:
    1 利用卷积计算(卷积核:高斯核),核的每个元素的计算如下:

    (其中x,y代表距离中心的偏移。σ是标准方差,一般取1. e约是2.7)

    2 如果直接卷积滤波。就需要NNWH次采样 (NN代表核大小,WH是图像宽高)
    幸运的是,可将二维高斯函数拆分为两个一维函数。
    优化为2NW*H次采样,即分水*和垂直两个pass去做滤波。 效果和直接卷积一样。

    3 C#层优化
    1)配置高斯模糊迭代次数、模糊范围、缩放系数(对Blit的RT的大小控制)

    亮度-Luminance公式 --扩展置灰实现

    luminance = 0.2125 * Red + 0.7154 * Green + 0.0721 * Blue

    (用亮度来代替颜色值)

    • 扩展
    float grayColor = color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
    

    Bloom

    原理:(灰度+高斯模糊)
    1,用灰度的公式提取亮度到缓存RT。第1个pass
    2,高斯模糊亮度图。第2,3个pass
    3,叠加颜色。第4个pass

  • 相关阅读:
    项目经理必备的8个要素:沟通、总结、懂技术
    完工概率计算总结
    PMP--可能会涉及到的计算题
    六顶思考帽子法
    预测技术
    React.Component与React.PureComponent的区别
    简单理解JavaScript,TypeScript和JSX
    自己常用的linux命令
    ES6 promise 用法
    node的express框架接收get/post请求时,参数获取方式
  • 原文地址:https://www.cnblogs.com/Jaysonhome/p/13060075.html
Copyright © 2011-2022 走看看