主要如下:
- 关于SM,不要在gamePlay逻辑中对其进行移动,尽量通过MaterialParamater传递变换偏移,一旦对SM更新了Component变换矩阵,引擎内部会将变换矩阵更新操作插入到RenderThread任务Queue里,最终在FScene::UpdateAllPrimitiveSceneInfos()中调用PrimitiveSceneInfo::UpdateStaticMeshes(),重新创建MeshDrawCommand进行Cache(好像不会重建);
- 球星地形技术:首先渲染单位cube,这个cube每个面不是简单的2个Triangle,而是nxn个quad,每个quad两个Triangle,然后在vs中对每个点归一化为单位向量,这样就可以将单位cube转为单位球体,然后结合clipmap,我们渲染时实际上是一个中心nxn网格,周围围一圈网格(每个块仍然是nxn,但是覆盖范围变大,相当于LOD),然后再在外围围一圈,实现clipmap地形LOD,再结合heightmap实现地形效果,人物本身走的时候不动的其实是地形本身,然后高度图数据是VT实时流送,通过网络方式,所以实现了自定义VT系统,物理方面通过人物和球心计算法线,可以调整物理引擎的重力方向;