The addition of vertex and fragment shaders to resource packs in Java Edition 26.3 Snapshot 3 is an extremely exciting feature. However, shaders currently only react to client-side rendering information and cannot respond to gameplay state.
I suggest adding a controlled system for passing runtime values into resource pack shaders through data-driven uniforms.
The resource pack would still define all shader code and logic. The server would only provide numerical values that the shader can optionally read if the resource pack declares that it wants to use them.
For example, a resource pack could define a `boss_health` uniform, and the server could update it through an existing data-driven system like scoreboards or a dedicated shader data API.
Conceptually:
/scoreboard shaders set boss_health 75
Currently, resource pack shaders can create impressive visual effects, but they cannot meaningfully interact with the world or gameplay. Runtime uniforms would turn shaders from purely cosmetic post-processing into another part of Minecraft's data-driven creation system, enabling things like dynamic boss effects, magic effects, and more immersive adventure maps.
This would preserve the existing security model:
- Players choose whether to accept resource packs.
- Resource packs define the shader code.
- Servers provide only data, not executable code.
- The client remains responsible for rendering.
Please sign in to leave a comment.
0 Comments