Skip to content

Iris ShaderPackScreen foreground UI does not render in-world when hud_batching is enabled with multiple HUD/GUI/Dimension mods #512

@reasure3

Description

@reasure3

Summary

When ImmediatelyFast has hud_batching enabled, the Iris Shader Pack Settings screen can become invisible when opened from inside a world.

After clicking the Shader Packs... button from the in-world video settings screen, the previous video settings UI disappears and the background blur is rendered. However, the Iris ShaderPackScreen foreground UI does not render. The shader pack list, buttons, title text, and other foreground UI elements are not visible.

The screen still accepts input. Pressing ESC returns to the previous menu, and clicking where shader pack entries would normally be can select a shader pack blindly.

If a shader pack is selected this way, Iris then starts applying/reloading the shader pipeline, which can cause a long freeze/hang. Because of this, the issue originally looked like the game was freezing immediately after pressing the Shader Packs button, but the primary issue appears to be that the ShaderPackScreen foreground UI is not rendered.

Setting ImmediatelyFast’s config option below to false prevents the issue:

"hud_batching": false

With

"hud_batching": true

the issue reproduces.

Environment

  • Minecraft: 1.21.1
  • Mod loader: NeoForge 21.1.228
  • ImmediatelyFast: 1.6.10+1.21.1
  • Iris: 1.8.12+mc1.21.1
  • Sodium: 0.6.13+mc1.21.1
  • OS: Windows 11 Home 25H2 (build 26200.8328)
  • CPU: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz(2.40 GHz)
  • GPU: NVIDIA GeForce MX450 (2 GB)

Relevant mod set used for reproduction

This is the smallest reproduction set I have identified so far, including libraries/dependencies. I have not exhaustively tested every possible subset or combination, so I cannot guarantee that this is mathematically minimal. However, in this reduced set, disabling any one of the listed mods prevents the issue from reproducing.

  • AppleSkin 3.0.9
  • Architectury API 13.0.8
  • Artifacts 13.2.1
  • Create 6.0.10
  • Create: Creating Space 1.7.17
  • Create Aeronautics 1.2.1
  • Create Big Cannons 5.11.3
  • Curios API 9.5.1+1.21.1
  • Deeper and Darker 1.4
  • Farmer’s Delight 1.2.11a
  • ImmediatelyFast 1.6.10+1.21.1
  • Immersive Aircraft 1.4.3+1.21.1
  • Iris 1.8.12+mc1.21.1
  • Moonlight Lib 1.21-2.29.33
  • Overflowing Bars 21.1.1
  • owo-lib 0.12.15.5-beta.1+1.21
  • Puzzles Lib 21.1.39
  • Relics 0.10.7.8
  • Ritchie’s Projectile Library 2.1.2
  • Sable 1.2.2
  • ShatterLib | OctoLib 0.6.1
  • Sodium 0.6.13+mc1.21.1
  • Supplementaries 1.21-3.5.34
  • The Aether 1.5.10
  • The Twilight Forest 4.8.3345
  • Tom’s Simple Storage Mod 2.3.2
  • Xaero’s Minimap 25.3.10
  • Xaero’s World Map 1.40.11

Steps to reproduce

  1. Install the mod set listed above.
  2. Make sure ImmediatelyFast has this config:
    "hud_batching": true
  3. Launch the game.
  4. Enter a singleplayer/multiplayer world.
  5. Press ESC and Open:
    Options... -> Video Settings... -> Shader Packs...
  6. Observe that the background blur renders, but the Iris ShaderPackScreen foreground UI does not render.

Expected behavior

The Iris Shader Pack Settings screen should render normally in-world.

I should be able to:

  • see the shader pack list,
  • select a shader pack,
  • disable shaders,
  • press Done, Apply, Cancel, or etc...
  • return to the previous menu normally.

Actual behavior

When I click the Shader Packs... button from the in-world video settings screen, the previous video settings UI disappears and the background blur is applied. However, the Iris ShaderPackScreen UI itself does not render.

No shader pack list, buttons, title text, or other foreground UI elements are visible. The screen only shows the blurred in-world background.

