Create/Update assets for version 25w09a

This commit is contained in:
InventiveBot
2025-02-26 18:31:02 +01:00
parent cae88d9a77
commit 8caafb37a5
22030 changed files with 1526584 additions and 18 deletions

View File

@@ -0,0 +1 @@
{"directories":["core","include","post"],"files":[]}

View File

@@ -0,0 +1 @@
{"directories":[],"files":["blit_screen.fsh","blit_screen.vsh","entity.fsh","entity.vsh","glint.fsh","glint.vsh","gui.fsh","gui.vsh","lightmap.fsh","particle.fsh","particle.vsh","position.fsh","position.vsh","position_color.fsh","position_color.vsh","position_color_lightmap.fsh","position_color_lightmap.vsh","position_color_tex_lightmap.fsh","position_color_tex_lightmap.vsh","position_tex.fsh","position_tex.vsh","position_tex_color.fsh","position_tex_color.vsh","rendertype_beacon_beam.fsh","rendertype_beacon_beam.vsh","rendertype_clouds.fsh","rendertype_clouds.vsh","rendertype_crumbling.fsh","rendertype_crumbling.vsh","rendertype_end_portal.fsh","rendertype_end_portal.vsh","rendertype_entity_alpha.fsh","rendertype_entity_alpha.vsh","rendertype_entity_decal.fsh","rendertype_entity_decal.vsh","rendertype_entity_shadow.fsh","rendertype_entity_shadow.vsh","rendertype_item_entity_translucent_cull.fsh","rendertype_item_entity_translucent_cull.vsh","rendertype_leash.fsh","rendertype_leash.vsh","rendertype_lightning.fsh","rendertype_lightning.vsh","rendertype_lines.fsh","rendertype_lines.vsh","rendertype_outline.fsh","rendertype_outline.vsh","rendertype_text.fsh","rendertype_text.vsh","rendertype_text_background.fsh","rendertype_text_background.vsh","rendertype_text_background_see_through.fsh","rendertype_text_background_see_through.vsh","rendertype_text_intensity.fsh","rendertype_text_intensity.vsh","rendertype_text_intensity_see_through.fsh","rendertype_text_intensity_see_through.vsh","rendertype_text_see_through.fsh","rendertype_text_see_through.vsh","rendertype_translucent_moving_block.fsh","rendertype_translucent_moving_block.vsh","rendertype_water_mask.fsh","rendertype_water_mask.vsh","rendertype_world_border.fsh","rendertype_world_border.vsh","terrain.fsh","terrain.vsh"]}

View File

@@ -0,0 +1,11 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
out vec4 fragColor;
void main() {
fragColor = texture(InSampler, texCoord);
}

View File

@@ -0,0 +1,11 @@
#version 150
in vec3 Position;
out vec2 texCoord;
void main() {
vec2 screenPos = Position.xy * 2.0 - 1.0;
gl_Position = vec4(screenPos.x, screenPos.y, 1.0, 1.0);
texCoord = Position.xy;
}

View File

@@ -0,0 +1,35 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec4 vertexColor;
in vec4 lightMapColor;
in vec4 overlayColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
#ifdef ALPHA_CUTOUT
if (color.a < ALPHA_CUTOUT) {
discard;
}
#endif
color *= vertexColor * ColorModulator;
#ifndef NO_OVERLAY
color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a);
#endif
#ifndef EMISSIVE
color *= lightMapColor;
#endif
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,46 @@
#version 150
#moj_import <minecraft:light.glsl>
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV1;
in ivec2 UV2;
in vec3 Normal;
uniform sampler2D Sampler1;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform mat4 TextureMat;
uniform int FogShape;
uniform vec3 Light0_Direction;
uniform vec3 Light1_Direction;
out float vertexDistance;
out vec4 vertexColor;
out vec4 lightMapColor;
out vec4 overlayColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
#ifdef NO_CARDINAL_LIGHTING
vertexColor = Color;
#else
vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color);
#endif
lightMapColor = texelFetch(Sampler2, UV2 / 16, 0);
overlayColor = texelFetch(Sampler1, UV1, 0);
texCoord0 = UV0;
#ifdef APPLY_TEXTURE_MATRIX
texCoord0 = (TextureMat * vec4(UV0, 0.0, 1.0)).xy;
#endif
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform float GlintAlpha;
in float vertexDistance;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * ColorModulator;
if (color.a < 0.1) {
discard;
}
float fade = linear_fog_fade(vertexDistance, FogStart, FogEnd) * GlintAlpha;
fragColor = vec4(color.rgb * fade, color.a);
}

