makamys / Neodymium

Reimplements chunk rendering using modern OpenGL features to improve performance (1.7.10)
Other
115 stars 10 forks source link

Neodymium

Neodymium is a mod that reimplements chunk rendering in Minecraft 1.7.10 using modern OpenGL. This should improve performance on most hardware.

As a side effect, it has also been reported to fix the graphical errors that occur when running Minecraft with an integrated Intel GPU. Installing CoreTweaks is recommended for a more comprehensive fix.

Benchmarks

Tests were made staying in one place without moving the camera, on Peaceful difficulty. The FPS was measured once the chunk update number had reached the single digits and the FPS had stabilized.

Mods GPU OS Resolution Baseline With Neodymium Change
OF + FC GTX 1050Ti Ubuntu 20 854x480 480 FPS 840 FPS +75%
OF + FC GTX 1050Ti Ubuntu 20 1920x1080 440 FPS 560 FPS +27%
OF + FC GTX 1050Ti Windows 10 1920x1080 230 FPS 270 FPS +17%
OF + FC Intel HD 630 Windows 10 1920x1080 90 FPS 130 FPS +44%
GTNH 2.1.2.3qf + OF + FC GTX 1050Ti Ubuntu 20 1920x1080 300 FPS 390 FPS +30%

Legend

Usage

Just drop it in your mods folder. You can confirm that the mod is working by pressing F3 and looking at the right side of the screen. The number of rendered meshes will be shown, along with the amount of used memory.

If an incompatibility is detected, "(!) Incompatibilities" will be shown in the overlay, or the mod may disable itself entirely. The cause of the incompatibility will be printed to the log. You can also view them using the /neodymium status command.

In the mod's config file you can find various options you can use to fine-tune the mod to suit your hardware. The config is reloaded when the chunks are reloaded (e.g. when you press F3+A), or immediately upon saving the config file if the hot swap feature is enabled.

Debug

There are some debug key combinations provided. You have to hold down the debug prefix key (F4 by default) while pressing them.

How it works

The mod injects callbacks that run when world renderers (16x16x16 sections of the world) change. Right after a world renderer has finished rendering, Neodymium captures the tessellator's state and converts the mesh to its own format. The vanilla chunk renderer is disabled, and a different implementation runs instead. The mod doesn't change how meshes are constructed, only the way they get drawn. It should work with any mod that uses the tessellator to draw blocks.

There are also some additional optimizations:

The mod increases memory usage, since the chunk meshes have to be stored somewhere. On Normal render distance in a vanilla world, it uses ~70-150 MB, both in RAM and VRAM.

Incompatibilities

About nomixin builds

The mod comes in two flavors:

Suggested mods

For more 1.7.10 performance mods, refer to this list.

License

This mod is licensed under version 3 of the GNU Lesser General Public License. See LICENSE for additional information.

Contributing

When running the mod in an IDE, add these program arguments:

--tweakClass org.spongepowered.asm.launch.MixinTweaker --mixin neodymium.mixin.json

Additionally, the following VM arguments may come in handy: