UE4渲染引擎导读(序)

UE4渲染引擎导读(序)

https://zhuanlan.zhihu.com/p/72086470

 

首发于图形游戏和宅

UE4渲染引擎导读(序)

Jiff

Jiff

码农,造轮子爱好者

两年前第一次拿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介绍和数据组织方式

后处理

 

渲染模块简介

Jiff:UE4渲染引擎模块简介(1)

Jiff:UE4渲染引擎模块简介(2)

LightMass简介

Jiff:Lightmass分析之 经典Photon Mapping算法介绍

Jiff:Lightmass分析之 与Swarm交互

Jiff:LightMass源码分析之中间数据格式

Jiff:LightMass源码分析之光子追踪实现

Jiff:LightMass源码分析之光照评估

材质系统

Jiff:UE4材质系统源码分析之UMaterial和材质节点介绍

Jiff:UE4材质系统源码分析之材质编译成HLSL CODE

 

编辑于 2019-10-06

虚幻 4(游戏引擎)

虚幻引擎

文章被以下专栏收录

图形游戏和宅

 

图形游戏和宅

进入专栏

推荐阅读

UE4从入门到精通

UE4从入门到精通

fengliancanxue

你对虚幻4引擎可能有什么误解?

2017年开始,“吃鸡”游戏的火爆推动了游企对虚幻4引擎的热情,不少游企开始试水虚幻4。我发现其中存在一些误解,也许是这些误解,导致了遇到困难后信念的动摇。其中一个误解:虚幻4的主要…

SachowCC

UE4渲染引擎模块简介(1)

UE4官方文档中《Graphics Programming Overview》开篇即说:UE4的渲染代码太多故难以从宏观上快速预览它的全貌(There is a lot of rendering code in Unreal Engine 4 (UE4) so it is hard …

Jiff发表于图形游戏和...

UE4拓展函数库插件

自古往来在以往UE4项目中积累和开发的一套函数库,里面包含了各种增强的蓝图节点用来帮助开发更多复杂的gameplay逻辑或者减少gameplay逻辑的代码量or蓝图节点量,可以使用蓝图或者直接看插…

EricS...发表于Unrea...

11 条评论

写下你的评论...

 

  • 李笑爷

    李笑爷2019-07-03

    插个眼先

  • 杨轩

    杨轩2019-07-04

    支持!

  • 窝窝头

    窝窝头2019-07-05

    牛逼

  • 零点开始

    零点开始2019-07-23

    支持

  • 冰河

    冰河2019-07-25

    支持[赞]

  • 小圆脸宝宝

    小圆脸宝宝2019-12-27

    大神怎么不写了?大家都等着呢!村头厕所没纸了!

  • Jiff

    Jiff (作者) 2019-12-27

    [捂脸]最近比较忙,慢慢写……

小圆脸宝宝

小圆脸宝宝回复Jiff (作者) 2019-12-30

好吧,写的确实很好!

  • Edward

    Edward2019-12-30

    不方便为啥要用UE4呢,为什么不用其它的?

  • 小龙

    小龙06-09

    催更了, 催更了,等的花都谢了

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值