Skip to content

RaphiMC/ImmediatelyFast

Repository files navigation

ImmediatelyFast


ImmediatelyFast is an open source Minecraft mod which improves the immediate mode rendering performance of the client.
It is designed to be lightweight and compatible with other mods.

Optimizations

ImmediatelyFast generally optimizes all immediate mode rendering by using a custom buffer implementation which batches draw calls and uploads data to the GPU in a more efficient way.
The following parts of the immediate mode rendering code are optimized:

  • Entities
  • Block entities
  • Particles
  • Text rendering
  • GUI/HUD
  • Immediate mode rendering of other mods

It also features targeted optimizations where vanilla rendering code is being changed in order to run faster.
The following parts of the rendering code are optimized with a more efficient implementation:

  • Map rendering
  • HUD rendering
  • Text rendering

Performance

Here are some performance comparisons of areas the mod optimizes particularly well:

If other mods are listed in the table this means that this mod also optimizes that part of the game.

Test Hardware: Ryzen 5 1600, 32GB DDR4, GTX 1060

FPS Numbers were taken from external tools (in this case MSI Afterburner) and averaged over a couple of seconds.
If you decide to test this yourself keep in mind that ImmediatelyFast can only improve FPS in a scenario where your CPU is the bottleneck (Most likely the case if your GPU isn't ancient or you use very heavy shaders). Slower CPUs will benefit more from this mod than really fast CPUs.

Entity Rendering

Generally FPS should be around 2x higher on busy servers. [Tested using IF 1.1.7 on 1.19.3]

Tested on a spigot server with 1000 cows in a 3x3 box on screen.

Other mods Without ImmediatelyFast With ImmediatelyFast Improvement
None 16 FPS 60 FPS 3.75x
Sodium 21 FPS 82 FPS 3.90x
Iris and Sodium 60 FPS 76 FPS 1.27x

Map Rendering

Generally FPS should be around 5x higher when there are many maps on screen. [Tested using IF 1.1.1 on 1.19.3]

Tested on a fabric server with the Image2Map mod and around 930 maps on screen.

Other mods Without ImmediatelyFast With ImmediatelyFast Improvement
None 50 FPS 310 FPS 6.20x
Sodium 47 FPS 320 FPS 6.81x

HUD Rendering

Generally FPS should be around 40% higher in almost all scenarios. [Tested using IF 1.1.7 on 1.19.3]

Tested on a spigot server with different HUD elements on screen (Scoreboard, Potion effect overlay, Bossbars, Filled Chat, Extra hearts, Full Hotbar).

Other mods Without ImmediatelyFast With ImmediatelyFast Improvement
None 250 FPS 380 FPS 1.52x
Sodium 335 FPS 630 FPS 1.88x
Exordium and Sodium 740 FPS 840 FPS 1.14x

Text Rendering

Generally FPS should be around 2x higher when there are many signs or holograms around you. [Tested using IF 1.1.7 on 1.19.3]

Tested on a spigot server with 200 signs (Filled with text) on screen.

Other mods Without ImmediatelyFast With ImmediatelyFast Improvement
None 70 FPS 125 FPS 1.79x
Sodium 110 FPS 300 FPS 2.73x

Block-Entity Rendering

Generally FPS should be around 20% higher when there are many block entities around you. [Tested using IF 1.1.7 on 1.19.3]

Tested on a spigot server with 400 chests on screen.

Other mods Without ImmediatelyFast With ImmediatelyFast Improvement
None 170 FPS 205 FPS 1.20x
Sodium 315 FPS 410 FPS 1.30x

Compatibility

ImmediatelyFast is structured to interfere with mods as little as possible. It should work fine with most if not all mods and modpacks.

Known incompatibilities:

  • OptiFabric / OptiFine
  • Most closed source "clients" like LunarClient and LabyMod

If you encounter any issues, please report them on the Issue Tracker.

Config

ImmediatelyFast has a config file which can be found in the config folder of your Minecraft instance. Most options should be left at their default values, but some may be tweaked to improve performance or compatibility.

  • font_atlas_resizing: Increases the sizes of the font atlas textures. This improves performance with high resolution or custom server fonts.
  • map_atlas_generation: Puts the map textures into a single texture instead of multiple textures. This improves performance when many maps are on screen.
  • hud_batching: Improves the performance of the HUD rendering by submitting less draw calls. If you experience issues with HUD elements, try disabling this optimization.
  • fast_text_lookup: Caches some data between rendering text characters. This slightly improves performance when rendering a lot of text.
  • fast_buffer_upload: Uploads data to the GPU in a more efficient way. This improves performance in general.
  • experimental_disable_error_checking: Disables OpenGL error checking. This may improve performance on certain systems, but can cause hard to debug issues if enabled.
  • experimental_disable_resource_pack_conflict_handling: Controls if ImmediatelyFast should scan resource packs for incompatible core shader modifications in oder to disable some conflicting optimizations. This can be disabled to force optimizations even if they may cause graphical issues with certain resource packs.
  • experimental_sign_text_buffering: Buffers text on signs instead of re-rendering it every frame. May cause issues with high resolution or custom fonts.
  • experimental_screen_batching: Improves the performance of some in-game screens rendering by submitting less draw calls.
  • experimental_universal_hud_batching: More aggressive HUD batching. More likely to cause issues with HUD elements.

Developer API

You can read the API docs here.

Partners

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler, and YourKit YouMonitor.

YourKit


Kinetic Hosting offers extremely affordable deals on servers with very good hardware! If you'd like to cash in on the good deals click here or use code RaphiMC at checkout for 25% off your first month!

Kinetic Hosting


Credits to sydist for making the logo!