promotional bannermobile promotional banner

Emberbium

Unlisted
A Reliable Embeddium Fork With Several Fixes And Improvements
affiliate banner image

Patreon GitHub Discord Forge

Emberbium is a fork of Embeddium with several fixes and improvements.

Compat

Emberbium registers under the mod id embeddium, deliberately and permanently. The entire addon ecosystem resolves that id.

Only the display name, the log output and the config screen say Emberbium.

What Is Different From Embeddium

This is not a fork where there's major changes. That'd break ton of stuff. That's why I played safe and targeted the safest fixable stuff. There's one experimental setting though.

Bug fixes

Joining servers without Embeddium installed.
To simply put, you can join servers that doesn't have embeddium now.

Chunk build resources stranded on failure.
A memory leak fix with chunk building.

GlFence.sync() blocked the wrong side.
It called glWaitSync, which stalls the GPU rather than the CPU.. This behaviour is also fixed.

Performance

Allocation cuts on the meshing path

Translucency optimization
The translucency analyzer copied the quad centers before deciding whether the section needed them, which meant a float[] allocated per translucent section per rebuild even for the flat-water case that sorts nothing. The coplanarity test now reads the list's backing array in place.

Block colour optimization
Every quad in a single renderModel() call shares the same world, position and block state, so every quad after the first was re-asking the colour provider for an answer it already had. Now memoised as two fields per block.

Occlusion queue growth
The chunk visibility traversal's queue grew by one element at a time when it overflowed instead of doubling, so filling it re-copied the array.. It doubles now.

Sprite lookup
The atlas sprite lookup used a mixin callback that allocated a wrapper object on every call. It now modifies the return value in place and allocates nothing.

Texture animation tracking
Emberbium marks a sprite as active whenever its UV coordinates are read, so that animated textures which are actually on screen keep animating. Iris/Oculus hooks that same call, so every UV read dragged the whole chain along. And UV reads happen millions of times a second. 

The flag is now only written when it isn't already set, which works out to once per animation tick per sprite instead of once per read.

Both are on by default and need no configuration. Neither changes what you see.

 

- Experimental Improvement -

Direct State Access buffer paths are in the Advanced -> Use Modern GL Paths and is off by default.

It is off because it has never been benchmarked, not because it is known to be slow. Shipping an experimental, possibly buggy change on by default is how you make bullshit!


- Credits -

JellySquid & the CaffeineMC team  for Sodium, the foundation of all of this
embeddedt  for creating and maintaining Embeddium
Asek3  for the original Forge port, Rubidium
NanoLive  for Magnesium, which Rubidium descends from
ACowAdonis  for Embeddium Au Naturel. It is a nice port but.. quite the overkill. A lot of shit is doing bad than good

The Emberbium Team

High Crafter tier frameprofile avatar
  • 124
    Followers
  • 57
    Projects
  • 7.0M
    Downloads

Solo Mod/Modpack Developer

More from MisanthropyView all