Developers Note: This version should work for 1.21 and 1.21.1. 1.21.2 snapshots contain alot of shader related changes, and will break shaders made for 1.21.1 and earlier. The next alpha will update to 1.21.2 and will change where shaders are registered, and will contain a change to the registry format.
Changelog
Features
- Added Message Overlay.
- Updated Events.
OnShaderDataReset
- Runnables registered here will run when the shader registry is reset.
- It will most commonly happen when reloading resources.
- Runnables registered here will run when the shader registry is reset.
OnShaderDataRegistered
- Runnables.ShaderData registered here will run when a shader is registered in the dataloader.
OnShaderDataRemoved
- Runnables.ShaderData registered here will run when a shader is removed from the dataloader.
- It will most commonly happen if a resource pack sets the shader's
enabled
variable to false, after the shader has already been registered.
- It will most commonly happen if a resource pack sets the shader's
- Runnables.ShaderData registered here will run when a shader is removed from the dataloader.
AfterShaderDataRegistered
- Runnables registered here will run after the shader dataloader has finished loading.
BeforeWorldRender
- Runnables registered here will run before the world is rendered.
AfterWorldBorder
- Runnables registered here will run after the world border is rendered.
AfterWorldRender
- Runnables registered here will run after the world is rendered.
AfterGameRender
- Runnables registered here will run after everything is rendered.
BeforeShaderRender
- Runnables registered here will run before a shader is rendered.
AfterShaderRender
- Runnables registered here will run after a shader is rendered.
ShaderUniform
- You can now modify/remove uniforms.
- If you want to update a uniform, make the callable call a variable.
- You should only modify the uniform if you are changing what the callable calls.
- You can now modify/remove uniforms.
ShaderRender
- Shaders registered here will be rendered by Luminance.
- When registering a shader, you will include a
new Couple<>(modId, shaders)
id, this allows mods to have multiple shaders rendered and allows you to modify them. - When registering a shader, you will also include a list of shaders.
new Couple<String, Shader>("id", new Shader(id, renderType))
- The shader is stored in a couple and consists of a String and the shader itself.
- The string can be anything, but there can only be one shader with that string.
- It can be used to locate a specific shader to either modify or remove.
- The shader consists of an Identifier and a Shader.RenderType.
- The Identifier should lead to your
/shaders/post/x.json
file. - The RenderType can be set to
Shader.RenderType.GAME
orShader.RenderType.WORLD
.GAME
renders the shader over everything including menus.- Shaders with
disable_game_rendertype
set to true will render inWORLD
instead.
- Shaders with
WORLD
renders only in-game behind your GUI.
- The Identifier should lead to your
- The string can be anything, but there can only be one shader with that string.
- The shader is stored in a couple and consists of a String and the shader itself.
- When registering a shader, you will include a
- Shaders registered here will be rendered by Luminance.
- Added Shader Namespace Identifier Fix.
- Added Shader Texture Namespace Identifier Fix.
- Added Shader Dataloader.
- Shaders registered here will be added to ShaderDataloader.registry.
- The layout is based on Perspective's shader dataloader, but shaders made with this layout will NOT get registered by Perspective (yet, it'll be updated to use this layout instead in a future update!)
- Dataloader Example
- This example will register the
perspective:silhouette
shader, will always render in the WORLD rendertype, and can be translated. - The custom field can contain objects that can be read by third party mods - e.g. perspective.
- This example will register the
{
"namespace": "perspective",
"name": "silhouette",
"enabled": true,
"translatable": true,
"disable_game_rendertype": true,
"custom": {
"perspective": {
"entity_links": [
"entity.minecraft.warden"
]
},
"souper_secret_settings": {
"disable_soup": false,
"entity_links": [
"entity.minecraft.warden"
]
}
}
}
- If you're updating a perspective shader, you will need to update the following:
shader
has been renamed toname
.disable_screen_mode
has been renamed todisable_game_rendertype
.entity_links
is now contained within theperspective
custom
object.
- Added ModMenu Icon Override.
- You can override the icon ModMenu displays for your mod by using the following code on mod initialization:
CompatHelper.addOverrideModMenuIcon(new Couple<>("modId", "type"), "assets/modId/alt_icon.png", () -> {return true;});
- You can override the icon ModMenu displays for your mod by using the following code on mod initialization:
- Added ModMenu Luminance Badge.
- You can add the Luminance ModMenu Badge to your mod by using the following code on mod initialization.
CompatHelperaddLuminanceModMenuBadge("modId");
- You can add the Luminance ModMenu Badge to your mod by using the following code on mod initialization.
Config Version 2
- Added
show_alpha_level_overlay
boolean config option.- When set to true, changing the alpha level using the keybinding will display the percentage on screen.
Development Build
Please help us improve by submitting bug reports if you encounter any issues.
Want to support my work?
If you'd like to donate, visit BuyMeACoffee.
Your support is appreciated, please be aware that donations are non-refundable.
This version only changes what is needed for Minecraft 1.21.
Changelog
- Ported
1.0.0-alpha.3+1.20.5/6
to Minecraft 1.21.
Alpha 4 Development
1.0.0-alpha.4
will add alot of shader rendering stuff, and will be released within the next few weeks.
Development Build
Please help us improve by submitting bug reports if you encounter any issues.
Want to support my work?
If you'd like to donate, visit BuyMeACoffee.
Your support is appreciated, please be aware that donations are non-refundable.
Luminance 1.0.0-alpha.3 for 1.20.5/6
Changelog
- You can now modify and remove dynamic shader uniforms callables, and BeforeRender runnables.
- Note, this version will break compatibility with mods that used BeforeRender runnables, as it now requires an id.
If you want to update a dynamic uniform, you don't need to modify it. When registering the uniform, just make the callable return a variable that you can update in your mod!
Development Build
Please help us improve by submitting bug reports if you encounter any issues.
Want to support my work?
If you'd like to donate, visit BuyMeACoffee.
Your support is appreciated, please be aware that donations are non-refundable.
Luminance 1.0.0-alpha.2 for 1.20.5-rc3
Small update to check if Iris is enabled.
Changelog
Features
- Added
CompatHelper.isIrisShadersEnabled()
boolean check.- Returns true if Iris is both installed and a shader pack is enabled.
Development Build
Please help us improve by submitting bug reports if you encounter any issues.
Want to support my work?
If you'd like to donate, visit BuyMeACoffee.
Your support is appreciated, please be aware that donations are non-refundable.
Luminance 1.0.0-alpha.1 for 1.20.5-rc2
Changelog
Config Version 1
- Added integer config option
alpha_level
.- This value is clamped between 0 and 100.
Features
- Added Dynamic Shader Uniforms.
- You can add custom dynamic shader uniforms using:
ShaderRenderEvents.ShaderUniform.registerFloat("modid", "example", Uniforms::getExample);
ShaderRenderEvents.ShaderUniform.registerFloats("modid", "example", Uniforms::getExample);
ShaderRenderEvents.ShaderUniform.registerVector3f("modid", "example", Uniforms::getExample);
- In this example, your dynamic uniform name will be
modid_example
.
- Luminance also comes with some already registered.
lu_viewDistance
lu_fov
lu_fps
lu_time
lu_eyePosition
lu_position
lu_pitch
lu_yaw
lu_currentHealth
lu_maxHealth
lu_currentAbsorption
lu_maxAbsorption
lu_currentHurtTime
lu_maxHurtTime
lu_currentAir
lu_maxAir
lu_isSprinting
lu_isSwimming
lu_isSneaking
lu_isCrawling
lu_isInvisible
lu_isWithered
lu_isPoisoned
lu_isBurning
lu_isOnGround
lu_isOnLadder
lu_isRiding
lu_hasPassengers
lu_biomeTemperature
lu_alpha
lu_perspective
lu_viewDistanceSmooth
lu_fovSmooth
lu_timeSmooth
lu_eyePositionSmooth
lu_positionSmooth
lu_pitchSmooth
lu_yawSmooth
lu_currentHealthSmooth
lu_maxHealthSmooth
lu_currentAbsorptionSmooth
lu_maxAbsorptionSmooth
lu_currentHurtTimeSmooth
lu_maxHurtTimeSmooth
lu_currentAirSmooth
lu_maxAirSmooth
lu_isSprintingSmooth
lu_isSwimmingSmooth
lu_isSneakingSmooth
lu_isCrawlingSmooth
lu_isInvisibleSmooth
lu_isWitheredSmooth
lu_isPoisonedSmooth
lu_isBurningSmooth
lu_isOnGroundSmooth
lu_isOnLadderSmooth
lu_isRidingSmooth
lu_hasPassengersSmooth
lu_biomeTemperatureSmooth
lu_alphaSmooth
- This list of included dynamic shader uniforms will change over time, more will be added in future updates.
- If you are a shader developer and need something custom, or just have a suggestion for a new dynamic shader uniform, add an issue to the Issues page with what you need, and it'll get added.
- You can add custom dynamic shader uniforms using:
Resource Packs
Perspective: Default
- Added Super Secret Settings Resource Pack.
- This resource pack contains shaders that have been used in previous minecraft versions.
- Requires Perspective or Souper Secret Settings.
Development Build
Please help us improve by submitting bug reports if you encounter any issues.
Want to support my work?
If you'd like to donate, visit BuyMeACoffee.
Your support is appreciated, please be aware that donations are non-refundable.