Skip to content

Add a built-in bloom implementation to GT#4519

Open
screret wants to merge 89 commits intoGregTechCEu:1.20.1from
screret:sc/builtin-bloom
Open

Add a built-in bloom implementation to GT#4519
screret wants to merge 89 commits intoGregTechCEu:1.20.1from
screret:sc/builtin-bloom

Conversation

@screret
Copy link
Contributor

@screret screret commented Jan 29, 2026

What

Adds bloom to emissive GT blocks without depending on other mods.
Also adds the cable burning effect 1.12 has, as it was never ported to modern before now.

Implementation Details

I had to hook MC, forge and embeddium to capture emissive/glowing quads into a separate buffer that's used for filtering fragments for bloom in the shader pipeline.
I couldn't find a better way to do this than mixins, but if @embeddedt (or someone else) has suggestions, please do share them!

The system uses a (vanilla) post shader to draw the bloom. If Iris/Oculus shaders are active, I assume those will do the bloom themselves and chose not to try support them from GT's side.

IBloomEffect, GTParticle, GTOverheatParticle, etc. are mostly plain copies of the 1.12 code.

Outcome

bloom!!! it glowyy!!!! :3

How Was This Tested

2026-01-19_20 11 30 2026-01-19_20 11 38 2025-01-04_20 23 58

Additional Information

This PR depends on features added in #4491. Please merge it first.

In some cases, I noticed chunk model updates taking a much longer time than usual (e.g. blocks being invisible for a fraction of a second longer than normal). I don't see this as too big of an issue to block merging this PR, but if you disagree, do tell me.

I tweaked the formatting of arguments in RenderUtil & co. (generally, I grouped the lines into what they do), because spotless had split the lines in odd places and I thought that made the method arguments harder to figure out. I did not change parameter order.

Note that the mod compat mixin filter for embeddium has to be changed to sodium when porting to 1.21.

shaders/core/black_hole.fsh also existed in 1.12. I'd already finished fixing it up to work in 1.20 before I realised it's unused. I thought it was neat, so I kept it.

Potential Compatibility Issues

DrawUtil was renamed to RenderUtil because I think that's a better name. I don't think any dependents (except maybe CosmicCore) used it.
Some parameters in various rendering classes were changed around, fixing them shouldn't be too hard (like poseStack.last().pose() -> poseStack in the case of FluidBlockRenderer#drawPlane).

screret added 30 commits October 3, 2024 10:29
now to figure out some quirks like translucency sorting being broken
# Conflicts:
#	src/main/resources/gtceu.mixins.json
# Conflicts:
#	src/main/resources/gtceu.mixins.json
# Conflicts:
#	dependencies.gradle
#	src/generated/resources/assets/gtceu/lang/en_ud.json
#	src/generated/resources/assets/gtceu/lang/en_us.json
#	src/main/java/com/gregtechceu/gtceu/GTCEu.java
#	src/main/java/com/gregtechceu/gtceu/api/GTValues.java
#	src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java
#	src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java
#	src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java
#	src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java
#	src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java
#	src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java
#	src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java
#	src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png.mcmeta
#	src/main/resources/gtceu.mixins.json
screret added 26 commits July 26, 2025 00:44
# Conflicts:
#	src/main/java/com/gregtechceu/gtceu/api/GTValues.java
#	src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java
#	src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java
#	src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java
#	src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java
#	src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java
#	src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java
…s bloom texture be the original image (and thus making the entire world have bloom)
@screret screret requested a review from a team as a code owner January 29, 2026 20:35
@jurrejelle jurrejelle added type: feature New feature or request bundled for a 0.X.0 Update Release: API - X.0.0 Major Breaking Refactors that MUST be in a API-Breaking Release labels Feb 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.20.1 Release: API - X.0.0 Major Breaking Refactors that MUST be in a API-Breaking Release type: feature New feature or request bundled for a 0.X.0 Update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants