设置与性能
设置
在Forge版本的游戏中默认按下Alt+M,你就能打开MadParticle Designer GUI,找到设置界面。
以下提到的所有设置项,在必要的情况下,都可以在.minecraft/config/MadParticleConfig.json中手动更改。
通用
最大粒子数量
滑块的数值范围是8192~1000000。
在原版设定下,每种RenderType各自的粒子数量最大为16384,而我们通常只使用有限的一两种RenderType,在这种情况下使得世界内粒子最大数量相当于16384。MadParticle允许你自由调整此值。
MadParticle的最初设计应用是线上多人展会或类似场景,由于各个玩家硬件状况不同,在这种情况下:
- 如果粒子指定的渲染类型是
实例化,我们建议将场景粒子总数控制在100000以内; - 如果粒子指定的渲染类型是
半透明或不透明,我们建议将场景粒子总数控制在8000以内。
始终限制最大生成距离
当粒子生成时,其与摄像机的距离将有两道阈值:
- 一般最大生成距离:视距的一半,只有始终渲染为
true的粒子可以在这个距离外生成; - 强制最大生成距离:视距的两倍,即使是始终渲染为
true的粒子也不能在此距离外生成。将始终限制最大生成距离设置为否可以取消掉此限制。
辅助线程数
循环按钮的排列顺序为仅主线程(值为1)、6、4、8、12、2。默认值为4。如需要未提供的其他值,请直接修改配置文件。
指定有多少辅助线程将被用于辅助计算,通常推荐这个值略小于或等于你的CPU核心数量。
- 大于核心数时辅助线程之间会产生竞争,从而使得效率降低;
- 等于核心数时,
- 后台的其他程序可能会与Minecraft产生竞争,影响后台程序运行;
- Minecraft切换到主线程所花的时间可能会更久,使游戏帧数产生明显波动,故只推荐用在追求最高效率的固定场景;
上文提到的“CPU核心数量”不考虑超线程技术,仅指物理核心。
对于混合架构用户,目前MadParticle还做不到区分大小核并智能分配任务,您可能需要手动指定Minecraft仅在大核上运行。在这种情况下,你可以将辅助线程数指定等于您的大核(P-core)数量。
服务端解析/mp指令所使用的多线程不受此限制。
半透明处理方式
半透明面作为图形学经典问题,MadParticle允许你选择你想要的半透明处理方式。
- 深度测试:启用:原版方法。不同深度的重叠粒子只会有一个或几个被渲染,适用于不透明粒子占多数的场景。
- 深度测试:禁用:不同深度的重叠粒子被直接叠加在一起,而不考虑其具体的深度大小。适用于同种半透明粒子占多数的场景。
- 加权混合OIT:顺序无关半透明(Order Independent Transparency)的简单加权方式实现,通过特定公式由透明度和深度计算出权重再进行叠加,可以实现较为正确的半透明渲染。普遍适用于多种场景,但性能消耗比前两者稍大。
深度:想象从摄像机中向前射出一条线,这条线依次由近及远穿过了多个半透明面,这些面具有不同的“深度”。
附加
接管粒子渲染
循环按钮为不接管、仅原版、原版及其他Mod。默认为仅原版。
- 设为
仅原版时,MadParticle会把大部分原版粒子的渲染方式修改为实例化,从而极大地提升性能; - 设为
原版及其他Mod时,MadParticle会把所有渲染类型为半透明或不透明的粒子修改为实例化。这会使得一些具有特殊渲染的粒子不再遵循其自身的渲染逻辑,因此一般不建议使用。
接管粒子计算
循环按钮为不接管、仅原版、原版及其他Mod。默认为原版及其他Mod。
- 设为
不接管时,粒子计算(tick)将按原版逻辑在主线程中执行(包括MadParticle粒子); - 设为
仅原版时,全部原版(除非我找漏了)粒子和MadParticle粒子的计算将会并行化,从而提升性能。由于需要额外过滤其他Mod粒子,性能会略低于原版及其他Mod模式; - 设为
原版及其他Mod时,全部粒子计算将会并行化,按辅助线程数分摊任务。通常情况下不需要额外关心,如果有其他Mod粒子产生错误从而需要特别地将其调回主线程,你可以手动选择仅原版。
改进命令方块编辑界面
拉长命令方块的输入框,并在其下方增加一个直接跳转至Designer GUI的按钮。