像素级动态模糊(Pixel Motion Blur)
动态模糊近几年广泛应用于游戏制作的一种特效,可以使得游戏所呈现出的运动画面更接近于真实相机所拍摄出的效果。 
    在真实世界中,运动模糊是指在相机拍摄画面时,由于被拍摄物体在相机快门曝光的短暂时间内有一定幅度的运动,造成拍摄出的画面产生残影和模糊的效果,通常相机只有在捕捉高速运动物体或者相机本身处在高速旋转中会出现这种效果。 
    那么如何能利用GPU在游戏画面中实现这一效果的呢? 
    其实原理和实现都非常的简单,实现Motion blur的方法也有很多,这里以DirectX9自带Sample中的方法为例进行说明。 
    我们知道在游戏中对于画面的渲染是一种单帧渲染,通常情况下,两帧之间并没有直接关联,但是对于动态模糊在时间上是一个连续行为,最终的效果势必需要前后状态的参与。 
    所以实现的基本原理就是通过记录图像中每一个像素点的运动速度向量,并在该方向采样来混合绘制颜色。 
    …………………… 
    就这么简单…… 
    不过实现的时候还是有很多地方需要注意的,首先效果的实现用到了Post-Processing的概念,也就是说效果的生成并非是在每帧绘制过程中实现的,而是在当前帧绘制完成后进行的,不同的环境中可以用不同的方法完成,在DX下是通过前一文中的Render Target来实现的。 
    在Sample中记录每一像素点的速度是通过下一文中介绍的Multiple Render Target实现的,格式使用的是D3DFMT_A8R8G8B8和D3DFMT_G16R16F浮点型。 
    像素点速度的计算是通过相邻两帧之间像素的经过投影变换的世界矩阵相减得到的,不要忘记的是,坐标要除以w得到非齐次坐标后再进行相减计算。 
    得到像素点速度后,通过在速度方向上进行一定数量的采样,混合后即可得到该点的正确颜色。 
    这种方法的实现优点在于原理简单,缺点在于对于模拟极端情况下(超长曝光时间,超高运动速度)和运动轨迹弧度较大是失真比较明显。

像素级动态模糊(Pixel Motion Blur)相关推荐

  1. 动态模糊或运动模糊(motion blur) 介绍

    // 动态模糊或运动模糊(motion blur)是静态场景或一系列的图片像电影或是动画中快速移动的物体造成明显的模糊拖动痕迹. 摄影技术 当相机拍出影像时,不单只表现出单一时间的即时影像.由于技术限 ...

  2. Ae动态模糊插件ReelSmart Motion Blur

    REVisionFX ReelSmart Motion Blur for Mac是一款运行在After Effects上的运动模糊插件,这款RSMB动态模糊插件支持自动跟踪动画运动的像素,然后添加自然 ...

  3. Arnold材质节点篇- 动态模糊Motion blur

    动态模糊Motion blur 启用渲染设置中的Motion blur: 快门角度: 长度值的不同效果对比:  关键帧的不同效果: 可以看到关键帧增加以后,运动轨迹形成弯曲的曲率变化,呈现了更好的运动 ...

  4. 【shadertoy】线性动态模糊的实现 Analytical Motion Blur

    动机 在shadertoy看到这个动态模糊的代码Analytical Motionblur 2D.不只是他的动态模糊,他整体的颜色.背景.小球的运动等都感觉很棒.代码也不长,因此仔细研究了下. 具体效 ...

  5. URP——后期处理特效——运动模糊Motion Blur

    Motion Blur 运动模糊效果模拟了真实相机拍摄物体运动速度快于曝光时间时图像中出现的模糊.这通常是由于物体快速移动,或曝光时间过长所致. 通用渲染管道(URP)只模糊摄像机的运动. Using ...

  6. 什么是运动模糊(Motion Blur)

    运动模糊是景物图象中的移动效果.它比较明显地出现在长时间暴光或场景内的物体快速移动的情形里. 为什么会出现运动模糊 摄影机的工作原理是在很短的时间里把场景在胶片上暴光.场景中的光线投射在胶片上,引起化 ...

  7. Opencv 实现 运动模糊的添加(motion blur)与消除(demotion blur)

    此代码用于实现模糊运动的添加与消除. 原理:在已知模糊运动核的前提下,可通过核线性卷积的形式对图像添加运动模糊, 反之也可利用该核精确的去除该运动模糊. 说明:本例代码是在梳理前人代码的基础上整理得到 ...

  8. Unity3D 背景动态模糊(blur)和截屏方法

    unity 提供了一个函数 OnRenderImage (RenderTexture source, RenderTexture destination) ,只要将这个组件挂载在Camera上面.就能 ...

  9. Motion Blur 运动模糊 后期处理系列6

    Motion Blur 运动模糊 本文档主要是对Unity官方手册的个人理解与总结(其实以翻译记录为主:>) 仅作为个人学习使用,不得作为商业用途,欢迎转载,并请注明出处. 文章中涉及到的操作都 ...

最新文章

  1. 陶哲轩实分析命题10.1.7
  2. MpVue开发之swiper的使用
  3. linux mysql temp 设置_linux上mysql的简单入门
  4. vim: 远程登陆服务器时可能出现的: 方向键,回退符不能正常使用
  5. 基于TableStore的亿级订单管理解决方案
  6. Vue第三部分(1):Vue脚手架构建过程详细介绍和案例
  7. 一个类GraphQL的ORM数据访问框架发布
  8. 欧菲光:预计2020年全年净利润为8.1亿-9.1亿元
  9. h5 监听浏览器被切换到后台或者手机锁屏再次唤起事件
  10. html缓存失败是什么,HTML5离线“应用程序缓存错误事件:清单读取失败(-1)”...
  11. VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文
  12. 2006技术盘点 多项无线技术被高估
  13. 离散数学 集合的运算
  14. Ubuntu sudo apt-get 安装下载更新软件包命令详解
  15. 2.系统发生树构建(非加权分组平均法、邻接法python实现)
  16. 2016版excel_excel中yd是什么意思
  17. 物联网+阿里云+小程序开发的一些工具和方法总结
  18. 参加AWS技术峰会的收获与思考
  19. 【控制工程基础】五、线性反馈系统的稳定性
  20. BUUCTF 面具下的flag writeup

热门文章

  1. ethtool修改网卡队列
  2. linux存储--文件描述符以及file结构体(一)
  3. DPDK pci设备初始化(十七)
  4. mysql内联表格使用索引_【求助】MYSQL表关联内联视图不走索引问题??诡异啊...
  5. [译]学习IPython进行交互式计算和数据可视化(四)
  6. 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
  7. 30 天精通 RxJS (05): 建立 Observable(一)
  8. Word组件 Spire.Doc for .NET V6.0.3发布 | 修复多个重大bug
  9. [Mvel]Mvel2.0使用指南一 基础
  10. mycncart 1.4.0.0 新版本发布