注: 近期几篇关于 三维渲染优化 的文章只专注于 Primitive。关于 Model, Cesium3DTileset 的内容另作安排。
上一篇介绍了 GPU三维渲染优化 - 批量渲染
本篇来说说 Primitive 的 批量渲染 (Batch Rendering)。
核心内容一部分在 BatchTable, 另一部分在 PrimitivePipeline.combineGeometry
由于BatchTable涉及到纹理相关内容, 准备另起一篇文章介绍。
PrimitivePipeline.combineGeometry(本函数属于同步加载部分, 异步加载的架构思想类似)里:
本篇先说PrimitivePipeline.combineGeometry部分(下面的可以粘贴复制定位到源代码里)
packages/engine/Source/Scene/PrimitivePipeline.js:326
直接定位到的是下面一行代码
geometries = geometryPipeline(parameters);
这个函数做了三件事:
-
将所有实例的几何数据(position, normal, st等)全都转换为世界坐标。
-
为每个实例的几何添加 Batch Id。
-
将所有实例