From 71935a746a25aedc442d5da15e4f31d669c12132 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 18 Jul 2021 17:29:23 +0300 Subject: [PATCH] Cutout emission --- .../bclib/mixin/client/TextureAtlasMixin.java | 2 +- .../shaders/core/rendertype_cutout.fsh | 28 +++++++++++++++++++ .../shaders/core/rendertype_cutout_mipped.fsh | 28 +++++++++++++++++++ .../shaders/core/rendertype_solid.fsh | 2 +- 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/minecraft/shaders/core/rendertype_cutout.fsh create mode 100644 src/main/resources/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh diff --git a/src/main/java/ru/bclib/mixin/client/TextureAtlasMixin.java b/src/main/java/ru/bclib/mixin/client/TextureAtlasMixin.java index 375fcf18..fbe102ac 100644 --- a/src/main/java/ru/bclib/mixin/client/TextureAtlasMixin.java +++ b/src/main/java/ru/bclib/mixin/client/TextureAtlasMixin.java @@ -62,7 +62,7 @@ public class TextureAtlasMixin { int g = (argb >> 8) & 255; int b = argb & 255; if (r > 0 || g > 0 || b > 0) { - argb = (argb & 0x00FFFFFF) | (200 << 24); + argb = (argb & 0x00FFFFFF) | (250 << 24); sprite.setPixelRGBA(x, y, argb); } } diff --git a/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout.fsh b/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout.fsh new file mode 100644 index 00000000..441b8209 --- /dev/null +++ b/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout.fsh @@ -0,0 +1,28 @@ +#version 150 +#moj_import + +uniform sampler2D Sampler0; + +uniform vec4 ColorModulator; +uniform float FogStart; +uniform float FogEnd; +uniform vec4 FogColor; + +in float vertexDistance; +in vec4 vertexColor; +in vec2 texCoord0; + +out vec4 fragColor; + +void main() { + vec4 tex = texture(Sampler0, texCoord0); + if (tex.a < 0.1) { + discard; + } + vec4 color = tex * ColorModulator; + if (tex.a > 0.99) { + color = color * vertexColor; + } + color.a = 1.0; + fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); +} diff --git a/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh b/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh new file mode 100644 index 00000000..441b8209 --- /dev/null +++ b/src/main/resources/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh @@ -0,0 +1,28 @@ +#version 150 +#moj_import + +uniform sampler2D Sampler0; + +uniform vec4 ColorModulator; +uniform float FogStart; +uniform float FogEnd; +uniform vec4 FogColor; + +in float vertexDistance; +in vec4 vertexColor; +in vec2 texCoord0; + +out vec4 fragColor; + +void main() { + vec4 tex = texture(Sampler0, texCoord0); + if (tex.a < 0.1) { + discard; + } + vec4 color = tex * ColorModulator; + if (tex.a > 0.99) { + color = color * vertexColor; + } + color.a = 1.0; + fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); +} diff --git a/src/main/resources/assets/minecraft/shaders/core/rendertype_solid.fsh b/src/main/resources/assets/minecraft/shaders/core/rendertype_solid.fsh index f6499103..c01d103d 100644 --- a/src/main/resources/assets/minecraft/shaders/core/rendertype_solid.fsh +++ b/src/main/resources/assets/minecraft/shaders/core/rendertype_solid.fsh @@ -17,7 +17,7 @@ out vec4 fragColor; void main() { vec4 tex = texture(Sampler0, texCoord0); vec4 color = tex * ColorModulator; - if (tex.a > 0.9) { + if (tex.a > 0.99) { color = color * vertexColor; } color.a = 1.0;