shaders: extract tint to include

Some shaders don't need tinting, that fixes them (was 0,0,0,0 color before, thus breaking it)
This commit is contained in:
Moritz Zwerger 2023-12-10 01:45:17 +01:00
parent d83dac4f93
commit f763d6284d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
28 changed files with 74 additions and 19 deletions

View File

@ -18,6 +18,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -25,4 +26,5 @@ out vec4 foutColor;
void main() {
applyTexel();
applyTint();
}

View File

@ -22,6 +22,7 @@ out vec3 finFragmentPosition;
uniform mat4 uViewProjectionMatrix;
#include "minosoft:tint"
#include "minosoft:color"
#include "minosoft:light"
#include "minosoft:animation"

View File

@ -18,6 +18,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -25,4 +26,5 @@ out vec4 foutColor;
void main() {
applyTexel();
applyTint();
}

View File

@ -25,6 +25,7 @@ uniform uint uTintColor;
out vec3 finFragmentPosition;
#include "minosoft:tint"
#include "minosoft:animation"
#include "minosoft:color"

View File

@ -21,6 +21,7 @@ uniform float uFlashProgress;
in vec4 finFlashColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -28,6 +29,7 @@ in vec4 finFlashColor;
void main() {
applyTexel();
applyTint();
foutColor = mix(foutColor, finFlashColor, uFlashProgress);
}

View File

@ -27,6 +27,7 @@ out vec4 finFlashColor;
out vec3 finFragmentPosition;
#include "minosoft:tint"
#include "minosoft:animation"
#include "minosoft:color"

View File

@ -18,6 +18,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -25,4 +26,5 @@ out vec4 foutColor;
void main() {
applyTexel();
applyTint();
}

View File

@ -25,6 +25,7 @@ uniform uint uTintColor;
out vec3 finFragmentPosition;
#include "minosoft:tint"
#include "minosoft:color"
#include "minosoft:animation"

View File

@ -19,6 +19,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -29,6 +30,7 @@ flat in uint finAllowTransparency;
void main() {
if (finTintColor.a == 0.0f) discard;
applyTexel();
applyTint();
if (finAllowTransparency > 0u) {
if (foutColor.a < 0.5f) discard;
}

View File

@ -13,6 +13,8 @@
#version 330 core
#define POSITIVE_INFINITY 1.0f / 0.0f
layout (location = 0) in vec3 vinPosition;
layout (location = 1) in vec2 vinUV;
layout (location = 2) in float vinPartTransformNormal; // part(0x1FD0000) transform (0x7F000), normal (0xFFF)
@ -28,13 +30,9 @@ uniform mat4 uTransform;
flat out uint finAllowTransparency;
out vec4 finTintColor;
#include "minosoft:tint"
#include "minosoft:color"
#define POSITIVE_INFINITY 1.0f / 0.0f
#include "minosoft:skeletal/shade"
#include "minosoft:animation"

View File

@ -19,6 +19,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -29,6 +30,7 @@ flat in uint finAllowTransparency;
void main() {
if (finTintColor.a == 0.0f) discard;
applyTexel();
applyTint();
if (finAllowTransparency > 0u) {
if (foutColor.a < 0.5f) discard;
}

View File

@ -26,8 +26,7 @@ uniform uint uSkinParts;
flat out uint finAllowTransparency;
out vec4 finTintColor;
#include "minosoft:tint"
#include "minosoft:skeletal/vertex"
#include "minosoft:color"
#include "minosoft:animation"

View File

@ -17,10 +17,12 @@ out vec4 foutColor;
in vec2 finUV;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:animation"
void main() {
applyTexel();
applyTint();
}

View File

@ -18,6 +18,7 @@ layout (location = 1) in vec2 vinUV;
layout (location = 2) in float vinIndexLayerAnimation;// texture index (0xF0000000), texture layer (0x0FFFF000), animation index (0x00000FFF)
layout (location = 3) in float vinTintColor;// Light (0xFF000000); 3 bytes color (0x00FFFFFF)
#include "minosoft:tint"
#include "minosoft:color"
#include "minosoft:animation"

View File

@ -18,10 +18,12 @@ out vec4 foutColor;
in vec2 finUV;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:animation"
void main() {
applyTexel();
applyTint();
}

View File

@ -18,6 +18,7 @@ layout (location = 1) in vec2 vinUV;
layout (location = 2) in float vinIndexLayerAnimation;// texture index (0xF0000000), texture layer (0x0FFFF000), animation index (0x00000FFF)
layout (location = 3) in float vinTintColor;
#include "minosoft:tint"
#include "minosoft:color"
#include "minosoft:animation"

View File

@ -17,10 +17,12 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:animation"
void main() {
applyTexel();
applyTint();
}

View File

@ -19,6 +19,7 @@ layout (location = 2) in float vinIndexLayerAnimation;
layout (location = 3) in float vinTintColor;
#include "minosoft:tint"
#include "minosoft:color"
#include "minosoft:animation"

View File

@ -35,17 +35,10 @@ layout(std140) uniform uSpriteBuffer
flat out uint finAnimationArray1; out vec3 finAnimationPosition1;
flat out uint finAnimationArray2; out vec3 finAnimationPosition2;
out float finAnimationInterpolation;
// TODO: remove
#ifndef NO_TINT_COLOR
out vec4 finTintColor;
#endif
#elif defined SHADER_TYPE_FRAGMENT
flat in uint finAnimationArray1; in vec3 finAnimationPosition1;
flat in uint finAnimationArray2; in vec3 finAnimationPosition2;
in float finAnimationInterpolation;
in vec4 finTintColor;// TODO: remove
#endif
@ -70,7 +63,7 @@ vec4 getAnimationTexture() {
}
void applyTexel() {
vec4 texel = getAnimationTexture() * finTintColor;
vec4 texel = getAnimationTexture();
foutColor = texel;
#ifdef TRANSPARENT

View File

@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
#define DEGREE_90 1.5707964f
#define NO_TINT_COLOR
#include "minosoft:tint"
float decodeNormalPart(uint data) {
if (data < 8u) return (data / 8.0f) - 1.0f;

View File

@ -0,0 +1,32 @@
/*
* Minosoft
* Copyright (C) 2020 Moritz Zwerger
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
#ifndef INCLUDE_MINOSOFT_TINT
#define INCLUDE_MINOSOFT_TINT
#ifdef SHADER_TYPE_VERTEX
out vec4 finTintColor;
#endif
#ifdef SHADER_TYPE_FRAGMENT
in vec4 finTintColor;
void applyTint() {
if (finTintColor.a <= 0.0f) discard;
foutColor *= finTintColor;
}
#endif
#endif

View File

@ -15,10 +15,12 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:animation"
void main() {
applyTexel();
applyTint();
}

View File

@ -36,6 +36,9 @@ in Vertex
} ginVertex[];
#include "minosoft:tint"
void emit(vec3 offset, vec2 uv) {
vec3 pointPosition = gl_in[0].gl_Position.xyz;

View File

@ -13,8 +13,6 @@
#version 330 core
#define NO_TINT_COLOR
layout (location = 0) in vec3 vinPosition;
layout (location = 1) in vec2 vinMinUV;
layout (location = 2) in vec2 vinMaxUV;
@ -25,7 +23,6 @@ layout (location = 5) in float vinTintColor;
layout (location = 6) in float vinLight;
#include "minosoft:light"

View File

@ -18,6 +18,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -25,4 +26,5 @@ out vec4 foutColor;
void main() {
applyTexel();
applyTint();
}

View File

@ -20,6 +20,7 @@ layout (location = 3) in float vinIndexLayerAnimation;// texture index (0xF00000
out vec3 finFragmentPosition;
#include "minosoft:tint"
#include "minosoft:animation"
#include "minosoft:light"
#include "minosoft:skeletal/vertex"

View File

@ -19,6 +19,7 @@
out vec4 foutColor;
#include "minosoft:tint"
#include "minosoft:texture"
#include "minosoft:alpha"
#include "minosoft:fog"
@ -26,4 +27,5 @@ out vec4 foutColor;
void main() {
applyTexel();
applyTint();
}

View File

@ -20,6 +20,7 @@ layout (location = 3) in float vinIndexLayerAnimation;// texture index (0xF00000
out vec3 finFragmentPosition;
#include "minosoft:tint"
#include "minosoft:animation"
#include "minosoft:color"
#include "minosoft:skeletal/vertex"