IrisShaders / Iris

A modern shaders mod for Minecraft compatible with existing OptiFine shader packs
https://irisshaders.dev
GNU Lesser General Public License v3.0
3.37k stars 642 forks source link

RFC: Shaderpack awareness and control over whether the vanilla glowing effect is used #128

Open coderbot16 opened 3 years ago

coderbot16 commented 3 years ago

With the changes in https://github.com/IrisShaders/Iris/commit/92a71b5a06c1db377c2be04aa231e126523fccaa, Iris now bypasses shaderpacks for rendering glowing effects. Overall this is a win since it's hard for shaderpacks to implement glowing effects in a nice way. However, some shaderpacks might want to use their own glowing effect. In addition, others may want to detect when the vanilla glowing effect is being used, so that they may disable their own glowing code for performance reasons.

For allowing shaderpacks to decide whether they want to override glowing rendering and be responsible for properly rendering it themselves, I propose adding the following option to shaders.properties:

# false by default
overrideVanillaGlowingEffect=false|true

In addition, I propose making the following define available to allow shaderpacks to detect when the vanilla glowing effect is currently active, and thus when the shaderpack is not responsible for handling the rendering of the glowing effect:

#define VANILLA_GLOWING_EFFECT

An absence of this define will be understood to mean that the shaderpack is responsible for properly rendering the glowing effect.

Note: The names here are not final and are subject to change, if you have better suggestions feel free to let them be known.

OverlordsIII commented 3 years ago

So Optifine prefixes it's own defines with MC_. This is probably done so optifine can easily ignore these when processing shader configuration options. Should VANILLA_GLOWING_EFFECT be handled the same way and prefixed with MC_?

coderbot16 commented 3 years ago

Ah, that is interesting. I don't know why it's done but it would probably be good to maintain consistency. In that case, we'd end up with this:

#define MC_VANILLA_GLOWING_EFFECT