
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