View File

@@ -0,0 +1,21 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform mat4 TextureMat;
uniform int FogShape;
out float vertexDistance;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
texCoord0 = (TextureMat * vec4(UV0, 0.0, 1.0)).xy;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec4 vertexColor;
uniform vec4 ColorModulator;
out vec4 fragColor;
void main() {
vec4 color = vertexColor;
if (color.a == 0.0) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec3 Position;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
}

View File

@@ -0,0 +1,68 @@
#version 150
uniform float AmbientLightFactor;
uniform float SkyFactor;
uniform float BlockFactor;
uniform int UseBrightLightmap;
uniform vec3 SkyLightColor;
uniform float NightVisionFactor;
uniform float DarknessScale;
uniform float DarkenWorldFactor;
uniform float BrightnessFactor;
in vec2 texCoord;
out vec4 fragColor;
float get_brightness(float level) {
float curved_level = level / (4.0 - 3.0 * level);
return mix(curved_level, 1.0, AmbientLightFactor);
}
vec3 notGamma(vec3 x) {
vec3 nx = 1.0 - x;
return 1.0 - nx * nx * nx * nx;
}
void main() {
float block_brightness = get_brightness(floor(texCoord.x * 16) / 15) * BlockFactor;
float sky_brightness = get_brightness(floor(texCoord.y * 16) / 15) * SkyFactor;
// cubic nonsense, dips to yellowish in the middle, white when fully saturated
vec3 color = vec3(
block_brightness,
block_brightness * ((block_brightness * 0.6 + 0.4) * 0.6 + 0.4),
block_brightness * (block_brightness * block_brightness * 0.6 + 0.4)
);
if (UseBrightLightmap != 0) {
color = mix(color, vec3(0.99, 1.12, 1.0), 0.25);
color = clamp(color, 0.0, 1.0);
} else {
color += SkyLightColor * sky_brightness;
color = mix(color, vec3(0.75), 0.04);
vec3 darkened_color = color * vec3(0.7, 0.6, 0.6);
color = mix(color, darkened_color, DarkenWorldFactor);
}
if (NightVisionFactor > 0.0) {
// scale up uniformly until 1.0 is hit by one of the colors
float max_component = max(color.r, max(color.g, color.b));
if (max_component < 1.0) {
vec3 bright_color = color / max_component;
color = mix(color, bright_color, NightVisionFactor);
}
}
if (UseBrightLightmap == 0) {
color = clamp(color - vec3(DarknessScale), 0.0, 1.0);
}
vec3 notGamma = notGamma(color);
color = mix(color, notGamma, BrightnessFactor);
color = mix(color, vec3(0.75), 0.04);
color = clamp(color, 0.0, 1.0);
fragColor = vec4(color, 1.0);
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec2 texCoord0;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
if (color.a < 0.1) {
discard;
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,26 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec2 UV0;
in vec4 Color;
in ivec2 UV2;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec2 texCoord0;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
texCoord0 = UV0;
vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);
}

View File

@@ -0,0 +1,16 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
out vec4 fragColor;
void main() {
fragColor = linear_fog(ColorModulator, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,17 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
uniform mat4 ProjMat;
uniform mat4 ModelViewMat;
uniform int FogShape;
out float vertexDistance;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec4 vertexColor;
uniform vec4 ColorModulator;
out vec4 fragColor;
void main() {
vec4 color = vertexColor;
if (color.a == 0.0) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec3 Position;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
}

View File

@@ -0,0 +1,15 @@
#version 150
uniform sampler2D Sampler2;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord2;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler2, texCoord2) * vertexColor;
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord2;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord2 = UV2;
}

View File

@@ -0,0 +1,19 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
in vec2 texCoord2;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor;
if (color.a < 0.1) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,21 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in vec2 UV2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
out vec2 texCoord2;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
texCoord2 = UV2;
}

View File

@@ -0,0 +1,17 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
if (color.a == 0.0) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec3 Position;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
texCoord0 = UV0;
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec2 texCoord0;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor;
if (color.a == 0.0) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec2 UV0;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec2 texCoord0;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
texCoord0 = UV0;
vertexColor = Color;
}

View File

@@ -0,0 +1,23 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform mat4 ProjMat;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in vec4 vertexColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
color *= vertexColor * ColorModulator;
float fragmentDistance = -ProjMat[3].z / ((gl_FragCoord.z) * -2.0 + 1.0 - ProjMat[2].z);
fragColor = linear_fog(color, fragmentDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
}

View File

@@ -0,0 +1,16 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
fragColor = linear_fog(vertexColor, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,23 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform vec3 ModelOffset;
uniform int FogShape;
uniform vec4 ColorModulator;
out float vertexDistance;
out vec4 vertexColor;
void main() {
vec3 pos = Position + ModelOffset;
gl_Position = ProjMat * ModelViewMat * vec4(pos, 1.0);
vertexDistance = fog_distance(pos, FogShape);
vertexColor = Color * ColorModulator;
}

View File

@@ -0,0 +1,19 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
in vec2 texCoord2;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor;
if (color.a < 0.1) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,22 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in vec2 UV2;
in vec3 Normal;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
out vec2 texCoord2;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
texCoord2 = UV2;
}

View File

@@ -0,0 +1,66 @@
#version 150
#moj_import <minecraft:fog.glsl>
#moj_import <minecraft:matrix.glsl>
uniform sampler2D Sampler0;
uniform sampler2D Sampler1;
uniform float GameTime;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in vec4 texProj0;
in float vertexDistance;
const vec3[] COLORS = vec3[](
vec3(0.022087, 0.098399, 0.110818),
vec3(0.011892, 0.095924, 0.089485),
vec3(0.027636, 0.101689, 0.100326),
vec3(0.046564, 0.109883, 0.114838),
vec3(0.064901, 0.117696, 0.097189),
vec3(0.063761, 0.086895, 0.123646),
vec3(0.084817, 0.111994, 0.166380),
vec3(0.097489, 0.154120, 0.091064),
vec3(0.106152, 0.131144, 0.195191),
vec3(0.097721, 0.110188, 0.187229),
vec3(0.133516, 0.138278, 0.148582),
vec3(0.070006, 0.243332, 0.235792),
vec3(0.196766, 0.142899, 0.214696),
vec3(0.047281, 0.315338, 0.321970),
vec3(0.204675, 0.390010, 0.302066),
vec3(0.080955, 0.314821, 0.661491)
);
const mat4 SCALE_TRANSLATE = mat4(
0.5, 0.0, 0.0, 0.25,
0.0, 0.5, 0.0, 0.25,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat4 end_portal_layer(float layer) {
mat4 translate = mat4(
1.0, 0.0, 0.0, 17.0 / layer,
0.0, 1.0, 0.0, (2.0 + layer / 1.5) * (GameTime * 1.5),
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat2 rotate = mat2_rotate_z(radians((layer * layer * 4321.0 + layer * 9.0) * 2.0));
mat2 scale = mat2((4.5 - layer / 4.0) * 2.0);
return mat4(scale * rotate) * translate * SCALE_TRANSLATE;
}
out vec4 fragColor;
void main() {
vec3 color = textureProj(Sampler0, texProj0).rgb * COLORS[0];
for (int i = 0; i < PORTAL_LAYERS; i++) {
color += textureProj(Sampler1, texProj0 * end_portal_layer(float(i + 1))).rgb * COLORS[i];
}
fragColor = linear_fog(vec4(color, 1.0), vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,20 @@
#version 150
#moj_import <minecraft:fog.glsl>
#moj_import <minecraft:projection.glsl>
in vec3 Position;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out vec4 texProj0;
out float vertexDistance;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
texProj0 = projection_from_position(gl_Position);
vertexDistance = fog_distance(Position, FogShape);
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D Sampler0;
in vec4 vertexColor;
in vec2 texCoord0;
in vec2 texCoord1;
in vec2 texCoord2;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
if (color.a < vertexColor.a) {
discard;
}
fragColor = color;
}

View File

@@ -0,0 +1,25 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in vec2 UV1;
in vec2 UV2;
in vec3 Normal;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
out vec2 texCoord1;
out vec2 texCoord2;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
texCoord1 = UV1;
texCoord2 = UV2;
}

View File

@@ -0,0 +1,27 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec4 vertexColor;
in vec4 overlayColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
if (color.a < 0.1) {
discard;
}
color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a);
color *= vertexColor * ColorModulator;
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,35 @@
#version 150
#moj_import <minecraft:light.glsl>
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV1;
in ivec2 UV2;
in vec3 Normal;
uniform sampler2D Sampler1;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
uniform vec3 Light0_Direction;
uniform vec3 Light1_Direction;
out float vertexDistance;
out vec4 vertexColor;
out vec4 overlayColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color) * texelFetch(Sampler2, UV2 / 16, 0);
overlayColor = texelFetch(Sampler1, UV1, 0);
texCoord0 = UV0;
}

View File

@@ -0,0 +1,22 @@
#version 150
#moj_import <minecraft:fog.glsl>
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 color = texture(Sampler0, clamp(texCoord0, 0.0, 1.0));
color *= vertexColor * ColorModulator;
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,23 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color;
texCoord0 = UV0;
}

View File

@@ -0,0 +1,25 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec4 vertexColor;
in vec2 texCoord0;
in vec2 texCoord1;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
if (color.a < 0.1) {
discard;
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,36 @@
#version 150
#moj_import <minecraft:light.glsl>
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in vec2 UV1;
in ivec2 UV2;
in vec3 Normal;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
uniform vec3 Light0_Direction;
uniform vec3 Light1_Direction;
out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
out vec2 texCoord1;
out vec2 texCoord2;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color) * texelFetch(Sampler2, UV2 / 16, 0);
texCoord0 = UV0;
texCoord1 = UV1;
texCoord2 = UV2;
}

View File

@@ -0,0 +1,16 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
flat in vec4 vertexColor;
out vec4 fragColor;
void main() {
fragColor = linear_fog(vertexColor, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in ivec2 UV2;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform vec4 ColorModulator;
uniform int FogShape;
out float vertexDistance;
flat out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color * ColorModulator * texelFetch(Sampler2, UV2 / 16, 0);
}

View File

@@ -0,0 +1,16 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
in float vertexDistance;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
fragColor = vertexColor * ColorModulator * linear_fog_fade(vertexDistance, FogStart, FogEnd);
}

View File

@@ -0,0 +1,20 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color;
}

View File

@@ -0,0 +1,18 @@
#version 150
#moj_import <minecraft:fog.glsl>
uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;
in float vertexDistance;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
vec4 color = vertexColor * ColorModulator;
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,48 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec3 Normal;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform float LineWidth;
uniform vec2 ScreenSize;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
const float VIEW_SHRINK = 1.0 - (1.0 / 256.0);
const mat4 VIEW_SCALE = mat4(
VIEW_SHRINK, 0.0, 0.0, 0.0,
0.0, VIEW_SHRINK, 0.0, 0.0,
0.0, 0.0, VIEW_SHRINK, 0.0,
0.0, 0.0, 0.0, 1.0
);
void main() {
vec4 linePosStart = ProjMat * VIEW_SCALE * ModelViewMat * vec4(Position, 1.0);
vec4 linePosEnd = ProjMat * VIEW_SCALE * ModelViewMat * vec4(Position + Normal, 1.0);
vec3 ndc1 = linePosStart.xyz / linePosStart.w;
vec3 ndc2 = linePosEnd.xyz / linePosEnd.w;
vec2 lineScreenDirection = normalize((ndc2.xy - ndc1.xy) * ScreenSize);
vec2 lineOffset = vec2(-lineScreenDirection.y, lineScreenDirection.x) * LineWidth / ScreenSize;
if (lineOffset.x < 0.0) {
lineOffset *= -1.0;
}
if (gl_VertexID % 2 == 0) {
gl_Position = vec4((ndc1 + vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w);
} else {
gl_Position = vec4((ndc1 - vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w);
}
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color;
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
if (color.a == 0.0) {
discard;
}
fragColor = vec4(ColorModulator.rgb * vertexColor.rgb, ColorModulator.a);
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
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 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
if (color.a < 0.1) {
discard;
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,26 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV2;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);
texCoord0 = UV0;
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
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 color = vertexColor * ColorModulator;
if (color.a < 0.1) {
discard;
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,23 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in ivec2 UV2;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);
}

View File

@@ -0,0 +1,15 @@
#version 150
uniform vec4 ColorModulator;
in vec4 vertexColor;
out vec4 fragColor;
void main() {
vec4 color = vertexColor;
if (color.a < 0.1) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec3 Position;
in vec4 Color;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
}

View File

@@ -0,0 +1,24 @@
#version 150
#moj_import <minecraft:fog.glsl>
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 color = texture(Sampler0, texCoord0).rrrr * vertexColor * ColorModulator;
if (color.a < 0.1) {
discard;
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,26 @@
#version 150
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV2;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);
texCoord0 = UV0;
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0).rrrr * vertexColor;
if (color.a < 0.1) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor;
if (color.a < 0.1) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color;
texCoord0 = UV0;
}

View File

@@ -0,0 +1,16 @@
#version 150
uniform sampler2D Sampler0;
uniform sampler2D Sampler2;
uniform vec4 ColorModulator;
in vec4 vertexColor;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0) * vertexColor;
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,22 @@
#version 150
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV2;
in vec3 Normal;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);
texCoord0 = UV0;
}

View File

@@ -0,0 +1,9 @@
#version 150
uniform vec4 ColorModulator;
out vec4 fragColor;
void main() {
fragColor = ColorModulator;
}

View File

@@ -0,0 +1,10 @@
#version 150
in vec3 Position;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
}

View File

@@ -0,0 +1,17 @@
#version 150
uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
in vec2 texCoord0;
out vec4 fragColor;
void main() {
vec4 color = texture(Sampler0, texCoord0);
if (color.a == 0.0) {
discard;
}
fragColor = color * ColorModulator;
}

View File

@@ -0,0 +1,18 @@
#version 150
in vec3 Position;
in vec2 UV0;
uniform mat4 TextureMat;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform vec3 ModelOffset;
out vec2 texCoord0;
void main() {
vec3 pos = Position + ModelOffset;
gl_Position = ProjMat * ModelViewMat * vec4(pos, 1.0);
texCoord0 = (TextureMat * vec4(UV0, 0.0, 1.0)).xy;
}

View File

@@ -0,0 +1,26 @@
#version 150
#moj_import <minecraft:fog.glsl>
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 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
#ifdef ALPHA_CUTOUT
if (color.a < ALPHA_CUTOUT) {
discard;
}
#endif
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

View File

@@ -0,0 +1,30 @@
#version 150
#moj_import <minecraft:light.glsl>
#moj_import <minecraft:fog.glsl>
in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV2;
in vec3 Normal;
uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform vec3 ModelOffset;
uniform int FogShape;
out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
void main() {
vec3 pos = Position + ModelOffset;
gl_Position = ProjMat * ModelViewMat * vec4(pos, 1.0);
vertexDistance = fog_distance(pos, FogShape);
vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2);
texCoord0 = UV0;
}

View File

@@ -0,0 +1 @@
{"directories":[],"files":["fog.glsl","light.glsl","matrix.glsl","projection.glsl"]}

View File

@@ -0,0 +1,30 @@
#version 150
vec4 linear_fog(vec4 inColor, float vertexDistance, float fogStart, float fogEnd, vec4 fogColor) {
if (vertexDistance <= fogStart) {
return inColor;
}
float fogValue = vertexDistance < fogEnd ? smoothstep(fogStart, fogEnd, vertexDistance) : 1.0;
return vec4(mix(inColor.rgb, fogColor.rgb, fogValue * fogColor.a), inColor.a);
}
float linear_fog_fade(float vertexDistance, float fogStart, float fogEnd) {
if (vertexDistance <= fogStart) {
return 1.0;
} else if (vertexDistance >= fogEnd) {
return 0.0;
}
return smoothstep(fogEnd, fogStart, vertexDistance);
}
float fog_distance(vec3 pos, int shape) {
if (shape == 0) {
return length(pos);
} else {
float distXZ = length(pos.xz);
float distY = abs(pos.y);
return max(distXZ, distY);
}
}

View File

@@ -0,0 +1,15 @@
#version 150
#define MINECRAFT_LIGHT_POWER (0.6)
#define MINECRAFT_AMBIENT_LIGHT (0.4)
vec4 minecraft_mix_light(vec3 lightDir0, vec3 lightDir1, vec3 normal, vec4 color) {
float light0 = max(0.0, dot(lightDir0, normal));
float light1 = max(0.0, dot(lightDir1, normal));
float lightAccum = min(1.0, (light0 + light1) * MINECRAFT_LIGHT_POWER + MINECRAFT_AMBIENT_LIGHT);
return vec4(color.rgb * lightAccum, color.a);
}
vec4 minecraft_sample_lightmap(sampler2D lightMap, ivec2 uv) {
return texture(lightMap, clamp(uv / 256.0, vec2(0.5 / 16.0), vec2(15.5 / 16.0)));
}

View File

@@ -0,0 +1,8 @@
#version 150
mat2 mat2_rotate_z(float radians) {
return mat2(
cos(radians), -sin(radians),
sin(radians), cos(radians)
);
}

View File

@@ -0,0 +1,8 @@
#version 150
vec4 projection_from_position(vec4 position) {
vec4 projection = position * 0.5;
projection.xy = vec2(projection.x + projection.w, projection.y + projection.w);
projection.zw = position.zw;
return projection;
}

View File

@@ -0,0 +1 @@
{"directories":[],"files":["bits.fsh","blit.fsh","blit.vsh","blur.vsh","box_blur.fsh","color_convolve.fsh","entity_outline_box_blur.fsh","entity_sobel.fsh","invert.fsh","invert.vsh","rotscale.vsh","screenquad.vsh","sobel.vsh","spiderclip.fsh","transparency.fsh"]}

View File

@@ -0,0 +1,30 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
in vec2 oneTexel;
uniform vec2 InSize;
uniform float Resolution;
uniform float MosaicSize;
out vec4 fragColor;
const float Saturation = 1.5;
void main() {
vec2 mosaicInSize = InSize / MosaicSize;
vec2 fractPix = fract(texCoord * mosaicInSize) / mosaicInSize;
vec4 baseTexel = texture(InSampler, texCoord - fractPix);
vec3 fractTexel = baseTexel.rgb - fract(baseTexel.rgb * Resolution) / Resolution;
float luma = dot(fractTexel, vec3(0.3, 0.59, 0.11));
vec3 chroma = (fractTexel - luma) * Saturation;
baseTexel.rgb = luma + chroma;
baseTexel.a = 1.0;
fragColor = baseTexel;
}

View File

@@ -0,0 +1,13 @@
#version 150
uniform sampler2D InSampler;
uniform vec4 ColorModulate;
in vec2 texCoord;
out vec4 fragColor;
void main(){
fragColor = texture(InSampler, texCoord) * ColorModulate;
}

View File

@@ -0,0 +1,15 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 OutSize;
out vec2 texCoord;
void main(){
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
texCoord = Position.xy;
}

View File

@@ -0,0 +1,21 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 InSize;
uniform vec2 OutSize;
uniform vec2 BlurDir;
out vec2 texCoord;
out vec2 sampleStep;
void main() {
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
vec2 oneTexel = 1.0 / InSize;
sampleStep = oneTexel * BlurDir;
texCoord = Position.xy;
}

View File

@@ -0,0 +1,23 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
in vec2 sampleStep;
uniform float Radius;
out vec4 fragColor;
// This shader relies on GL_LINEAR sampling to reduce the amount of texture samples in half.
// Instead of sampling each pixel position with a step of 1 we sample between pixels with a step of 2.
// In the end we sample the last pixel with a half weight, since the amount of pixels to sample is always odd (actualRadius * 2 + 1).
void main() {
vec4 blurred = vec4(0.0);
float actualRadius = round(Radius);
for (float a = -actualRadius + 0.5; a <= actualRadius; a += 2.0) {
blurred += texture(InSampler, texCoord + sampleStep * a);
}
blurred += texture(InSampler, texCoord + sampleStep * actualRadius) / 2.0;
fragColor = blurred / (actualRadius + 0.5);
}

View File

