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
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