渲染系统简介-大象无形11.1,11.2笔记

正好周末,可以静下心来跟一遍,我觉得,大象无形是总结,但是还得跟踪代码,要不会出现每个字都认识,但连在一起就不知所云了。

渲染线程其实不陌生了,在DX12中已经单独成为一个线程了,并加入了命令队列,使cpu和GPU异步。我会以后把DX12龙书学习过程记录下来,强迫自己每天学些新东西。

 

 

跟代码

1,渲染线程启动:在FEngineLoop::PreInit(),故事将从这里开始,StartRenderingThread()全局函数

渲染系统简介-大象无形11.1,11.2笔记_第1张图片

跟着代码看,一切都那么顺其自然。

1.1,创建渲染线程类实例

渲染系统简介-大象无形11.1,11.2笔记_第2张图片

1.2,创建渲染线程

1.3,等待渲染线程准备好从自己的TaskGraph取出任务并执行

渲染系统简介-大象无形11.1,11.2笔记_第3张图片

1.4,注册渲染线程

1.5,创建渲染线程心跳更新线程

渲染系统简介-大象无形11.1,11.2笔记_第4张图片

以上就是渲染线程的启动。接下来就是

2,渲染线程的运行。在全局函数RenderingThreadMain(),从并行堆栈中看,其实已经开了个单独的渲染线程了。

渲染系统简介-大象无形11.1,11.2笔记_第5张图片

完整的调用堆栈在下图

渲染系统简介-大象无形11.1,11.2笔记_第6张图片

渲染系统简介-大象无形11.1,11.2笔记_第7张图片

接下来我认为就是如何传递数据从CPU到GPU,如何设置围栏,就像DX12龙书中第一个例子所讲,以后会建立个DX12龙书学习笔记专栏,仔细阐述下,属于先验知识。RHILIST其实就是命令列表。

3,渲染架构

延迟渲染针对不透明物体,相当于先叠加光照贴图、法线、像素深度、粗糙度等图片,再把叠加结果应用于不透明物体,好处是把物体个数与这些贴图的乘法,变成了加法。注意的是,透明物体不适用,它们用前向渲染。半透明是根据深度排序。也就是为什么先处理不透明物体,再处理半透明物体。

这样就有个弊端,用后处理的方式渲染不透明物体时,如何识别这些物体。一个方法是用图像处理的方式处理。比如OPENCV中的各种算法。

你可能感兴趣的:(UE4源码学习)