Skip to main content

简介

收集这些数据的主要方法不是仅仅关注单个组件的性能,而是逐步添加更多组件,并从这些数据中推导出性能消耗的数学公式。例如:如果我们想知道在FX控制器上增加一个额外的动画层会增加多少帧时间,我们可以设置1层、8层、64层和256层,绘制图表,将数据拟合成一条线,并利用这条线的公式来计算增加一个额外层所需的帧时间。

我的目标是测试VRChat中所有可用组件的性能,提供一个大致的性能比较,以帮助社区选择更优化的实现方式。

在本文中,我将以毫秒为单位提供帧时间的结果。为了更好地理解这些数据,可以这样想:

如果你的目标是达到90 fps,那么你大约有11毫秒(即0.011秒)来渲染每一帧,这就是你的预算。部分时间会花在PhysBones上,部分时间花在Animators上,还有部分时间用于Materials等。因此,如果某个操作消耗了1毫秒,这大约占用了你“预算”的9.1%。

需要注意的是,这个帧时间是用于处理每个角色和整个世界的。如果单个角色上的某项操作占用了总预算的9.1%,这已经相当高了,可能需要优化。

要达到60 fps,你的帧时间预算约为16毫秒;要达到40 fps,预算则为25毫秒。

本文中的图表是在以下配置的计算机上得出的:

CPU: AMD Ryzen 7 5800X
内存: DDR4 2x16GB 3200 MHz CL18
GPU: NVIDIA GeForce RTX 4090

本文中使用的数据来源于 https://github.com/jellejurre/UnityBenchmark。