您当前的位置: 首页 >  unity

Jave.Lin

暂无认证

  • 1浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity Shader PostProcessing - 9 - RadialBlur 径向模糊

Jave.Lin 发布时间:2020-03-22 01:13:21 ,浏览量:1

文章目录
  • 实现
    • 控制采样步长
    • 完整的Shader
    • 均值模糊
    • DownSample
    • 完整的CSharp
  • 运行效果
  • Project
  • Referneces
径向模糊这个概念最初我是在高中的时候学习PS有介绍的。 当时就觉得这个效果很棒。

当然PS那个径向模糊比我实现的这个效果要好(我这个也不能实现太好的效果,运行在手机上会受不了),毕竟PS是离线编辑,且针对一帧图像处理的,不存在什么性能不性能的问题,怎么炫就怎么来。

实现

从PS上的径向模糊不难理解,就是对指定某个径向点后,如下图中的绿色点C是径向点,红色的P,Q两点别分与C点直线上的前前后后都用采样点,就那些蓝色点,越是靠近C点,采样距离越小,所以模糊程度响度来说会比较小的(意思就会相对边缘的来说会比较清晰)。 在这里插入图片描述 来看看运行中,我们将其他参数调整一下,只看采样距离 在这里插入图片描述

注意查看远处的三颗球,红色圆圈是球的原始位置,黄色箭头是前前后后分别采样的位置,越靠近径向点,采样距离就越近。

还看不出来的话,你就直接看人物的头部,中间部分是最清晰的。

控制采样步长

在代码上只要控制好采样步长就可以了:

float2 stepDir = normalize(vec) * _SampleDistance; // 每次的采样步长方向
float stepLenFactor = len * 0.1 * _Intensity; // len : 0~0.5 再乘上 0.1 就是0~0.05,越是靠近中心开,采样距离会越小,模糊度就会相对边缘来说更小
stepDir *= stepLenFactor; // 控制步长值,stepLenFactor=len * 0.1 * _Intensity中的:0.1是经验数值可以不管,或是外部公开控制也是可以的
fixed4 sum = 0;
for (int it = 0; it             
关注
打赏
1664331872
查看更多评论
0.0472s