渲染线程开始-大象无形11.1,

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

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

跟代码

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

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

1.1,创建渲染线程类实例

1.2,创建渲染线程

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

1.4,注册渲染线程

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

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

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

完整的调用堆栈在下图

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

3,渲染架构

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值