个人博客完整原文:https://alvincr.com/2021/02/ue4-1-rendering/

评价渲染工具的好坏参考:渲染质量、渲染功能及性能。

1 整体流程

AlvinCR认为渲染并不是一个具体步骤,而是与其相关的多个流程。

与渲染有关的一切都是使用r.rendering函数。

渲染的准备工作:

可视性(包括遮蔽)——>渲染——>基础通道(属于渲染过程,基础通道材质包含:几何体、绘制和调用、预计算光照)——>GBuffer(是一条基础通道,需要GBuffer是因为基础通道采用延迟渲染器)——>动态光照和阴影——>反射——>后期处理——>可拓展性及性能

2 具体过程

2.1 可视性

在渲染的之前,需要使用CPU进行计算,然后将需要渲染的帧提供给GPU,因此CPU必须在渲染前一帧之前完成相关计算,因为使用CPU可以明确物体的存在方式、位置及是否需要渲染。

功能:

距离剔除。超出距离限制的物品将会禁用,默认开启

视锥剔除。用于识别镜头内外需要渲染的对象

预计算可视性。适用于移动设备、低端设备

可视化剔除。核心单元,上面三项都是为可视化剔除工作,能够实现的基础在于:每个网格体都能准确隐藏和包含它背后的对象,因此能够使大部分遮蔽准确地识别。

2.2 渲染

渲染包括:Z通道和基础通道。Z通道作用:渲染景深;基础通道作用:渲染几何体的所有部分,会在渲染时逐一处理每个绘制调用。因此渲染的重点在于基础通道。

基础通道最主要的实现在于:绘制调用、基础通道材质(包括光照贴图)、动态实例化。

GBuffer

GBuffer是基础通道的一部分,下面简称GB,GB能够将自己渲染成同一画面的不同版本,通过GB的渲染可以得到:世界法线(缓冲A)、高光度和粗糙度以及金属度(缓冲B)、底色及光照(缓冲C)、其它Buffer(缓冲D、E等等)

这些缓存是由各个图像保存后得到的,可以设置其他延迟渲染。中间显示的图片是由四周的各个缓存整合得到的最终效果图,因此可以对已渲染的版本进行其它渲染操作。

2.3 动态光照阴影

通过动态光照阴影组合可以实现渲染阴影的效果,由于室内和室外的阴影渲染很难采用同一种方案进行,因此需要根据情况来采用不同的解决方法

直接光照。间接光照、介于光照与阴影、光照和阴影

www.alvincr.com

2.3.1 影响光照的因素

直接影响

  • IES纹理用于得到更加逼真得光照效果,详情看附录
  • 光照函数。支持使用材质与光照混合,可以用于生成水火的效果,还能实现云在地上的阴影效果。

间接影响

  • 光照传播系统。过时程序,用于提供实时全局光照。
  • 光追GI,目前并不常用

2.3.2 影响阴影的因素

直接影响:

  • 法线动态阴影,默认使用缓存生成阴影缓存
  • 级联阴影贴图,是三种不同的阴影贴图采用级联方式进行合并,将阴影分成低、中、高三种质量,能够在不同距离进行显示,因此专用于室外环境,
  • 距离场阴影。由于阴影渲染必须考虑阴影的几何体贴图,因此会占用大量的资源,但是如果不考虑几何体本身,而是通过对阴影进行预测,那么渲染的速度会大幅提升。通过Mesh DistanceFiled函数可以视点与物体之间的距离,将网格体距离场信息存储在内存中,因此可以提升长时间运行的效率。虽然距离并不是很准确,但是用于远距离阴影足矣,这样就可以设置非常远的阴影了,不过不能用于骨骼网格体。
  • 光追阴影。既可以单独使用,也可以混合使用。
  • 嵌入式阴影。用于提升角色展示效果。
  • 各对象本身阴影。用于提升角色展示效果。
  • 接触阴影。用于产生细小的阴影。

间接影响:

  • 胶囊体阴影。属于大幅简化的阴影,适用于所有骨骼网格体,因此对于生成大量单位的阴影并且阴影要求不高的时候,具有很好的效果。
  • 距离场环境光遮蔽DFAO。适用于非常大并且非常重要的对象,对于精细的对象效果并不好,主要适用于天空光照等室外环境。它使用世界场景中的距离场网格体来给环境光遮蔽着色。
  • 光追AO。

2.4 反射

采用堆叠设置方式,从而最大限度减少开销最高的效果。

反射捕获-》平面反射-》

  • 反射捕获,性能开销最低,捕获的信息存储在硬盘中,因此可以在世界场景中放置大量的反射捕获。
  • 平面反射。精度偏低,性能开销较大,只适用于完全平整的表面,例如地板。墙壁、金属表面并不适合。
  • 屏幕空间反射。可以随时调整质量。
  • 光追反射。

2.5 其它设置

可以设置天空和大气、指数高度雾和大气雾。

雾:

  • 高度雾。用于设置远处和高处雾的淡出效果。
  • 大气雾。
  • 远距离雾。
  • 指数高度雾。可以用来处理体积雾,会读取光照贴图及其设置,用于渲染
  • 体积材质。

半透明:

  • 材质:设置混合模式和着色模型。
  • 半透明度:可以设置屏幕空间反射、光照模式、。其中光照模式主要使用:体积无方向、逐顶点体积无方向、表面向前着色(效果最好,开销最大)。

