Skip to content

World Border wont render with any shaders (Sodium + Iris) and Sable #1502

Description

@wjrowan

Description

World border disappears with Iris shaders when Sable is installed
Description

When using Sable together with Sodium and Iris on Minecraft 1.21.1 NeoForge, the vanilla world border becomes completely invisible whenever an Iris shader is enabled.

The issue occurs with multiple shader packs, so it does not appear to be specific to a particular shader pack.

Removing Sable immediately fixes the issue while leaving Sodium, Iris, and the shader enabled.

Environment
Minecraft: 1.21.1
Mod loader: NeoForge 21.1.248
Sable: 2.0.5 (originally reproduced on 2.0.3)
Sable Companion: 1.6.0
Sodium: 0.8.12+mc1.21.1
Iris: 1.8.14-beta.1+mc1.21.1
Veil: 4.1.4
Create: 6.0.10
Flywheel: 1.0.6
Ponder: 1.0.82+mc1.21.1
Java: 21.0.12
OS: Linux
GPU: NVIDIA GeForce RTX 5070 Ti
NVIDIA driver: 595.84
Launcher: PrismLauncher
Shader packs tested

The problem reproduces with at least:

Complementary Reimagined R5.8.1
Photon

Because multiple unrelated shader packs reproduce the problem, I believe this is an interaction between Sable and the Iris/Sodium rendering pipeline rather than a shader-pack-specific issue.

Steps to reproduce
Start Minecraft 1.21.1 on NeoForge.
Install Sodium 0.8.12.
Install Iris 1.8.14-beta.1.
Install Sable and its required/bundled dependencies.
Create or load a world.
Set the world border very close to the player, for example:
/worldborder set 5
Enable an Iris shader such as Complementary Reimagined.
Look at the world border.
Expected result

The vanilla world border should be rendered normally and should be clearly visible immediately in front of the player.

Actual result

The world border is completely invisible while the Iris shader is active.

Isolation testing

I performed several tests to isolate the cause.

Removing Sable

With the same Sodium + Iris + shader configuration:

Sable installed → world border invisible
Sable removed → world border immediately visible

This is the strongest reproduction I have found.

Different shader packs

I tested both:

Complementary Reimagined
Photon

Both reproduce the issue.

Updating Sable

The issue was originally reproduced on Sable 2.0.3.

Updating Sable to 2.0.5 made no difference.

Sable renderer configuration

The Sable configuration uses:

sub_level_renderer = "SODIUM_REACHAROUND"

I also attempted to change the renderer through the in-game configuration UI. The UI temporarily allowed selecting VANILLA, but the setting reverted to SODIUM_REACHAROUND, and the world-border problem remained regardless.

The TOML itself only reports:

#Allowed Values: SODIUM_REACHAROUND

so I don't believe this is a usable alternative renderer on this version.

Sable configuration options

I also investigated the sub-level rendering configuration, including:

sub_level_dynamic_shading = true
sub_level_water_occlusion = true
sub_level_skylight_shadows = false
sub_level_renderer = "SODIUM_REACHAROUND"

Changing the available rendering options did not resolve the world-border issue.

Iris downgrade test

I also tested Iris 1.8.12, but this is not a viable workaround with Sodium 0.8.12.

With:

Iris 1.8.12
Sodium 0.8.12

the game crashes during Iris pipeline initialization with:

java.lang.NoSuchMethodError:
'void net.caffeinemc.mods.sodium.client.gl.shader.GlShader.(
net.minecraft.resources.ResourceLocation,
java.lang.String
)'

The crash occurs in:

net.irisshaders.iris.pipeline.programs.SodiumPrograms.createGlShaders

Therefore I returned to Iris 1.8.14-beta.1.

Relevant rendering/mixin information

The crash report from the Iris downgrade also shows Sable modifying GameRenderer alongside Iris, Sodium, and Veil.

Notably:

sable.mixins.json:camera.new_camera_types.GameRendererMixin
sable.mixins.json:clip_overwrite.GameRendererMixin
sable.mixins.json:config.GameRendererAccessor
sable.mixins.json:entity.entities_turn_with_sub_levels.GameRendererMixin
sable.mixins.json:water_occlusion.GameRendererMixin

The same environment also contains Veil/Iris compatibility mixins.

I suspect the problem may involve Sable's rendering/camera/render-state modifications interfering with the vanilla world-border render when Iris replaces the normal rendering pipeline.

Additional information

The world border is not merely difficult to see due to distance or shader effects. I tested it with the border extremely close to the player using /worldborder set 5.

The border is visible with shaders disabled and also becomes visible immediately when Sable is removed.

F3 debug rendering was also tested as part of the investigation and works.

Game Log

https://mclo.gs/VuS1I0X

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions