Sodium Core Shader Support
Modby LinusDev
Enables resourcepacks to be able to replace sodium's shaders, similar to resourcepacks being able to replace vanilla's core shaders.
Type
Mod
CurseForge Downloads
496,531
CurseForge ID
956376
Modrinth Downloads
954,883
Modrinth ID
G8yJPRdl
Last Updated
Sep 5, 2026
Description
If you are using a supported resourcepack you can simply activate it like any other resourcepack. ### Resourcepack incompatible Sodium may display the message `The following resource packs are incompatible with Sodium` in the top right corner after reloading resources and listing your active core shaders. This message will always appear, even if the resourcepack supports sodium core shaders and can be ignored. ## List of Resourcepacks This is a small list of resourcepacks that work on sodium. If you have created a resourcepack yourself feel free to [open an issue on my github](https://github.com/lni-dev/SodiumCoreShaderSupport/issues) to add it to this list! - [Energy Shaders \[Java\]](https://modrinth.com/shader/energy-shaders-java) - [Night Vision Shaders \[Java\]](https://modrinth.com/shader/night-vision-shaders) - [Re-Shaded](https://modrinth.com/resourcepack/re-shaded) (since re-shaded version 1.3) ## Documentation for Shader Developers It is important to understand that your vanilla shaders cannot just be copied to sodium shaders. Sodium has their own shaders for blocks and clouds: ``` - assets/sodium/shaders/ | - clouds.fsh | - clouds.vsh | - blocks/ | - block_layer_opaque.fsh | - block_layer_opaque.vsh | - include/ | - fog.glsl | - chunk_material.glsl | - chunk_matrices.glsl | - chunk_vertex.glsl ``` Unless you want to change sodium clouds the `block_layer_opaque` are usually the most important ones. You should not have to touch `chunk_material.glsl`, `chunk_matrices.glsl` and `chunk_vertex.glsl` unless you know what you are doing. ### Retrieving sodium shaders source code To retrieve the sodium shader source code for a specific sodium version, download the `.jar` file of that version and extract it like a `.zip` archive. Inside the extracted archive you will find a `assets` folder containing the directory structure mentioned above. ### block_layer_opaque The `block_layer_opaque` is used for all blocks and block entities. The vanilla minecraft equivalent is `terrain.fsh` and `terrain.vsh` (In older versions of minecraft the equivalent is `rendertype_solid`, `rendertype_cutout`, `rendertype_cutout_mipped`, ...). Additionally, sodium core shader support adds a few defines in the sodium shaders `block_layer_opaque.fsh` and `block_layer_opaque.vsh` for some terrain-types: - `RENDER_PASS_SOLID`: Solid Blocks - `RENDER_PASS_CUTOUT`: Blocks like leaves, grass, glass, ... - `RENDER_PASS_TRANSLUCENT`: Blocks with actual transparency, e.g. water, honey, slime, ... Furthermore, the define `SODIUM_CORE_SHADER_SUPPORT` will be present in all shaders (mc >= 1.21.2 and version >= 1.3.8). These defines can be used like this: ```glsl #ifdef RENDER_PASS_SOLID // special shading for solid stuff #endif ``` #### GameTime Uniform As of Sodium Core Shader Support version 1.4.0 the `u_GameTime` uniform will be present in `block_layer_opaque.fsh` and `block_layer_opaque.vsh`. It can be used just like the vanilla GameTime uniform. Add it to your shaders using: ```glsl uniform float u_GameTime; ``` #### SunAngle Uniform As of Sodium Core Shader Support version 1.5.0 the `u_SunAngle` uniform will be present in `block_layer_opaque.fsh` and `block_layer_opaque.vsh` as well. It returns the sun angle from environmental attributes in radians. Add it to your shaders using: ```glsl uniform float u_SunAngle; ``` ### How to specify which sodium versions are supported The sodium devs will change their internal shaders and shader related code without further notice. That's why it is important that you specify with which versions of sodium and minecraft your pack is compatible. This can be done in a special `versions.json` file. It should be located in your resourcepack in a new directory `assets/sodiumcoreshadersupport` with the file name `versions.json` inside. The contents of the file could look like this: ```json { "supported-versions": { "1.21": [ "0.5.11+mc1.21" ], "1.21.1": [ "0.5.11+mc1.21" ] } } ``` In the above example the resourcepack states, that it is compatible with sodium `0.5.11` on minecraft `1.21` and `1.21.1`. An abstract description is below:
More specifically, `versions.json` must contain a question object with the key `supported-versions`. The value of `supported-versions` must be a map, which maps different minecraft versions to an array of allowed sodium versions. The SodiumCoreShaderSupport mod will check if the installed sodium version is contained in the array of the installed minecraft version.
- If the minecraft and/or sodium version is not inside `supported-versions`, the pack can be activated with a warning message. - If the user does not have sodium installed the pack can be activated. - If no versions.json is present, the pack can be activated with a warning message. - If the versions.json is malformed, the pack can be activated with a warning message. ### Imports Sodium Shaders must be in `assets/sodium/shaders` directory. But you can `#import` files from `assets/minecraft/shaders` using the `#import` directive. The following code will include the file `assets/minecraft/shaders/include/test.glsl`: ```glsl #import ``` With this trick you can create custom glsl files, which you can `#import` in your shaders (in both core shaders and sodium shaders). These files, should contain your main shader "logic". An example shaderpack, which works with this trick on both vanilla and sodium, can be found [here](https://github.com/lni-dev/MinecraftShaders/tree/master/EnergyShaders%20%5BJava%5D/current/Energy%20Shaders%20%5BJava%5D/assets). ### Disable Culling Since version 1.5.0, sodium's frustum and backface culling can be disabled via `versions.json`. This is useful for any core shader that requires offscreen geometry, or that aims to transform the view in `block.vsh` to show geometry not typically on screen (e.g. shadows, alternate player POVs, etc.) ```json { "supported-versions": { "1.21.11": ["0.8.7+mc1.21.11"] }, "disable-frustum-culling": true, "disable-backface-culling": true } ``` ## Credits Thanks to [MR-CHOO](https://github.com/MR-CHOO) for adding the [SunAngle Uniform](#sunangle-uniform) and the option [to disable frustum and backface culling](#disable-culling)!
Compatibility
Mod Loaders
Game Versions
Recommended Gear
AffiliateHardware and extras that pair well with this mod.
As an Amazon Associate I earn from qualifying purchases.
Similar Mods
OC XNet Driver
Allows OpenComputers to utilize XNet networks to transfer items, fluids and energy to connected blocks.
CreeperHost Presents Steve's Carts
Steve's Carts allows for the player to customize and design minecarts that can be used for automation.
Cull Less Leaves
Cull leaves while looking hot!
Minecraft Comes Alive (MCA)
No more boring Squidward villagers! Interact with human villagers and raise a family!
Dynamic Trees - Defiled Lands
Compatibility Mod between Dynamic trees and Defiled Lands
Icterine
Advancements optimization (specifically, InventoryChangeTrigger)
Included in Modpacks (67)
Show fewer
OptiFine for Fabric
ALAND's Immersive Hypixel SkyBlock
Void's essentially optimized pack
Physics Modpack
Plutonium
Azure Visuals
FemCraft Client
Turtle's Auxiliar Modpack
LinusMinus
QoL Client
Counter Mine 2 - Optional Mod Pack
Kuri's FreshVanilla
SimplyVanilla
editon's Modpack
Project MINT Modpack
G-Craft
Actions & Visuals
Usefully Optimized
Bubble Cobble Redux
[FMCS-M] fps X media X crystal x survival Optimized MEDIUM
Create RPG+
Strawberry Crew [NeoForge]
[FMCS-L] fps X media X crystal x survival Optimized LITE
pseudofred's Vanilla+
Gold Not Old
Sengoku Chronicles
Ideal Vanilla
Main by Waldnetworks
[FMCS-H] fps X media X crystal x survival Optimized HIGH
Eshkere-modpack
Pvp Optimized Pack
Mutzman's Modpack
Mihuco's Modpack
visually perfected
Fabulous Vanilla
Nirvanium
Jordan's Modpack
Formium Optimized
Lemon pack
Trailer Vibes Lite
DiamondFire Modpack
Kinda Vanilla !!
oOZelephOo's Modpack
MustChill
Medieval Fantasy For A Reason
Wynncraft - Embers
Super0ptimizati0n