2.6 后期处理

  • 标准色调映射器。执行色调映射实现颜色校正、色调校正、对比度校正。
  • 泛光。包括:标准反光、卷积设置(游戏中默认不用,因为性能开销较大)
  • 屏幕空间AO,SSAO。
  • SSSSS,屏幕空间次表面散射。通常用于皮肤的屏幕空间特效,主要适用于人,树叶也可以。
  • SSGI,屏幕空间GI。在整个屏幕空间内实现近似全局光照的效果。
  • 景深。包括:高斯景深(用于游戏,效果较差,性能较好)、散射景深、圆形或过场动画景深。
  • 曝光度。
  • 可混合物。可以使用材质编辑器来进行后期处理,以此来实现各种特效效果。属于内置特效,因此包含在引擎之中,通过可混合物可以启用:粒子、晕映、镜头炫光、尘土遮罩、色差

2.7 性能

主要设置CVar

三:其它

  • 统计数据面板。可以合并网格体
  • 细节模式。
  • 远阴影。类似于远处消退的级联影影贴图。
  • 光照范围。可以设置最大绘制距离,还可以生成蓝图去检测距离。
  • 材质开销。
  • 半透明度。半透明材质的指数十分影响性能,因此在设置材质时应尽可能的关注。使用体积无方向进行测试的速度最快,但是显示的阴影十分模糊。
  • 烘焙光照。

UE4渲染的整体流程(可视性、GBuffer、反射、动态光照阴影、后期处理)相关推荐

  1. 【逆向】UE4 渲染流程分析

    UE4作为当今商业引擎界的大佬,渲染和图形质量一直是首屈一指的水准,但是相对于unity来说UE4基本上是一套完整方案提供,不通过源码修改对渲染进行定制的可能性比较小,而且同时UE4这方面的文档很少, ...

  2. ue4 改变枢轴位置_UE4渲染模块概述(四)---反射

    在前一文中介绍了像素着色器与material,大概知道了UE4材质的生产管线: Jerry:UE4渲染模块概述(三)---Pixel Shader & Material Rendering​z ...

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

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

  4. ue4渲染速度太慢_UE4 渲染性能设置

    LightingAllow Static Lighting : 是否开启静态光照, 开启后将生成 lightmap, shadow map之类的可在静态光照下使用的贴图,否则仅使用动态光照, 修改此项 ...

  5. 二、Netty服务端/客户端启动整体流程

    一.综述 Netty 的整体流程相对来说还是比较复杂的,初学者往往会被绕晕.所以这里总结了一下整体的流程,从而对 Netty 的整体服务流程有一个大致的了解.从功能上,流程可以分为服务启动.建立连接. ...

  6. 《图解UE4渲染体系》Part 0 引擎基础

    在介绍UE4渲染体系前,我们有必要来先看一下UE4是用什么样的方式来构建游戏场景数据的. 1 Object 在UE4中当我们说Object,通常是指代引擎代码中的UObject类,它是引擎里管理绝大部 ...

  7. 深入浅出Vue.js阅读——整体流程——实例方法与全局API的实现原理

    深入浅出Vue.js阅读--整体流程--实例方法与全局API的实现原理 1. 数据相关的实例方法 2. 事件相关的实例方法 1. vm.$on 2. vm.$off 3. vm.$once 4. vm ...

  8. 机器学习入门(14)— 神经网络学习整体流程、误差反向传播代码实现、误差反向传播梯度确认、误差反向传播使用示例

    1. 神经网络学习整体流程 神经网络学习的步骤如下所示. 前提 神经网络中有合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习.神经网络的学习分为下面 4 个步骤. 步骤1(mini-ba ...

  9. html页面渲染vue组件,Vue组件页面渲染的基本流程

    html: 组件页面渲染的基本流程 main.js: import Vue from "vue"; import Home from "./home.vue"; ...

最新文章

  1. (推荐)叮当——中文语音对话机器人
  2. 在linux中输入locate出现locate: can not stat ()的错误
  3. SQLite数据库Java驱动下载及连接示例(sqlite-jdbc-3.30.1.jar)
  4. 对Java单例模式 volatile关键字作用的理解
  5. go消息服务器吗,Go语言聊天服务器
  6. Acwing第 20 场周赛【未完结】
  7. OS- -文件系统(四)
  8. 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
  9. [bash] printf使用范例
  10. 将Win10包含中文的用户名改为英文的,解决Anaconda navigator无法运行jupyter的问题
  11. C++面试常见问题一
  12. JS:ES6-12 模块化
  13. 能够生成动态图片的R模块:rCharts
  14. 俄罗斯方块的那些事:1.概要
  15. 常用ajax调用方法,web前端之4种常用的Ajax请求方式
  16. 友善的小精灵 Casper
  17. 如何使用Dart的Stream(一)
  18. 左声道,右声道和立体声
  19. DDR3 SPEC
  20. Java开发必学:Java翻译器软件下载手机版

热门文章

  1. DIV+CSS的问题,DIV被挤到下面去了?如何解决?
  2. 单片机毕业设计 STM32自动泊车系统 - 智能小车 自动停车
  3. 深入理解C++11 读书笔记(三) 通用与专用
  4. python request timeout是什么意思_requesttimeout是什么意思
  5. leetcode 力扣每日一题系列详解——总目录
  6. vue中plain=true是什么意思
  7. SAP帐龄分析与计算
  8. 在Mac上安装Wine
  9. 资料(http://blog.csdn.net/bogues/archive/2005/11/22/534982.aspx)
  10. Java学习笔记day05