1.UE4源码剖析——光照贴(LightMap) 之 由烘焙到渲染流程
UE4源码剖析——光照贴(LightMap) 之 由烘焙到渲染流程
在离线编辑器阶段,源码通过构建(Build)按钮启动光照烘焙流程,源码UE4引擎在构建场景光照、源码反射球信息、源码预计算静态网格可见性、源码构建导航网格、源码pid 源码构建HLOD、源码构建流式贴图等,源码仅关注光照相关只构建光照(Build Lighting Only)阶段,源码Lightmass系统负责计算光照,源码Swarm分布式工具加速并分担计算任务。源码
Swarm初始化并启动烘焙流程,源码Startup阶段计算光照构建的源码关卡与灯光信息,统计静态几何体数据并初始化Swarm,源码Swarm分为协调与代理程序,源码转卖商城源码负责数据导出与任务分配。AmortizedExport阶段进行分摊式数据导出,SwarmKickoff阶段Swarm全面启动,AsynchronousBuilding阶段消费者程序执行任务,完成光照信息计算。AutoApplyingImport阶段根据配置决定是否自动导入烘焙结果,WaitingForImport与ImportRequested阶段等待导入烘焙数据,主页简洁源码Import阶段完成数据导入,Finished阶段地图构建完成。
光照贴图合并大图过程,为每个静态几何体独立生成光照贴图后,UE4将多张贴图尽可能合并到一张大贴图中,以优化IO加载与渲染性能。合并算法简单,im源码对接通过排序、读取最大尺寸限制与重新摆放光照贴图完成。
贴图像素设置与Mipmap生成,合并后的光照贴图设置像素值,为每种类型的光照贴图创建,最终将数据以真实形式存储。贴图包含SkyOcclusionTexture、天龙3 源码AOMaterialMaskTexture、ShadowMapTexture与低分辨率系数贴图。
贴图渲染资源合并中,判断不同几何体使用的贴图集合是否一致,优化判断效率。创建FLightmapClusterResourceInput类代表贴图集合,并统计所有集合用于判断几何体是否使用相同贴图集合。
运行时光照贴图传递到Shader流程包括UE4几何体渲染架构窥探、光照信息存储、赋值LCI与生成渲染批次、绑定Shader。FLODInfo类存储光照信息,FMeshBatchElement中设置LCI字段,FBasePassMeshProcessor绑定贴图集合到Shader。在Shader代码中访问LightmapResourceCluster变量访问贴图集合中的光照贴图。
UE4通过Swarm分布式框架、Lightmass光照系统与优化的贴图合并与传递流程,实现了高效、实时的光照计算与渲染。
以上内容详细介绍了UE4引擎中光照贴图从烘焙到渲染的完整流程,包括分布式工具、数据合并、贴图存储与Shader访问,实现了高性能的光照计算与渲染。
2024-11-14 23:30
2024-11-14 22:48
2024-11-14 22:38
2024-11-14 22:31
2024-11-14 22:12
2024-11-14 21:49
2024-11-14 21:43
2024-11-14 21:38