简单的运动模糊效果实现

原创 2007年10月02日 03:32:00
 
当一个物体快速移动的时候, 人眼会感觉它变模糊. 同样的现象在电影和照片上也存在. 产生这种现象的原因是人眼并不是无限快地接收信息的, 而是每隔一段很短的时间” 截取” 一幅画面。如果物体移动的速度超过了人眼捕获画面的速度, 那么物体会呈现条纹效果.
 
了解现实世界中的效果有助于我们用计算机去实现它. 理想的方法是判断每个像素在相邻两帧之间移动的速度, 跟据这个信息再来进行处理. 这个方案是可行的, 但是有点复杂. 另一种方法就是将当前帧的画面跟上一帧的画面进行混合, 并不考虑物体的移动速度. 这只是一种近似效果, 并在如今的视频游戏中得到了广泛的应用.
实现运动模糊屏幕效果有两方面的目的: 一是为了模拟现实中的运动模糊 二是它可以减轻渲染中的锯齿效果, 特别是在硬件不支持反锯齿的情况下, 这是一个廉价的替代方案.
 
实现原理:
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,摄像机 摄像机其实就是把相机拍摄的图像转化为视频格式,摄像机每秒拍摄多少张图像,就是说该相机的快门频率。 2,视频运动模糊 归根结底,还是因为相机的快门不够快。可以参考下面的例子: 例子:你...
  • junmuzi
  • junmuzi
  • 2017年07月26日 20:51
  • 227

Nicholas谈UE4高级渲染:动态光照迭代快

GameLook报道/6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办。 如何用好UE4引擎,发挥其强大...

谈UE4高级渲染:动态光照迭代快

GameLook报道/6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办。 如何用好UE4引擎,发挥其强大...

Cocos2d-x 3.10心得(06)- 运动模糊

我的经历生动说明了人的懒惰真是深入到骨髓,当想起来写写笔记的时候,cocos2dx都已经从3.0升到3.13了。虽然我用的是3.10版本,不过应该不会有太多差别。 说起来,百度“运动模糊”的话,可以...

OpenCV实现运动模糊图像的模拟

产生模糊和噪声的原因有很多,比如拍摄环境的不稳定、拍摄设备的不精密、拍摄对象的快速运动、空气气流的扰动、储存与传输过程电路产生的错误等,本文要考虑的是由于拍摄对象和拍摄设备相对运动引起的运动模糊。关于...

虚幻UE4的后处理特效介绍

虚幻UE4提供了后处理特效的功能,可以实现景深,光溢出,色调调整,饱和度等等。要使用虚幻4的后处理,就一定要用到PostProcessVolumn,这是一种特殊的体积,可以放置在场景中的任何位置。 ...

教你一分钟实现动态模糊效果

转载请注明出处:http://blog.csdn.net/wl9739/article/details/51955598 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 现在,...
  • wl9739
  • wl9739
  • 2016年07月19日 14:33
  • 10425

什么是运动模糊(Motion Blur)

from:http://www.cnblogs.com/lancidie/archive/2011/02/24/1963474.html 什么是运动模糊(Motion Blur)  运动模...

运动模糊

using UnityEngine; public class _MotionBlur_1 : MonoBehaviour {  public float blurAmount = 0.8f; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的运动模糊效果实现
举报原因:
原因补充:

(最多只允许输入30个字)