@@ -0,0 +1,33 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
in vec2 oneTexel;
uniform vec2 InSize;
uniform vec3 RedMatrix;
uniform vec3 GreenMatrix;
uniform vec3 BlueMatrix;
const vec3 Gray = vec3(0.3, 0.59, 0.11);
const float Saturation = 1.8;
out vec4 fragColor;
void main() {
vec4 InTexel = texture(InSampler, texCoord);
// Color Matrix
float RedValue = dot(InTexel.rgb, RedMatrix);
float GreenValue = dot(InTexel.rgb, GreenMatrix);
float BlueValue = dot(InTexel.rgb, BlueMatrix);
vec3 OutColor = vec3(RedValue, GreenValue, BlueValue);
// Saturation
float Luma = dot(OutColor, Gray);
vec3 Chroma = OutColor - Luma;
OutColor = (Chroma * Saturation) + Luma;
fragColor = vec4(OutColor, 1.0);
}

View File

@@ -0,0 +1,18 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
in vec2 sampleStep;
out vec4 fragColor;
void main() {
vec4 blurred = vec4(0.0);
float radius = 2.0;
for (float a = -radius + 0.5; a <= radius; a += 2.0) {
blurred += texture(InSampler, texCoord + sampleStep * a);
}
blurred += texture(InSampler, texCoord + sampleStep * radius) / 2.0;
fragColor = vec4((blurred / (radius + 0.5)).rgb, blurred.a);
}

View File

@@ -0,0 +1,23 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
in vec2 oneTexel;
out vec4 fragColor;
void main(){
vec4 center = texture(InSampler, texCoord);
vec4 left = texture(InSampler, texCoord - vec2(oneTexel.x, 0.0));
vec4 right = texture(InSampler, texCoord + vec2(oneTexel.x, 0.0));
vec4 up = texture(InSampler, texCoord - vec2(0.0, oneTexel.y));
vec4 down = texture(InSampler, texCoord + vec2(0.0, oneTexel.y));
float leftDiff = abs(center.a - left.a);
float rightDiff = abs(center.a - right.a);
float upDiff = abs(center.a - up.a);
float downDiff = abs(center.a - down.a);
float total = clamp(leftDiff + rightDiff + upDiff + downDiff, 0.0, 1.0);
vec3 outColor = center.rgb * center.a + left.rgb * left.a + right.rgb * right.a + up.rgb * up.a + down.rgb * down.a;
fragColor = vec4(outColor * 0.2, total);
}

View File

@@ -0,0 +1,16 @@
#version 150
uniform sampler2D InSampler;
in vec2 texCoord;
uniform float InverseAmount;
out vec4 fragColor;
void main(){
vec4 diffuseColor = texture(InSampler, texCoord);
vec4 invertColor = 1.0 - diffuseColor;
vec4 outColor = mix(diffuseColor, invertColor, InverseAmount);
fragColor = vec4(outColor.rgb, 1.0);
}

View File

@@ -0,0 +1,20 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 InSize;
uniform vec2 OutSize;
out vec2 texCoord;
void main(){
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
vec2 sizeRatio = OutSize / InSize;
texCoord = Position.xy;
texCoord.x = texCoord.x * sizeRatio.x;
texCoord.y = texCoord.y * sizeRatio.y;
texCoord.y = sizeRatio.y - texCoord.y;
}

View File

@@ -0,0 +1,29 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 InSize;
uniform vec2 OutSize;
uniform vec2 InScale;
uniform vec2 InOffset;
uniform float InRotation;
out vec2 texCoord;
out vec2 scaledCoord;
void main(){
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
texCoord = Position.xy;
float Deg2Rad = 0.0174532925;
float InRadians = InRotation * Deg2Rad;
float Cosine = cos(InRadians);
float Sine = sin(InRadians);
float RotU = texCoord.x * Cosine - texCoord.y * Sine;
float RotV = texCoord.y * Cosine + texCoord.x * Sine;
scaledCoord = vec2(RotU, RotV) * InScale + InOffset;
}

View File

@@ -0,0 +1,14 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 OutSize;
out vec2 texCoord;
void main() {
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
texCoord = Position.xy;
}

View File

@@ -0,0 +1,19 @@
#version 150
in vec4 Position;
uniform mat4 ProjMat;
uniform vec2 InSize;
uniform vec2 OutSize;
out vec2 texCoord;
out vec2 oneTexel;
void main(){
vec4 outPos = ProjMat * vec4(Position.xy * OutSize, 0.0, 1.0);
gl_Position = vec4(outPos.xy, 0.2, 1.0);
oneTexel = 1.0 / InSize;
texCoord = Position.xy;
}

View File