The screen still appears to accept input:

  • Pressing ESC returns to the previous menu.
  • Clicking where shader pack entries would normally be can select a shader pack blindly.
  • If a shader pack is selected this way, Iris applies/reloads the shader pipeline, which can then cause a long freeze/hang due to shader reload/compilation.

So this does not appear to be an immediate hard freeze. The ShaderPackScreen appears to open and process input, but its foreground UI is invisible/not rendered. The long freeze happens later if a shader pack is selected blindly and Iris begins shader reload/compilation.

Screenshots / visual evidence

Image

Before clicking Shader Packs. The in-world video settings screen renders normally.

Image

After clicking Shader Packs with ImmediatelyFast hud_batching=true. The previous video settings UI disappears and the background blur renders, but the Iris ShaderPackScreen foreground UI does not render.

Important isolation result

Changing only this ImmediatelyFast setting prevents the issue:

"hud_batching": false

With hud_batching = false, the Iris Shader Pack Settings screen renders normally in-world.

With hud_batching = true, the ShaderPackScreen foreground UI does not render.

Notes from isolation testing

This does not appear to be caused by Iris or Sodium alone.

Additional isolation findings:

  • The issue only happens when opening Iris Shader Pack Settings from inside a world.
  • The shader pack settings screen works normally from the main menu.
  • The issue does not appear to be caused by Iris/Sodium alone.
  • PuzzlesLib itself does not appear to be the cause.
  • Overflowing Bars is required in the current reduced reproduction set, but PuzzlesLib alone is not sufficient.
  • Xaero’s Minimap and Xaero’s World Map are both required in the current reduced reproduction set.
  • Tom’s Simple Storage is required in the current reduced reproduction set.
  • Setting ImmediatelyFast hud_batching=false is the cleanest workaround found so far.

Relevant log observations

The reduced reproduction log shows that ImmediatelyFast applies several HUD/render batching related mixins. In particular, it applies hud_batching.MixinGameRenderer to GameRenderer, a Xaero Minimap compatibility mixin hud_batching.compat.xaerominimap.MixinXaerosMinimap_ClientEvents, a framebuffer batching check mixin to RenderTarget, and a batching check mixin to BufferUploader.

The Xaero Minimap compatibility mixin injects forceDrawBatch, which seems especially relevant because both Xaero's Minimap and Xaero's World Map are required in the current reproduction set.

The logs also show Xaero's World Map detecting Xaero's Minimap and Iris, and Xaero's Minimap detecting World Map and Iris.

Several GUI/screen related mixins are also present. Relics injects into Screen.tick and Screen.render, OctoLib injects before Screen.render, and Create applies a Xaero-related Screen mixin. OctoLib also applies a GameRenderer post-effect mixin with render pre/post hooks.

This supports the idea that the issue is a HUD/GUI/render-state or batching interaction rather than the Iris ShaderPackScreen failing to open entirely. The background blur renders and input still works, but the ShaderPackScreen foreground widgets/list/text do not render.

The reduced log also shows Iris creating a world rendering pipeline for minecraft:overworld, but the primary reproduction issue is the invisible ShaderPackScreen foreground UI. The long freeze/hang appears to be secondary and only happens if a shader pack is selected blindly and Iris begins applying/reloading shaders.

latest.log

debug.log

Hypothesis

This looks like a foreground UI/render-layer or render-state issue, not a full screen-opening failure.

The background blur pass renders and input handling still works, but the ShaderPackScreen foreground widgets/list/text do not render.

The reduced logs show that ImmediatelyFast applies HUD batching to GameRenderer, a Xaero Minimap-specific batching compat mixin, and batching-related checks to RenderTarget and BufferUploader. The same setup also has OctoLib and Relics injecting into Screen rendering, and OctoLib has GameRenderer post-effect render hooks.

Since setting ImmediatelyFast hud_batching=false prevents the issue, the likely area is HUD batching / GUI render-state restoration when transitioning from the in-world video settings screen to the Iris ShaderPackScreen.

Workaround

Set this in the ImmediatelyFast config:

"hud_batching": false

After this change, the issue no longer reproduces in the same mod setup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions