107 lines
2.6 KiB
GLSL
107 lines
2.6 KiB
GLSL
//////////////////////////////////////////
|
|
// Complementary Shaders by EminGT //
|
|
// With Euphoria Patches by SpacEagle17 //
|
|
//////////////////////////////////////////
|
|
|
|
//Common//
|
|
#include "/lib/common.glsl"
|
|
|
|
#if defined MIRROR_DIMENSION || defined WORLD_CURVATURE
|
|
#include "/lib/misc/distortWorld.glsl"
|
|
#endif
|
|
|
|
//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader//////////
|
|
#ifdef FRAGMENT_SHADER
|
|
|
|
in vec2 texCoord;
|
|
|
|
flat in vec4 glColor;
|
|
|
|
//Pipeline Constants//
|
|
|
|
//Common Variables//
|
|
|
|
//Common Functions//
|
|
|
|
//Includes//
|
|
#ifdef COLOR_CODED_PROGRAMS
|
|
#include "/lib/misc/colorCodedPrograms.glsl"
|
|
#endif
|
|
|
|
//Program//
|
|
void main() {
|
|
vec4 color = texture2D(tex, texCoord);
|
|
color *= glColor;
|
|
|
|
color.rgb *= glColor.a; // Needed for Minecraft's "Glint Strength" apparently
|
|
|
|
#ifdef COLOR_CODED_PROGRAMS
|
|
ColorCodeProgram(color, -1);
|
|
#endif
|
|
|
|
/* DRAWBUFFERS:06 */
|
|
gl_FragData[0] = color;
|
|
gl_FragData[1] = vec4(texelFetch(colortex6, texelCoord, 0).rgb, 1.0);
|
|
}
|
|
|
|
#endif
|
|
|
|
//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader//////////
|
|
#ifdef VERTEX_SHADER
|
|
|
|
out vec2 texCoord;
|
|
|
|
flat out vec4 glColor;
|
|
|
|
//Attributes//
|
|
#if defined ATLAS_ROTATION || defined WAVE_EVERYTHING
|
|
attribute vec4 mc_midTexCoord;
|
|
vec2 lmCoord = GetLightMapCoordinates();
|
|
#endif
|
|
|
|
//Common Variables//
|
|
|
|
//Common Functions//
|
|
|
|
//Includes//
|
|
|
|
#ifdef WAVE_EVERYTHING
|
|
#include "/lib/materials/materialMethods/wavingBlocks.glsl"
|
|
#endif
|
|
|
|
//Program//
|
|
void main() {
|
|
gl_Position = ftransform();
|
|
|
|
texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
|
|
#ifdef ATLAS_ROTATION
|
|
texCoord += texCoord * float(hash33(mod(cameraPosition * 0.5, vec3(100.0))));
|
|
#endif
|
|
|
|
glColor = gl_Color;
|
|
|
|
#if HAND_SWAYING > 0
|
|
if (gl_ProjectionMatrix[2][2] > -0.5) {
|
|
#include "/lib/misc/handSway.glsl"
|
|
}
|
|
#endif
|
|
|
|
#if defined MIRROR_DIMENSION || defined WORLD_CURVATURE || defined WAVE_EVERYTHING
|
|
if (gl_ProjectionMatrix[2][2] < -0.5) {
|
|
vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex;
|
|
#ifdef MIRROR_DIMENSION
|
|
doMirrorDimension(position);
|
|
#endif
|
|
#ifdef WORLD_CURVATURE
|
|
position.y += doWorldCurvature(position.xz);
|
|
#endif
|
|
#ifdef WAVE_EVERYTHING
|
|
DoWaveEverything(position.xyz);
|
|
#endif
|
|
gl_Position = gl_ProjectionMatrix * gbufferModelView * position;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#endif
|