I am comparing the performance differences between Vulkan and OpenGL rendering modes in Thrive, along with testing out software rendering of the game with no GPU.
I am testing on the latest mesa llvmpipe on Ubuntu 22.04. Using AMD Ryzen 9 5950X 16-Core Processor.
For OpenGL mode when I set it to 50% resolution on 1080p screen and disabled AA and anisotropic, otherwise default settings. Gets 10fps in microscopic freebuild with good amount of other species in patch. But it actually feels a lot smoother than that, it must be a pretty consistent 10fps. I could play Thrive like this.
Disabling chromatic aberration jumps to 20fps, this becomes very playable. And the game still looks quite nice, all of the other graphical effects combine to preserve the aesthetics.
I have noticed that the damage effect tanks the fps when active, might look into that. I would disable on screen damage effect setting if I was playing this more.
For comparison, the Vulkan software renderer only gets around 6fps with those settings, 3-4 times slower than the opengl software renderer. Might be because Vulkan software rendering is still a lot less optimized than the opengl version, I think they have been focusing on feature support over performance right now. It does seem to work without any graphical glitches though, so I would expect this option to become more useful over time with further optimization.
Here are the results from running the benchmark on my machine with all combinations of Vulkan-OpenGL and GPU-Software Rendering, I also listed the commands I used to select these options:
Settings:
Completely default settings except for using windowed mode, on 1080p screen.
Vulkan GPU:
./Thrive
Benchmark results for MicrobeBenchmark v1
Stationary microbes score: 314.784
AI microbes score: 336.275
Spawns until no 60 FPS: 2493
Microbe stress average FPS: 149.115
Microbe stress min FPS: 58
Alive microbes: 268
Waiting for microbes to die: 427.126
Microbe deaths minimum FPS: 90
Remaining microbes: 39
Total test duration: 447.1s
CPU: AMD Ryzen 9 5950X 16-Core Processor (used tasks: 16, native: 8, sim threads: True)
GPU: AMD Radeon RX 6800
OS: Linux
Opengl 3.3 GPU:
./Thrive --rendering-driver opengl3
Benchmark results for MicrobeBenchmark v1
Stationary microbes score: 252.373
AI microbes score: 290.902
Spawns until no 60 FPS: 2493
Microbe stress average FPS: 127.085
Microbe stress min FPS: 58
Alive microbes: 292
Waiting for microbes to die: 324.211
Microbe deaths minimum FPS: 76
Remaining microbes: 40
Total test duration: 447.4s
CPU: AMD Ryzen 9 5950X 16-Core Processor (used tasks: 16, native: 8, sim threads: True)
GPU: AMD Radeon RX 6800 (navi21, LLVM 15.0.7, DRM 3.57, 6.8.0-57-generic)
OS: Linux
Vulkan CPU:
MESA_VK_DEVICE_SELECT=“10005:0” MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE=1 ./Thrive
Benchmark results for MicrobeBenchmark v1
Stationary microbes score: 3.51
AI microbes score: 3.961
Microbe stress average FPS: 10
Microbe stress min FPS: 10
Waiting for microbes to die: 10.08
Microbe deaths minimum FPS: 9
Total test duration: 177.9s
CPU: AMD Ryzen 9 5950X 16-Core Processor (used tasks: 16, native: 8, sim threads: True)
GPU: llvmpipe (LLVM 15.0.7, 256 bits)
OS: Linux
Opengl 3.3 CPU:
LIBGL_ALWAYS_SOFTWARE=1 ./Thrive --rendering-driver opengl3
Benchmark results for MicrobeBenchmark v1
Stationary microbes score: 6.196
AI microbes score: 6.706
Microbe stress average FPS: 16
Microbe stress min FPS: 16
Waiting for microbes to die: 16.44
Microbe deaths minimum FPS: 16
Total test duration: 115.7s
CPU: AMD Ryzen 9 5950X 16-Core Processor (used tasks: 16, native: 8, sim threads: True)
GPU: llvmpipe (LLVM 15.0.7, 256 bits)
OS: Linux