Minecraft Vulkan vs OpenGL Early Look
Minecraft's rendering engine has been a hot topic for many years, mainly due to how poorly it performs, which was often attributed to its use of the antiquated OpenGL rendering API.
Today we will look at the new Vulkan rendering backend introduced in the just released (at the time of writing) snapshot-1 for the upcoming 26.2 version. Does it fix all the performance issues?
Short answer - No, which was expected. Long answer - this entire article.
Methodology and Setup
I tested 3 different save files (all of which are fresh unfortunately, I don't have any recent developed save files), at 3 render distances each, on 3 different graphics cards and of course using both OpenGL and Vulkan.
I also tested a simple superflat world with 1000 Creepers to test entity rendering overhead.
The below spoiler contains all the details about the test passes, Minecraft settings, Java runtime and hardware configuration, if you are interested in that for reproducibility of the numbers, take a read.
The Boring but Necessary Details
Test Scenes
Simple Forrest Landscape
A basic forrest landscape to get a baseline performance measurement of typical terrain.
- Seed: 1938733804603736356
- Coordinates: [3, 59, -37]
Bamboo Jungle Landscape
A more complicated dense bamboo jungle landscape.
- Seed: 1938733804603736356
- Coordinates: [1357, 96, -724]
Caves
A cave system from near the surface all the way down to deepslate to measure performance in less geometry heavy areas, besides we spend a lot of time down here anyway.
- Seed: 1938733804603736356
- Coordinates: [-39, 43, -28]
Entity Overhead Test
A plain superflat world with a single layer of bedrock and 1000 Creepers trapped in a 16x16 perimeter to test rendering overhead of entities.
Render Distance
Tested were render distances of 8, 20 and 32 chunks.
8 and 32 chunks were chosen to show performance at the extremes - In my opinion a render distance less than 8 heavily compromises the gaming experience and basically any random potato of a computer can play at 8 nowadays.
20 was chosen as a sweet-spot that provides plenty of view distance without getting into the heavy diminishing returns of higher render distances - remember, the render distance is a radius in chunks centered on the player, so the amount of chunks to render grows exponentially with your selected render distance.
Testing Methodology
Each version was tested a total of 4 times - one primer run due to Minecraft using Java which is JIT compiled, long story short it means that it will heavily underperform for a little bit after launch as it is compiling itself, as such the first run is always discarded - the remaining 3 runs are averaged together to produce average framerate and 1% low framerate. The 1% low framerate is the worst 1% of frametimes encountered during the runs, in a sense it is a measure of how laggy the game is.
Entity Overhead Test
Lastly I took a 30 second capture of a superflat world with 1000 creepers trapped in a chunk perimeter. This is to show whether there is any meaningful difference to how entity rendering performs between the two APIs as entity rendering is one of the heaviest parts of Minecraft's game rendering.
GPUs tested and hardware setup
I decided to test one graphics card from each of the 3 major manufacturers - AMD, Intel and NVIDIA.
- AMD GPU: Sapphire Pulse Radeon RX 9070 XT
- Intel GPU: Intel Arc B580 Limited Edition
- NVIDIA GPU: Asus Astral GeForce RTX 5090 OC BTF
Test System Specifications
- AMD Ryzen 7 9800X3D
- Arctic Freezer 34
- Asus Strix B850-F Gaming WiFi
- 2x 64GB Crucial Pro DDR5-5600 CL46
- Samsung 9100 PRO 2TB NVMe SSD
- Seasonic Focus GX-1000W ATX3.1 PSU
Java Runtime
I tested with the official Epsilon JRE that is bundled with the official Minecraft launcher for this snapshot version.
I also used the same java arguments the official launcher uses: -Xms2G -Xmx4G -XX:+UseCompactObjectHeaders -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -XX:+UseZGC
Full Ingame Settings
Other than the ones listed below, everything was left at default settings of a fresh installation of 26.2-snapshot-1.
- Controls - Mouse Settings - Sensitivity: 69%
- Controls - Key Binds - Sprint: Q
- Controls - Key Binds - Pick Block: ;
- Controls - Key Binds - Drop Selected Item: Left Alt
- Music & Sounds - Master Volume: 25%
- Music & Sounds - Music: OFF
- Video Settings - Max Framerate: Unlimited
- Video Settings - VSync: OFF
- Video Settings - Reduce FPS when: Minimized
- Video Settings - Render Distance: 32 vs 20 vs 8 Chunks
- Video Settings - Graphics API: Prefer OpenGL vs Prefer Vulkan
OpenGL Results
Let's start with NVIDIA...
NVIDIA GeForce RTX 5090 - OpenGL
Minecraft 26.2-snapshot-1, OpenGL API
GeForce Game-Ready Driver 595.97
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
It is immediately clear there are some issues with frametime consistency as is apparent by the very poor 1% Low FPS performance, which will be a recurring thing with 26.2-snapshot-1 regardless of API. Overall the data is more or less as expected.
Next let's move onto AMD, they completely rewrote their OpenGL driver back in 2022, there were some ups and downs since then, but it seems those have been resolved.
AMD Radeon RX 9070 XT - OpenGL
Minecraft 26.2-snapshot-1, OpenGL API
AMD Software: Adrenalin Edition 26.3.1
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
The performance is very strong both in average and 1% low framerates, beating the NVIDIA GPU across the board by large margins, an awesome showing!
Lastly we have Intel, historically they've had rather poor OpenGL performance, which is still the case here compared to AMD and NVIDIA...
Intel Arc B580 - OpenGL
Minecraft 26.2-snapshot-1, OpenGL API
Intel Arc Graphics Driver 32.0.101.8626
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
But the numbers overall are quite playable, though it exhibits the same frametime consistency issues as the NVIDIA GPU.
Vulkan Results
Now onto Vulkan, and immediately the results are interesting.
NVIDIA GeForce RTX 5090 - Vulkan
Minecraft 26.2-snapshot-1, Vulkan API
GeForce Game-Ready Driver 595.97
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
Switching the rendering backend to Vulkan improves performance on the RTX 5090 by as much as 31% in these tests, an impressive gain if we assume the bulk of the render engine actually stayed the same.
But then we take a look at AMD and Intel, the numbers are not looking very good.
AMD Radeon RX 9070 XT - Vulkan
Minecraft 26.2-snapshot-1, Vulkan API
AMD Software: Adrenalin Edition 26.3.1
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
Across the board the numbers are much lower than with OpenGL, in some cases even half the performance.
On the Intel side it isn't as bad but their starting point was also not as high as AMD's.
Intel Arc B580 - Vulkan
Minecraft 26.2-snapshot-1, Vulkan API
Intel Arc Graphics Driver 32.0.101.8626
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| Basic Forrest Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Bamboo Jungle Terrain | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Caves | ||
| 8 Chunks | ||
| 20 Chunks | ||
| 32 Chunks | ||
| Minecraft benchmarks by https://nemez.net | ||
Entity Rendering Overhead
Entity rendering - that is drawing mobs, chests, and other things that aren't basic blocks - is a rather expensive operation as they don't follow any of the rules normal blocks do, thus a lot of the rendering optimizations are not possible.
I stuffed 1000 Creepers into a 16x16 block area on a superflat world to test whether the switch to Vulkan does anything to entity rendering performance.
Entity Rendering Overhead
Minecraft 26.2-snapshot-1, Superflat world with 1000 Creepers in a 16x16 area
GeForce Game-Ready Driver 595.97
AMD Software: Adrenalin Edition 26.3.1
Intel Arc Graphics Driver 32.0.101.8626
CPU: AMD Ryzen 7 9800X3D
| 1% Low FPS | Average FPS | |
|---|---|---|
| OpenGL | ||
| GeForce RTX 5090 | ||
| Radeon RX 9070 XT | ||
| Arc B580 | ||
| Vulkan | ||
| GeForce RTX 5090 | ||
| Radeon RX 9070 XT | ||
| Arc B580 | ||
| Minecraft benchmarks by https://nemez.net | ||
In general the results are rather similar between OpenGL and Vulkan, suggesting most of the overhead is outside of the API logic. Nevertheless there was a notable gain for Intel and a lesser gain for NVIDIA, with AMD staying the same.
API Comparison Results
Summing up the performance metrics across the Forrest, Jungle and Caves tests together into a neat percentage-difference table yields us the following:
| Vulkan gain/loss vs OpenGL | NVIDIA | AMD | Intel |
|---|---|---|---|
| 8 Chunks | +31% | -39% | -32% |
| 20 Chunks | +30% | -53% | -46% |
| 32 Chunks | +21% | -58% | -48% |
| Entity Rendering | +14% | -1% | +36% |
When rendering normal worlds, NVIDIA enjoys a 21-31% performance gain while both AMD and Intel fall off sharply by as much as 58%, that means in some cases you may get less than half of OpenGL performance! This was to me quite an unexpected result but it was confirmed by other people too, the Vulkan implementation as it is currently does not play nicely with all vendors.
When it comes to entity rendering, the numbers are a lot more sane, with the main notable change being Intel's 36% performance gain, but they were quite far behind both AMD and NVIDIA to begin with.
Huge render engine overhaul?
I noticed, alongside a few others, that the framerates in 26.2-snapshot-1 are in general much higher than prior versions of Minecraft, whether using OpenGL or Vulkan. This to me suggests there
is actually a much bigger rendering engine overhaul going on in the background, likely to accomodate the switch to Vulkan as it is a very different API to OpenGL, but a lot of those changes are also benefiting
the OpenGL backend.
This means that a lot of people checking out the snapshot will likely mistakenly attribute the gigantic performance gains to Vulkan, when in reality OpenGL also performs much better. Turns out a good rendering engine is more important than the API it is using, which is why I opened this review with "No, which was expected".
Vulkan is without a doubt the path forward, but Vulkan alone will not save a poorly implemented rendering engine, though I suppose you could argue Vulkan forces an inherently more efficient way to design the rendering engine, which is likely what is at play here.
Conclusion
The conclusion for now is simple, if you intend to play the snapshot or future versions and you have an NVIDIA graphics card, use Vulkan. But if you are using AMD or Intel graphics cards, it is probably a good idea to switch the rendering API back to OpenGL in the settings.
As for the Minecraft developers, I'm sure they are aware of this, for a first public build of the overhauled rendering engine it performs well, by which I mean I did not encounter any weird bugs that weren't already known or reported - first you need to get it stable before you can start tuning performance.
With that said it is also quite an uphill battle against years of driver-side optimizations for OpenGL and Minecraft specifically, so it will also require involvement on the driver side from the graphics hardware vendors to make the new Vulkan backend a universal performance gain across all hardware.