custommods
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Complementary Shaders by EminGT, based on BSL Shaders by Capt Tatsu
|
||||
*/
|
||||
|
||||
#include "/lib/util/reprojection.glsl"
|
||||
|
||||
ivec2 neighbourhoodOffsets[8] = ivec2[8](
|
||||
ivec2(-1, -1),
|
||||
ivec2( 0, -1),
|
||||
ivec2( 1, -1),
|
||||
ivec2(-1, 0),
|
||||
ivec2( 1, 0),
|
||||
ivec2(-1, 1),
|
||||
ivec2( 0, 1),
|
||||
ivec2( 1, 1)
|
||||
);
|
||||
|
||||
void NeighbourhoodClamping(vec3 color, inout vec3 tempColor, float depth, inout float edge) {
|
||||
vec3 minclr = color, maxclr = color;
|
||||
|
||||
ivec2 texelCoord = ivec2(gl_FragCoord.xy);
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
float depthCheck = texelFetch(depthtex1, texelCoord + neighbourhoodOffsets[i], 0).r;
|
||||
if (abs(GetLinearDepth(depthCheck) - GetLinearDepth(depth)) > 0.09) edge = 0.25;
|
||||
vec3 clr = texelFetch(colortex1, texelCoord + neighbourhoodOffsets[i], 0).rgb;
|
||||
minclr = min(minclr, clr); maxclr = max(maxclr, clr);
|
||||
}
|
||||
|
||||
tempColor = clamp(tempColor, minclr, maxclr);
|
||||
}
|
||||
|
||||
void TAA(inout vec3 color, inout vec4 temp) {
|
||||
float depth = texture2D(depthtex1, texCoord).r;
|
||||
float noTAA = texture2D(colortex7, texCoord).r;
|
||||
if (depth < 0.56 || noTAA > 0.5) { // Fixes entities and hand
|
||||
return;
|
||||
}
|
||||
|
||||
vec3 coord = vec3(texCoord, depth);
|
||||
vec2 prvCoord = Reprojection(coord);
|
||||
|
||||
vec2 view = vec2(viewWidth, viewHeight);
|
||||
vec3 tempColor = texture2D(colortex2, prvCoord).gba;
|
||||
if (tempColor == vec3(0.0)) { // Fixes the first frame
|
||||
temp = vec4(temp.r, color);
|
||||
return;
|
||||
}
|
||||
|
||||
float edge = 0.0;
|
||||
NeighbourhoodClamping(color, tempColor, depth, edge);
|
||||
|
||||
vec2 velocity = (texCoord - prvCoord.xy) * view;
|
||||
|
||||
float blendFactor = float(prvCoord.x > 0.0 && prvCoord.x < 1.0 &&
|
||||
prvCoord.y > 0.0 && prvCoord.y < 1.0);
|
||||
#if AA == 2 || AA == 3
|
||||
float blendMinimum = 0.3;
|
||||
#elif AA == 4
|
||||
float blendMinimum = 0.6;
|
||||
#endif
|
||||
float blendVariable = 0.25;
|
||||
float blendConstant = 0.65;
|
||||
|
||||
float lengthVelocity = length(velocity) * 50;
|
||||
blendFactor *= max(exp(-lengthVelocity) * blendVariable + blendConstant - lengthVelocity * edge, blendMinimum);
|
||||
|
||||
color = mix(color, tempColor, blendFactor);
|
||||
temp = vec4(temp.r, color);
|
||||
//if (edge > 0.05) color.rgb = vec3(1.0, 0.0, 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user