我的专栏目录:
小IVan:专题概述及目录![图标](https://pic4.zhimg.com/v2-adfc32ab6d1929ce6ebb6863da9e0f0f_180x120.jpg)
简介:
Unreal engine的渲染模块是越来越复杂,最开始只有延迟管线,随后加入了mobile,现在又加了很多实时光线追踪的东西,各种DX12,VK新的RHI也纷纷加入。
虚幻4的4.22版本对渲染模块进行了较大重构,废弃了之前的DrawList&&Draw Policy,取而代之的是MeshDrawPipline。与之前的DrawPolicy相比,MeshDraw更为简洁,灵活。新旧Pipline对比图如下:
4.22
![v2-4741d01b86c2a0838f69f62994217103_b.jpg](https://pic4.zhimg.com/v2-4741d01b86c2a0838f69f62994217103_b.jpg)
<=4.22
![v2-6842757d6cdbbe664bf881c9cc7e3eb0_b.jpg](https://pic1.zhimg.com/v2-6842757d6cdbbe664bf881c9cc7e3eb0_b.jpg)
我之前有写老的drawingpolicy的文章:小IVan:虚幻4渲染编程(Shader篇)【第十卷:绘制策略】。如有错误还请巨佬们斧正。
因为涉及到的细枝末节的东西很多,所以这篇文章我会在一个月内持续更新修改。
首先先过一下渲染过程中主要的类和步骤。
【1】FPrimitiveSceneProxy
这个类的功能没有什么改变,依然在通过GetDynamicMeshElements等函数从每个primitivecomponent中收集渲染资源
![v2-080a2aeb3ed579f31529be4e4e34c893_b.jpg](https://pic4.zhimg.com/v2-080a2aeb3ed579f31529be4e4e34c893_b.jpg)
【2】InitViews
FPrimitiveComponent的GetDynamicElements这个收集操作通过渲染器的InitViews在可见性剔除之后发起
![v2-d6dabdcae9c1cf6622c7c99ba7db08ce_b.jpg](https://pic3.zhimg.com/v2-d6dabdcae9c1cf6622c7c99ba7db08ce_b.jpg)
![v2-189412e0445d583e8feead60ea730d3f_b.png](https://pic4.zhimg.com/v2-189412e0445d583e8feead60ea730d3f_b.png)
FMeshElementCollector会把场景里的渲染数据收集起来
<