@@ -0,0 +1,33 @@
#version 150
uniform sampler2D InSampler;
uniform sampler2D BlurSampler;
in vec2 texCoord;
in vec2 scaledCoord;
uniform vec2 InSize;
uniform vec4 Scissor;
uniform vec4 Vignette;
out vec4 fragColor;
void main() {
vec4 ScaledTexel = texture(InSampler, scaledCoord);
vec4 BlurTexel = texture(BlurSampler, texCoord);
vec4 OutTexel = ScaledTexel;
// -- Alpha Clipping --
if (scaledCoord.x < Scissor.x) OutTexel = BlurTexel;
if (scaledCoord.y < Scissor.y) OutTexel = BlurTexel;
if (scaledCoord.x > Scissor.z) OutTexel = BlurTexel;
if (scaledCoord.y > Scissor.w) OutTexel = BlurTexel;
clamp(scaledCoord, 0.0, 1.0);
if (scaledCoord.x < Vignette.x) OutTexel = mix(BlurTexel, OutTexel, (Scissor.x - scaledCoord.x) / (Scissor.x - Vignette.x));
if (scaledCoord.y < Vignette.y) OutTexel = mix(BlurTexel, OutTexel, (Scissor.y - scaledCoord.y) / (Scissor.y - Vignette.y));
if (scaledCoord.x > Vignette.z) OutTexel = mix(BlurTexel, OutTexel, (Scissor.z - scaledCoord.x) / (Scissor.z - Vignette.z));
if (scaledCoord.y > Vignette.w) OutTexel = mix(BlurTexel, OutTexel, (Scissor.w - scaledCoord.y) / (Scissor.w - Vignette.w));
fragColor = vec4(OutTexel.rgb, 1.0);
}

View File

@@ -0,0 +1,70 @@
#version 150
uniform sampler2D MainSampler;
uniform sampler2D MainDepthSampler;
uniform sampler2D TranslucentSampler;
uniform sampler2D TranslucentDepthSampler;
uniform sampler2D ItemEntitySampler;
uniform sampler2D ItemEntityDepthSampler;
uniform sampler2D ParticlesSampler;
uniform sampler2D ParticlesDepthSampler;
uniform sampler2D WeatherSampler;
uniform sampler2D WeatherDepthSampler;
uniform sampler2D CloudsSampler;
uniform sampler2D CloudsDepthSampler;
in vec2 texCoord;
#define NUM_LAYERS 6
vec4 color_layers[NUM_LAYERS];
float depth_layers[NUM_LAYERS];
int active_layers = 0;
out vec4 fragColor;
void try_insert( vec4 color, float depth ) {
if ( color.a == 0.0 ) {
return;
}
color_layers[active_layers] = color;
depth_layers[active_layers] = depth;
int jj = active_layers++;
int ii = jj - 1;
while ( jj > 0 && depth_layers[jj] > depth_layers[ii] ) {
float depthTemp = depth_layers[ii];
depth_layers[ii] = depth_layers[jj];
depth_layers[jj] = depthTemp;
vec4 colorTemp = color_layers[ii];
color_layers[ii] = color_layers[jj];
color_layers[jj] = colorTemp;
jj = ii--;
}
}
vec3 blend( vec3 dst, vec4 src ) {
return ( dst * ( 1.0 - src.a ) ) + src.rgb;
}
void main() {
color_layers[0] = vec4( texture( MainSampler, texCoord ).rgb, 1.0 );
depth_layers[0] = texture( MainDepthSampler, texCoord ).r;
active_layers = 1;
try_insert( texture( TranslucentSampler, texCoord ), texture( TranslucentDepthSampler, texCoord ).r );
try_insert( texture( ItemEntitySampler, texCoord ), texture( ItemEntityDepthSampler, texCoord ).r );
try_insert( texture( ParticlesSampler, texCoord ), texture( ParticlesDepthSampler, texCoord ).r );
try_insert( texture( WeatherSampler, texCoord ), texture( WeatherDepthSampler, texCoord ).r );
try_insert( texture( CloudsSampler, texCoord ), texture( CloudsDepthSampler, texCoord ).r );
vec3 texelAccum = color_layers[0].rgb;
for ( int ii = 1; ii < active_layers; ++ii ) {
texelAccum = blend( texelAccum, color_layers[ii] );
}
fragColor = vec4( texelAccum.rgb, 1.0 );
}