在前一文中介绍了像素着色器与material,大概知道了UE4材质的生产管线:

Jerry:UE4渲染模块概述(三)---Pixel Shader & Material Rendering​zhuanlan.zhihu.com

在光滑的地面或墙面上需要渲染物体的反射信息,实时计算很难实现 ,本文介绍UE使用的三种反射系统,这三种反射系统各有利弊,往往会将之混合起来使用。

第一种:反射捕获(Reflection Capture)

它会在指定位置计算前后左右上下六个方向的反射信息,形成一张静态的立方体图(Cubemap),这个过程是预计算的,所在实际跑起来的时候消耗很低,但也因为只是在特定位置计算的,所以当实际镜头与捕获不同时,就会看到不合理的反射图样。

UE4使用球体反射捕获对象(Sphere Reflection Capture Actor)来指定捕获的位置,如下图所示:

也有方形的版本(Box Reflection Capture Actor),如下图所示,不过比较常用的还是放置球形捕获Actor:

它本质上是捕获一张360度的图片,然后将图片混合到模型上(如上图所示的地图和茶壶身上),但只在捕获点是准确的,如果镜头移到别处,但混合的图片没有变化,就会出现下图所示的穿帮问题:

可以看到地上混合的柱子倒影不再与真实柱子吻合。反射捕获在很多游戏大作中都有使用,那为什么我们看不到这种诡异现象呢?这时因为同时还会混合其他反射处理方案(比如屏幕空间反射SSR),在某种程度上掩盖了它的瑕疵。

Reflection Capture不精确,但它的预计算的优点对性能是非常友好的,通常我们build light的时候,就会去更新捕获信息,也可以在Build这里单独进行更新。

如果打包游戏或者应用,它会将捕获纹理烘焙进游戏,这样实际跑的时候,在一定范围内(可在反射捕获Actor上配置半径)的任何像素,都会检查附近是否有反射捕获,如果有,它就向反射捕获Actor查询立方体贴图cubemap,将cubemap与物体本身贴图进行混合。

如果相近区域内有两个反射捕获Actor,如下图黄箭头标识:

那么重合的像素就会分别融合两张cubemap,但要注意的是,大量重叠的捕获范围会带来性能问题,因为要在同一个像素中计算多张cubemap融合的结果。

我们布置反射场景的基本思路,是放置一个大型的反射捕获Actor来大致覆盖整个空间,然后再把许多较小的反射捕获Actor放置在反射程度高或者需要精确反射的表面附近,尽量保证影响半径不重合,如下图所示:

当然也没有必要刻意去规避重合,只要重合数量不要超过8个都还是可以接受的。另外,可以通过设置贴图精度来改变反射图样的锐利/模糊程度。

天空光照能为整个游戏世界提供低成本的备用反射捕获,如下图所示:

游戏世界中任何附近没有球体或立文体反射捕获Actor的对象都会转而使用天空光照反射,这对于大型开放式户外环境很理想,因为我们不希望在场景中到处放置反射捕获Actor。

第二种:平面捕获(Planar Reflection)

这种在实际中用的比较少,因为它仅局限于小范围平面,也由于是实时计算,所以消耗要比反射捕获大,但优势是无论镜头如何移动,反射信息总是正确的,如下图所示:

第三种:屏幕空间反射(SSR)

这是UE4唯一默认生效的反射系统,它是实时计算的,因而位置上总是精确的,但生成的反射图样比较模糊,不如反射捕获渲染的清晰。性能消耗介于反射捕获与平面反射之间,SSR效果如下图所示(研究前要关闭捕获Actor的渲染,只开启SSR):

它的优点同时也是缺点在于:只计算屏幕空间的反射。因为计算范围受限,所以性能可以保障,但同时也由于只能采集到屏幕空间内的数据,所以只能绘制视口可见几何的反射,如下图所示:

我们知道柱子很长,在屏幕上方还有一截,但因为SSR只取了屏幕空间内的信息,所以产生的反射信息里面就没有屏幕以外的柱子了(红圈内理应有柱子倒影,但实际没有渲染)。

综上,三种方法各有优缺点,实际使用中是将这三种系统混合在一起。三种方法的使用优先级依次为SSR,平面反射,反射捕获。只有当硬件或者其他性能撑不住的时候,才会使用预计算的反射捕获,否则还是提供精确度相对较高的SSR和平面反射。

平面反射尽量不要使用,如果硬件不支持就要关掉SSR或者调整SSR的生成质量来平衡性能,方法是在控制台中键入r.SSR.Quality + 数字,默认质量是3,数字越大,SSR的渲染效果就越好,但相应性能就会越差。

可以在RenderDoc里面截帧分析反射信息,下图所示是屏幕空间反射SSR的渲染:

下图是SSR成像的结果:

每一个点都是投射的反射射线,因为射线密度不够,形成了较多的噪点,为了掩饰,所以SSR生成的反射图看上去是模糊的。

关于三种反射就介绍到这里,下一章介绍静态光照,详见:

Jerry:UE4渲染模块概述(五)---静态光照​zhuanlan.zhihu.com

ue4 改变枢轴位置_UE4渲染模块概述(四)---反射相关推荐

  1. ue4 改变枢轴位置_UE4实时渲染深入探究----学习总结【上篇】

    写在前边 周末学习了下UE4实时渲染的视频,看完后觉得收获颇多,为了以后自己复习方便,记录于此,如果能帮助到大家,则再好不过了.为了以后复习的准确性和深刻,在这里我力求写的尽可能的详细,同时尽可能的保 ...

  2. ue4 改变枢轴位置_UE4虚幻引擎学习云笔记(五)-静态网格体编辑器

    [五.静态网格体编辑器(Static Mesh Editor)] 19-09-26 静态网格体编辑器一般用以分配材质至静态网格体,每个LOD可以有不同材质. 静态网格体编辑器(Static Mesh ...

  3. ue4 改变枢轴位置_UE4-构建更好的静态网格体

    在本文中,我们会讨论包括系统单位.三角面数量.材质ID.枢轴点,我们会学习什么是光照贴图,然后介绍如何创建光照贴图.我们将学习碰撞网格体的创建和使用,细节层级或 LOD,最后介绍如何限制过度绘制. 1 ...

  4. ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)

    不说废话,先上个演示图 最终成果(脚印,雪地可慢慢恢复,地形可控制) 主要原理(白话文): 假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下 把脚印稍作 ...

  5. ue4 改变枢轴位置_System Era Softworks如何利用UE4创作Astroneer的精彩宇宙

    太空沙盒游戏<Astroneer>是一款开发多年的高人气独立作品.这款游戏首次公布于2015年10月,并在次年发行了抢先体验版.凭借System Era Softworks在这个项目中注入 ...

  6. ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(二)

    上一篇: [UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)​zhuanlan.zhihu.com 10.新建一个MaterialParameterCollection(材质参 ...

  7. ue4 改变枢轴位置_【UE4地形】轻松实现UE4自动地貌和自动植被分布

    今天是2020年11月09日  星期一 正文共:2624字 48图  预计阅读时间7分 首先介绍下我们制作自动地貌所需要的节点顺序不分先后 Break MaterialAttributes(中断材质属 ...

  8. ue4 改变枢轴位置_[UE4]偏门实用技巧合集

    前言: 不论是玩游戏,还是玩软件,我对操作和技巧都有着痴迷的追求.而且是个快捷键狂魔. 从这个工具就能看出来,我对快捷键的执着,对工作效率极致提升的吹毛求疵. 戴巍:[SD Plugin] 快捷键创建 ...

  9. ue4 改变枢轴位置_houdini+ue4道路(2):思路

    最近在搞道路生成,终于完成了一版demo,主参考了一些3A大厂的分享,自己补全了一些细节. 由于本人贴图制作水平所限,效果还远没有达到最优. 后面计划做个分享,先打个草稿. 一,背景 道路生成,目前最 ...

最新文章

  1. 2022-2028年中国煤化工行业市场前景分析预测报告
  2. spark 算子例子_10年大数据架构师,用一文带你玩转Spark计算框架,你能读懂吗?...
  3. linux根文件系统配置,嵌入式Linux的Cramfs根文件系统配置的解决方案
  4. Java网页小程序——Java Applet
  5. 企业级应用框架(五)IOC容器在框架中的应用
  6. Android主题换肤实现
  7. python 3.8.0安卓_Python for Mac v3.8.0 官方最新版
  8. Tomcat系列(6)——Tomcat处理一个HTTP请求的过程
  9. 可视化——matploblib 解决中文显示的问题
  10. jsp 页面刷新,EasyUI刷新、加载
  11. postgresql 数据库的备份和还原
  12. c语言如何写出高清的录屏软件,有了这几款电脑录屏软件, 一键高清录制不再是梦...
  13. 图像分割——meanshift算法(C++GDAL库)
  14. 6种php加密解密方法
  15. 子母钟运用在什么领域,设备如何调试,天穹告诉你子母钟系统授时的意义
  16. 树莓派3b+安装home assistant
  17. /usr/bin/xauth: file /home/wj/.Xauthority does not exist
  18. MySQL5.5安装及其配置
  19. 美图秀秀开发插件生成的图片都有哪些格式?
  20. 互联网科普贴-阿里巴巴国际站是什么

热门文章

  1. ipad怎么和mac分屏_ipad学习方法分享[1]
  2. c# 两个list比较_C#刷遍Leetcode面试题系列连载(1) 入门与工具简介(VS Code amp; VS)...
  3. mysql查询嵌套where_MySQL-10(where /from 嵌套查询)
  4. addonsmaker怎么制作_addonsmaker
  5. MySQL基础之数据类型介绍
  6. Python中shuffle() 函数的作用及用法
  7. Python基础教程:列表、字典、集合推导式
  8. Python中sorted函数的用法
  9. Python中的itertools.product
  10. python中字典的几种定义方式