1、为什么UE5要自己写一套STL库
因为传统的STL库中,例如:vector,它一般采用的是双倍扩容法,加入1000个数据装满了,现在需要又加一个,那么就开辟了2000个数据的空间,那么当前就又999的数据空间暂时浪费掉了,这是实时渲染不希望看见的,这样会非常消耗性能,从而偏离实时的要求
2、通常引擎会写一个Tick,一个主要做逻辑,一个主要做渲染
3、引擎分为功能层、数据资源层以及平台层、核心层、工具层
功能层包括:动画功能、物理功能、渲染功能、HUD功能,Camera、输入、脚本、AI等基础功能
数据层包括:音频文件、视频文件、模型文件、XML文件等等
平台层包括:Linux、Windows、Android等等
核心层:就是核心的容器数据结构等等
工具层:外部导入的第三方库、插件等等
4、软件架构规则:数据放在一起、访问数据尽可能顺序的去访问,读写时一起去读写
5、DCC工具:外部工具:Houdini、3DMax、Maya等等
6、Component-based Tick
它是模块逐级处理,而不是处理一个物体的所有行为,然后再处理其它物体的所有行为
它是通过处理所谓物体的逻辑,然后处理所有物体的输入以此类推
7、Scene Management
和Ray Trace一样,分为Oct-Tree 、BSP,思想都是一样的,就是通过包围盒,快速检索
8、同一个木材质,会合成组,在Resource Pool中存储,以此来减少DrawCall,提高性能开销,模型同理,也是通过模型和实例(instance)去做Resource Pool中存储管理
9、Visibility Culling
和Ray Trace一样,分为Oct-Tree 、BSP,思想都是一样的,就是通过包围盒,快速检索
这个和UE5的世界分区有点像,UE5世界分区是先将世界分成多个正方形,然后根据调整的距离Distance进行剔除,超过这个距离的正方形的物体就进行剔除,看不见的也剔除