源码学习网 首页 编程学园 ue4教程 查看内容

UE4渲染引擎导读(序)

2019-7-16 22:04| 发布者: opiye| 查看: 90| 评论: 0

摘要: 两年前第一次拿UE4做商业项目时,原本是计划伴着工作,一个月内快速通读一遍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介绍和数据组织方式

后处理


渲染模块简介

Jiff:UE4渲染引擎模块简介(1)zhuanlan.zhihu.com图标Jiff:UE4渲染引擎模块简介(2)zhuanlan.zhihu.com图标

LightMass简介

Jiff:Lightmass分析之 经典Photon Mapping算法介绍zhuanlan.zhihu.com图标




来源网址:https://zhuanlan.zhihu.com/p/72086470

鲜花

握手

雷人

路过

鸡蛋