转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=1964

在KlayGE开发版中,deferred rendering的流水线中新增加了由组员王清源实现的屏幕空间反射(Screen Space Reflection,SSR),也称为Real Time Local Reflections。

反射对rasterizer来说是非常郁闷的,一般只能是平面反射或者cubemap的环境反射,并且需要多次渲染场景。对于非平面物体,可能性之一是使用Real-time Multi-perspective Rendering on Graphics Hardware的方法,把场景中的所有三角形通过非线性映射重新投射到反射物体上。这样的方法仍需要多次渲染场景,而且pixel shader开销巨大。相反,对于ray tracing来说,反射是个非常直接的事情,只要多算一次求交就可以了。

SSR就是借用了ray tracing的思想,对于每个要反射的pixel,计算一个反射ray,与屏幕空间的像素求交。对于deferred rendering来说,屏幕空间的normal和depth都是现成的,所以很容易直接就能计算出反射ray。然后就把反射ray和depth buffer做一次ray marching,得到相交点,采到它的颜色,就完成了反射。这个算法听着耳熟?没错,parallax occlusion mapping(POM)也是这样。所以,相当于你可以用POM的低廉开销做到屏幕空间非平面反射!

当然,因为反射本应该是全局的,而屏幕空间的数据很有限,这种方法只能反射局部的像素。如果发现相交点接近屏幕边缘,就得fade out。另外,根据表面的光滑程度做jitter,不然都会是非常清晰的反射。

SSR的优点:

  • 速度极快
  • 可以处理非平面
  • 与deferred rendering配合良好
  • 支持各种光滑度

缺点:

  • 反射结果较粗糙
  • 只能局部反射

本来打算把Ocean例子改成用SSR,但因为Ocean目前不是采用deferred rendering,要修改的话肯定赶不上KlayGE 4.1了。只能等到下一版才有空切换过去。在当前版本中还有另一个问题,因为normal用的是best-fit的方法保存成24bit,精度较低,所以在某些视角上会出现误差较大的反射ray,导致反射图像不连续。

空间, 平面

屏幕空间实时非平面反射相关推荐

  1. [图形学] Mirror’s Edge中Hi-Z屏幕空间锥跟踪反射

    reference:<GPU Pro 5> 总览 本章将介绍一种计算动态3D场景反射的新方法,该方法适用于任意形状的表面.Mirror's Edge早期研究的算法和技术已经提出并共享. 我 ...

  2. DirectX11 With Windows SDK--32 SSAO(屏幕空间环境光遮蔽)

    前言 由于性能的限制,实时光照模型往往会忽略间接光因素(即场景中其他物体所反弹的光线).但在现实生活中,大部分光照其实是间接光.在第7章里面的光照方程里面引入了环境光项: C a = A L ⊗ m ...

  3. 【实时渲染】屏幕空间特效和多边形技术

    前言:主要涵盖了<real time rendring 4>第12章image space affect和第13章beyond polygons的前六节内容. 目录 屏幕空间特效(Imag ...

  4. 光影的魔法!Cocos Creator 实现屏幕空间的环境光遮蔽(SSAO)

    引言: 本文作者 alpha 从事游戏前端开发已经5年,毕业后他先是入职了腾讯无线大连研发中心,而后开启了北漂生涯,在北京的这3年一直都在使用 Cocos Creator,对前端业务,包体.内存优化有 ...

  5. 屏幕空间环境光遮蔽(SSAO)算法的实现

    SSAO SSAO介绍 之前写SSAO的时候最后一直没达到想要的效果,最近闲下来又重新写了下,才发现自己之前真的蠢- -!(位置和法线忘转到视口坐标).这里就好好整理一下这个算法,以免下次想拿起来又不 ...

  6. 《杀戮地带:暗影坠落(Killzone: Shadow Fall)》工程师讲解使用屏幕空间反射系统

    相信很多玩家十分喜欢Guerilla Games打造的FPS大作<杀戮地带:暗影坠落(Killzone: Shadow Fall)>,这款游戏里面的科技含量不容小觑,在今年SIGGRAPH ...

  7. 基于屏幕空间渲染的液体模拟

    这是侑虎科技第426篇文章,感谢作者Nae Zhu供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群465082844) 个人主页:https: ...

  8. Vulkan_SSAO—屏幕空间环境光遮蔽

    屏幕空间环境光遮蔽 我们已经在前面的基础教程中简单介绍到了这部分内容:环境光照(Ambient Lighting).环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scatt ...

  9. OpenGL进阶之SSAO屏幕空间环境光遮蔽

    参考: https://learnopenglcn.github.io/05%20Advanced%20Lighting/09%20SSAO/ 环境光照是我们加入场景总体光照中的一个固定光照常量,它被 ...

最新文章

  1. 浅析Kubernetes StatefulSet
  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第29篇]什么是UF-CMA数字签名的定义?
  3. 十、Spring的@Profile注解
  4. CentOS5.5下SVN部署文档
  5. VMware相关的缩略语和缩略语
  6. 速修复!这个严重的 Apache Struts RCE 漏洞补丁不完整
  7. linux程序运行段错误,Linux下的段错误产生的原因及调试方法
  8. QT自制复古武侠端游
  9. 加油站都需要什么手续_开办加油站需要办哪些手续?
  10. 通过hive sql实现报表中的MTD,YTM,YTD
  11. 笔记:Linux系统调用在文件中的分布情况
  12. java解决 No enclosing instance of type XXX is accessible的问题
  13. Python(arcpy) 根据站点经纬度(坐标)批量提取对应格点值
  14. svn服务端删除版本库_svn历史版本删除(为svn库瘦身)
  15. Java 8-Duration 详解
  16. 计算机辅助英语教学mti,计算机辅助翻译与翻译硕士(MTI)专业建设
  17. 谷歌开发者工具的使用
  18. 百度地图最新版本sdk使用系列(四)-开启卫星地图,实时交通图,实现标注覆盖物等功能
  19. 论文学习——Tune-A-Video
  20. Arraylist理解

热门文章

  1. python中pygal_在Python中导入pygal查看直方图
  2. 服务器文件绝对路径,服务器文件绝对路径
  3. php 模拟请求工具,http-mock-master模拟HTTP请求库
  4. mac 电脑连接不上github_Mac电脑使用终端连接服务器及传输文件
  5. 微型计算机中普片编码,【单选题】微型计算机中普遍使用的字符编码是A. ASCII码B. BCD 码C. 拼音码D. 补码...
  6. android 销毁按钮,Android实现所有Activity全部销毁
  7. 国家计算机科学进展,主动网络安全的研究与进展
  8. ImportError: libjpeg.so.62: cannot open shared object file: No such file or directory
  9. Java学习笔记2.3.6 运算符与表达式 - 条件运算符
  10. 2017.8.20 后缀自动机(p3804) 思考记录