mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2025-06-21 00:07:50 +08:00

FIXED AND IMPROVED translucent rendering. FIXED random stuff from rendering over the hand. FIXED hand shading. FIXED blue horses. FIXED translucent lighting on the hand. FIXED translucent lighting on entities. IMPROVED colored shadows. IMPROVED SSAO application to the scene. IMPROVED subsurface scattering and give it more settings. IMPROVED bloom. ADD AgX tonemap and make it default.
181 lines
4.7 KiB
GLSL
181 lines
4.7 KiB
GLSL
#include "/lib/settings.glsl"
|
|
#include "/lib/res_params.glsl"
|
|
#include "/lib/bokeh.glsl"
|
|
#include "/lib/items.glsl"
|
|
|
|
uniform float frameTimeCounter;
|
|
#include "/lib/Shadow_Params.glsl"
|
|
|
|
/*
|
|
!! DO NOT REMOVE !!
|
|
This code is from Chocapic13' shaders
|
|
Read the terms of modification and sharing before changing something below please !
|
|
!! DO NOT REMOVE !!
|
|
*/
|
|
|
|
varying vec4 lmtexcoord;
|
|
varying vec4 color;
|
|
|
|
uniform sampler2D colortex4;
|
|
flat varying float exposure;
|
|
|
|
#ifdef OVERWORLD_SHADER
|
|
flat varying vec3 averageSkyCol_Clouds;
|
|
flat varying vec4 lightCol;
|
|
flat varying vec3 WsunVec;
|
|
#endif
|
|
|
|
varying vec4 normalMat;
|
|
varying vec3 binormal;
|
|
varying vec4 tangent;
|
|
varying vec3 flatnormal;
|
|
|
|
uniform mat4 gbufferModelViewInverse;
|
|
varying vec3 viewVector;
|
|
|
|
flat varying int glass;
|
|
|
|
attribute vec4 at_tangent;
|
|
attribute vec4 mc_Entity;
|
|
|
|
|
|
uniform vec3 sunPosition;
|
|
uniform float sunElevation;
|
|
|
|
varying vec4 tangent_other;
|
|
|
|
uniform int frameCounter;
|
|
// uniform float far;
|
|
uniform float aspectRatio;
|
|
uniform float viewHeight;
|
|
uniform float viewWidth;
|
|
uniform int hideGUI;
|
|
uniform float screenBrightness;
|
|
|
|
uniform int heldItemId;
|
|
uniform int heldItemId2;
|
|
flat varying float HELD_ITEM_BRIGHTNESS;
|
|
|
|
uniform vec2 texelSize;
|
|
uniform int framemod8;
|
|
|
|
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
|
|
vec2(-1.,3.)/8.,
|
|
vec2(5.0,1.)/8.,
|
|
vec2(-3,-5.)/8.,
|
|
vec2(-5.,5.)/8.,
|
|
vec2(-7.,-1.)/8.,
|
|
vec2(3,7.)/8.,
|
|
vec2(7.,-7.)/8.);
|
|
|
|
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
|
|
#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)
|
|
|
|
vec4 toClipSpace3(vec3 viewSpacePosition) {
|
|
return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z);
|
|
}
|
|
|
|
//////////////////////////////VOID MAIN//////////////////////////////
|
|
//////////////////////////////VOID MAIN//////////////////////////////
|
|
//////////////////////////////VOID MAIN//////////////////////////////
|
|
//////////////////////////////VOID MAIN//////////////////////////////
|
|
//////////////////////////////VOID MAIN//////////////////////////////
|
|
|
|
void main() {
|
|
|
|
// lmtexcoord.xy = (gl_MultiTexCoord0).xy;
|
|
lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
|
|
vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0;
|
|
lmtexcoord.zw = lmcoord;
|
|
|
|
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;
|
|
|
|
gl_Position = toClipSpace3(position);
|
|
|
|
|
|
HELD_ITEM_BRIGHTNESS = 0.0;
|
|
|
|
#ifdef Hand_Held_lights
|
|
if(heldItemId == ITEM_LIGHT_SOURCES || heldItemId2 == ITEM_LIGHT_SOURCES) HELD_ITEM_BRIGHTNESS = 0.9;
|
|
#endif
|
|
|
|
|
|
|
|
// 1.0 = water mask
|
|
// 0.9 = entity mask
|
|
// 0.8 = reflective entities
|
|
// 0.7 = reflective blocks
|
|
float mat = 0.0;
|
|
|
|
// water mask
|
|
if(mc_Entity.x == 8.0) {
|
|
mat = 1.0;
|
|
gl_Position.z -= 1e-4;
|
|
}
|
|
|
|
// translucent entities
|
|
#if defined ENTITIES || defined BLOCKENTITIES
|
|
mat = 0.9;
|
|
if (entityId == 1403) mat = 0.8;
|
|
#endif
|
|
|
|
// translucent blocks
|
|
if (mc_Entity.x >= 301 && mc_Entity.x <= 321) mat = 0.7;
|
|
|
|
tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w);
|
|
|
|
normalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0);
|
|
normalMat.a = mat;
|
|
|
|
vec3 tangent2 = normalize( gl_NormalMatrix *at_tangent.rgb);
|
|
binormal = normalize(cross(tangent2.rgb,normalMat.xyz)*at_tangent.w);
|
|
|
|
mat3 tbnMatrix = mat3(tangent2.x, binormal.x, normalMat.x,
|
|
tangent2.y, binormal.y, normalMat.y,
|
|
tangent2.z, binormal.z, normalMat.z);
|
|
|
|
flatnormal = normalMat.xyz;
|
|
|
|
viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz;
|
|
viewVector = normalize(tbnMatrix * viewVector);
|
|
|
|
|
|
color = vec4(gl_Color.rgb, 1.0);
|
|
exposure = texelFetch2D(colortex4,ivec2(10,37),0).r;
|
|
|
|
#ifdef OVERWORLD_SHADER
|
|
lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;
|
|
lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;
|
|
|
|
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
|
|
|
|
WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition);
|
|
// WsunVec = normalize(LightDir);
|
|
#endif
|
|
|
|
#ifdef TAA_UPSCALING
|
|
gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;
|
|
#endif
|
|
#ifdef TAA
|
|
gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;
|
|
#endif
|
|
|
|
#if DOF_QUALITY == 5
|
|
vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);
|
|
jitter = rotate(radians(float(frameCounter))) * jitter;
|
|
jitter.y *= aspectRatio;
|
|
jitter.x *= DOF_ANAMORPHIC_RATIO;
|
|
|
|
#if MANUAL_FOCUS == -2
|
|
float focusMul = 0;
|
|
#elif MANUAL_FOCUS == -1
|
|
float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
|
|
#else
|
|
float focusMul = gl_Position.z - MANUAL_FOCUS;
|
|
#endif
|
|
|
|
vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;
|
|
gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);
|
|
#endif
|
|
}
|