UE4渲染引擎导读(序)
https://zhuanlan.zhihu.com/p/72086470
首发于图形游戏和宅
UE4渲染引擎导读(序)
码农,造轮子爱好者
两年前第一次拿UE4做商业项目时,原本是计划伴着工作,一个月内快速通读一遍UE4的代码。在游戏行业混了很多年,开源源和商业引擎接触的不少,自研引擎也前前后后做了几个,自觉对游戏引擎还挺熟的,结果是发现大大高估了自己,也低估了UE的艰涩程度。
彼时,UE4的文档、社区、相关的书籍都少的可怜。网络上关于UE4的中文资料大多停留在基本使用方法上面,稍有点关于系统分析的,大多也是浅尝辄止----贴上大段大段原生的代码,实际上对于宏观上架构设计、引擎的运行流程, 到具体的算法实现缺乏深入的分析和对比。
对当时的两篇文章印象深刻,一篇是写在CSDN上关于分析CharacterMovement的,关于流程、关于算法、关于网络同步考量分析相当的深八。另一篇是鹅厂KM上写的稍深入的UE4的文章,还记得是上海天刀某个大佬写的关于UAsset格式、加载相关的剖析、跟踪及与天刀资源格式的对比。
UE4无论从图形引擎还是其它部分来说,都和之前接触过的引擎有较大的区别,UE4的设计和代码实现上也同时夹杂着面向过程、面向对象和面向数据各类设计混乱的影子和历史包袱。一个传统引擎的开发者或者拿到U3D源码一个星期,就能把引擎套路摸的七七八八,但如果拿到的是UE4,一个星期之后可能对某些细节实现有了基本的认知,但从宏观上来看这个引擎,大概还是一脸蒙B。
我写UE4渲染系统架构的目的比较单纯,就是把它当一个UE4渲染引擎的一个代码导读,中间也会有一些个人对引擎不成熟不靠谱的想法和理解。文章会基于引擎版本4.22.3来写,而UE4的渲染架构现在是一个高速调整期----目前UE4的Pass组织还是纯手工全手动硬编码的,估计用不了多久,FrameGraph就会真正的可以派上用场了,等UE4的FrameGraph实现完备,其对应的部分我再做一下梳理和调整。
UE4渲染系统的文档很值得看一看,虽然不成体系,但是他们写了一小部分核心功能点的设计思想和实现方式在里面,而且更新还挺及时的,关于4.21,4.22对渲染层的重构,多线程的处理方式,都已经有一些说明。对UE4渲染层有兴趣的朋友,推荐通读。
Real Shading in Unreal Engine 4是UE PBR模型解释最好的一篇,目前国内已有很多人很多次的翻译,不想直接看英文的话,中文也能找到。
UE4引擎的英文博客也值得一读,里面有关于一些Shader、IBL相关的介绍。
Unreal Engine 4 Rendering这个系列文章直到4.20都是非常好的一篇自己修改UE4渲染层的一个参考,4.21之后渲染层的重构步子较大,所以有一部分东西就不那么适用了
我打算写的关于UE4渲染引擎的文章,可能会涉及以下部分
Lightmass基础导读:包含它的架构、使用的主要算法和光照图生成整体流程
材质和Shader:包含材质基本的工作方式、材质节点编译、Shader生成,UE4的夸平台Shader方案的具体实现
UE4渲染系统导读:RHI,渲染路径、静动态物体渲染组织、PASS组织、渲染命令组织、渲染中的线程任务分配和调度、更新和裁切、动态灯光、阴影实现等
UE4中的Batch和Instance
UE4的各类可渲染Primitive介绍和数据组织方式
后处理
渲染模块简介
LightMass简介
Jiff:Lightmass分析之 经典Photon Mapping算法介绍
材质系统
Jiff:UE4材质系统源码分析之UMaterial和材质节点介绍
Jiff:UE4材质系统源码分析之材质编译成HLSL CODE
编辑于 2019-10-06
文章被以下专栏收录
推荐阅读
UE4从入门到精通
你对虚幻4引擎可能有什么误解?
2017年开始,“吃鸡”游戏的火爆推动了游企对虚幻4引擎的热情,不少游企开始试水虚幻4。我发现其中存在一些误解,也许是这些误解,导致了遇到困难后信念的动摇。其中一个误解:虚幻4的主要…
UE4渲染引擎模块简介(1)
UE4拓展函数库插件
自古往来在以往UE4项目中积累和开发的一套函数库,里面包含了各种增强的蓝图节点用来帮助开发更多复杂的gameplay逻辑或者减少gameplay逻辑的代码量or蓝图节点量,可以使用蓝图或者直接看插…
11 条评论
写下你的评论...
- 冬天默默2019-07-03
期待!
- 李笑爷2019-07-03
插个眼先
- 杨轩2019-07-04
支持!
- 窝窝头2019-07-05
牛逼
- 零点开始2019-07-23
支持
- 冰河2019-07-25
支持[赞]
- 小圆脸宝宝2019-12-27
大神怎么不写了?大家都等着呢!村头厕所没纸了!
- Jiff (作者) 2019-12-27
[捂脸]最近比较忙,慢慢写……
好吧,写的确实很好!