当一个物体快速移动的时候, 人眼会感觉它变模糊. 同样的现象在电影和照片上也存在. 产生这种现象的原因是人眼并不是无限快地接收信息的, 而是每隔一段很短的时间” 截取” 一幅画面。如果物体移动的速度超过了人眼捕获画面的速度, 那么物体会呈现条纹效果.
了解现实世界中的效果有助于我们用计算机去实现它. 理想的方法是判断每个像素在相邻两帧之间移动的速度, 跟据这个信息再来进行处理. 这个方案是可行的, 但是有点复杂. 另一种方法就是将当前帧的画面跟上一帧的画面进行混合, 并不考虑物体的移动速度. 这只是一种近似效果, 并在如今的视频游戏中得到了广泛的应用.
实现运动模糊屏幕效果有两方面的目的: 一是为了模拟现实中的运动模糊 二是它可以减轻渲染中的锯齿效果, 特别是在硬件不支持反锯齿的情况下, 这是一个廉价的替代方案.
实现原理:
1.先将场景渲染到一个RenderTarget1上
2.将RenderTarget1跟上一帧渲染的结果进行混合, 并输出到RenderTarget2
3.将RenderTarget2输出到屏幕, 并将其保留到下一帧进行混合
详见下图:
Shader 实现
两个Pass
Teapot Pass将场景正常渲染到BaseSceneRT上.
BlurPass进行混合, 输出到BluredRT, 注意同时这里BluredRT做为Texture1输入上一帧的结果所以设置在渲染时不进行清除操作.
混合时需要一个比例值blur_factor进行插值, 在这里我设置为0.5
PixelShader代码:
sampler2D Texture0;
sampler2D Texture1;
float blur_factor;
float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR
{
   float4 color1 = tex2D( Texture0, texCoord );
   float4 color2 = tex2D( Texture1, texCoord );
  
   // 插值
   return lerp( color1, color2, blur_factor );
}
最后把BluredRT输出到屏幕即可(按说这里应该再加一个Pass的, 我偷懒, 直接把BluredRT显示到窗口上看效果了)
快速拖动物体, 可以看到效果了^_^:

简单的运动模糊效果实现相关推荐

  1. UG模具:简单的运动仿真!只需七步,就让轮子转起来!

    UG模具:简单的运动仿真!只需七步,就让轮子转起来! 今天带大家了解一下UG中的运动仿真,如下图,让轮子转起来(这个轮子自己画一下即可).很简单的操作,看完这七步,你也可以在UG中做些简单的运动仿真了 ...

  2. 超简单Shader 实现模糊效果

    今天分享一个超简单实现模糊效果的方法,先上图: 核心代码就这句: 注意要在3.0以上的版本才能使用 在采样后做偏移采样再叠加,效果与下面的代码类似: float4 frag(v2f o):SV_TAR ...

  3. 滤镜CIFilter简单处理(模糊效果,旧色调处理)

    简单创建CIFilter  没有专业处理, 仅能达到简单的模糊效果,效果如图 (1)原图 (2)旧色调处理效果 (3)模糊处理 简单的代码结果如下 // //  ViewController.m // ...

  4. RenderScript:简单实现动态模糊效果

    见过很多毛玻璃的效果,当然也有很多实现毛玻璃效果的方法,这是写的一个毛玻璃效果的小例子,简单记录下 思路: 动态设置模糊效果,可以看成是两张图片的叠加,通过设置其中一张图片的透明度,从而实现动态模糊的 ...

  5. 手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码

    置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻. 好嘞,一.二.三,咔嚓. 由于行人和车辆都在运动,再加上你的手稍微抖了一抖,照片中的景象是这样的-- 这样的-- 和 这样的-- ...

  6. 拍照手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码

    安妮 编译自 ArXiv 量子位 出品 | 公众号 QbitAI 十图九糊. 置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻. 好嘞,一.二.三,咔嚓. 由于行人和车辆都在运动, ...

  7. 用MATLAB做简单的运动模糊

    clear all I=imread('cameraman.tif'); subplot(121);imshow(I); xlabel('(a)原始图像');%x轴标签 len=35;%设置运动位移为 ...

  8. DeblurGAN消除运动模糊效果惊人

    安妮 编译自 ArXiv 量子位 出品 | 公众号 QbitAI 十图九糊. 置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻. 好嘞,一.二.三,咔嚓. 由于行人和车辆都在运动, ...

  9. Unity URP运动模糊效果Shader

    实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...

最新文章

  1. 点分十进制IP校验、转换,掩码校验
  2. 程序 算法与数据结构
  3. Cisco交换机的经典配置(1)
  4. CVPR 2014 ObjectnessBING 原文翻译
  5. QT删除QWidget或QLayout下的控件
  6. 【Java】6.6 Java 8 改进的结构
  7. 经典C语言程序100例之三一
  8. java get null_java 获取对象中为null的字段实例代码
  9. Nginx的配置中与流量分发相关的配置规范:
  10. Efficient scaling in a Task-Based Game Engine
  11. 转:让程序只运行一个实例的四种方法
  12. map.setTerrain is not a function
  13. cheerio获取元素内文本,但不包括其子元素内的文本值的方法
  14. 缓冲流与打印流(字节与字符)
  15. 鸟哥的Linux私房菜学习笔记(三)
  16. 沙盒生存游戏:打造世界Craft the World Mac中文版
  17. html5获取经纬度失败,h5获取经纬度有问题
  18. 解决ubuntu下wps卡顿和缺少字体
  19. 爬取武汉所有的公交站名
  20. 操作系统——放置策略

热门文章

  1. 《计算机网络(第七版)-谢希仁》重点知识 - 计算机网络基础知识
  2. 如何禁用笔记本电脑触摸板_您如何永久禁用笔记本电脑上的触摸板?
  3. 单片机叮咚c语言,单片机试验19“叮咚”门铃
  4. 软件需求管理(二) 需求获取
  5. 【NIPS 2016图神经网络论文解读】Variational Graph Auto-Encoders (VGAE) 基于VAE的图变分自编码器
  6. 【Ubuntu】服务器使用
  7. 《痞子衡嵌入式半月刊》 第 15 期
  8. rtsp 用户名、密码登录
  9. python能以文本和二进制方式处理文件_Python文件处理之文件写入方式与写缓存(三)...
  10. 【Win32多线程】异步I/O技术(Overlapped I/O),避免使用多线程