欢迎光临散文网 会员登陆 & 注册

URP | 后处理-景深和散景模糊

2022-12-05 14:18 作者:那个人真狗  | 我要投稿


目的

  • 景深是什么?主要的表现效果是什么?

  • 实现方法是什么? 需要注意都有那些点。

  • 景深和散景的区别是什么?

使用 Unlty 2022.1

景深原理

景深表现效果

景深一般在摄影中比较常见,简单理解就是要拍清楚的主清楚,其余背景是模糊的效果。

  • UE4 中的景深

  • 示意图

我们可以看到在摄影过程是控制深度来渲染物体。

我们在渲染过程也是控制深度来渲染景深。

计算过程

  • 获取渲染深度图

  • 对深度图进行控制调整显示的深度位置。

  • 分开近景和远近计算,我们希望不在景深的里的物体进行模糊。

  • 使用后处理来对画面进行处理。

景深实现 | Depth Of Field

高斯景深 | Gaussian

这种模式近似相机的效果,但不完全模仿他们。它有一个有限的模糊半径和只做远场模糊。这种模式是速度最快的,也是低端平台的最佳模式。

URP | Depth 深度 - 哔哩哔哩 (bilibili.com)

计算深度

获取深度

  • 怎么控制获取的深度范围,

我们可以使用摄像机这两个数值查看渲染的深度位置。

  • 效果

这样我们就获取到了物体到摄像机的距离。

注意:深度和摄像机Far有关系,这个效果默认是1000。

景深权重

我们景深的效果 中间清楚,前后模糊的效果。

  • 类似

我们就需要深度 (白-黑-白) 的关系,

  • 白色模糊

  • 黑色清楚

Shader

定义两个变量,一个变量控制我们 视角的焦点 ,一个变量控制我们的强度

  • 变量

使用另一种方法获取深度,Unity函数

我们前使用二次函数,限制在0-1范围

增加两个变量控制 一个是焦点大小的 一个是 白色黑色对比度

  • 效果

我们需要两个变量,

把这个计算过程合并成一个函数,方便我们调用。

全代码

计算深度的就算完成,我们还需要控制模糊效果,黑色不模糊,白色模糊。

高斯模糊

我们获取深度控制焦点已经实现,接下来实现模糊效果,

URP | 后处理-模糊算法总结 - 哔哩哔哩 (bilibili.com)


我们在创建一个片元着色器来处理模糊,


这个片元着色器才是输出的效果,

上面那个是我们输出查看深度值的,这才是输出查看模糊值。


全代码

注意:前调整好流程,在调整效果。


Volume

  • 效果

这次新增加两个功能

  • 属性太多分割,

  • 增加自己的组件路径

RendererFeature


这里增加降采样模糊,虽然有这个功能但是不推荐开启。

  • 完成

背景模糊
中景清楚,前后模糊

散景模糊 | Bokeh

大佬
高品质后处理:十种图像模糊算法的总结与实现 - 知乎

散景(Bokeh)亦称焦外成像,是一个摄影名词,一般表示在景深较浅的摄影成像中,落在景深以外的画面,会有逐渐产生松散模糊的效果。散景效果有可能因为摄影技巧或光圈孔形状的不同,而产生各有差异的效果。例如镜头本身的光圈叶片数不同(所形成的光圈孔形状不同),会让圆形散景呈现不同的多角形变化。此外,反射式镜头焦外的散景,会呈现独有的甜甜圈形状。

散景模糊

散景(Bokeh)在摄影学中被称为焦外成像,而在光学上被称为Circle of Confusion, CoC(弥散圆/散光圈/散射圆盘 ),即下图橙色Image Plane 中的蓝色C所示区域。由于不同的物距(物体到镜头的距离)投影到镜头所形成的焦点不同,但Image Plane 只能放在某个点上,所以就形成了Circle of Confusion, CoC(弥散圆)。

理解 整体表现是在模糊的背景有光斑效果

Shader

核心代码 使用圆形散景为例, 采用Golden进行散景模糊(Bokeh Blur)算法的实现

即对于每一次迭代,让采样uv旋转一个角度,经过足够次数的迭代后,众多以圆形分散开来的点,将一起组成合适的Bokeh形状。

  • 这个函数就得到了,主要是计算模糊的效果。

    我们还需要计算深度,根据不同深度使用模糊,和我们的上面类似,

  • 不同的区别是这次黑白过度快速,硬一点,景深模糊我们希望黑白过度线性。

深度计算我们处理一下,分成前半部分和后部分,单独可以控制这俩部分的颜色。

  • 在使用 Lerp 融合 前面是原图,后面是散射效果,使用

    白色模糊  黑色不模糊

  • 深度

  • 效果

Shader全代码

Volume

Volume 组件和RendererFeature  都使用景深组件,我们定义 枚举来控制显示那个属性,

注意:这里没有学会Volume 组件使用Eume显示不同属性。

  • 效果

设置Bokeh类型,Broke属性起作用。

设置Bokeh类型,Broke属性起作用。


RendererFeature

URP | 后处理-模糊算法总结 - 哔哩哔哩 (bilibili.com)

URP | 后处理-自定义后处理 - 哔哩哔哩 (bilibili.com)

这里大部分和上面一样,主要区别是不同枚举类的使用判断执行不同效果。

  • 定义2个函数,输入需要的数据

定义一个大的Render 渲染

根据不同的类型执行不同的函数,


全代码


  • 效果


总结

  • 景深模糊,简单理解就是获取深度控制深度形成V型,进行模糊的效果,

    渐变平滑过度,线性。

  • 散景模糊,过度快速,对比强,



URP | 后处理-景深和散景模糊的评论 (共 条)

分享到微博请遵守国家法律