mirror of
https://github.com/Merlin1809/Eclipse-Shader.git
synced 2026-10-10 04:53:07 +08:00
Add Distant Horizons fade for terrain and water (Also fixes Physics Mod Water visible through DH LODs)
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "/lib/blocks.glsl"
|
||||
#include "/lib/entities.glsl"
|
||||
#include "/lib/items.glsl"
|
||||
#include "/lib/bayer_matrix.glsl"
|
||||
|
||||
flat varying int NameTags;
|
||||
|
||||
@@ -442,9 +443,22 @@ void main() {
|
||||
//////////////////////////////// ////////////////////////////////
|
||||
//////////////////////////////// ALBEDO ////////////////////////////////
|
||||
//////////////////////////////// ////////////////////////////////
|
||||
|
||||
float textureLOD = bias();
|
||||
vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color;
|
||||
|
||||
#ifdef DH_CHUNK_FADING
|
||||
#if defined DISTANT_HORIZONS
|
||||
float viewDist = length(playerpos);
|
||||
float ditherFade = smoothstep(0.96*far, far, viewDist);
|
||||
|
||||
vec4 Albedo;
|
||||
Albedo.rgb = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD).rgb * color.rgb;
|
||||
Albedo.a = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD).a * color.a * step(ditherFade, bayerDither());
|
||||
#else
|
||||
vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color;
|
||||
#endif
|
||||
#else
|
||||
vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color;
|
||||
#endif
|
||||
|
||||
#if defined HAND
|
||||
if (Albedo.a < 0.1) discard;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "/lib/settings.glsl"
|
||||
#include "/lib/bayer_matrix.glsl"
|
||||
|
||||
#undef FLASHLIGHT_BOUNCED_INDIRECT
|
||||
|
||||
@@ -434,6 +435,10 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
/////////////////////////////////// ALBEDO /////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// DH FADING //
|
||||
float viewDist = length((mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz));
|
||||
float ditherFade = smoothstep(0.96*far, 0.97*far, viewDist);
|
||||
|
||||
gl_FragData[0] = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color;
|
||||
|
||||
float UnchangedAlpha = gl_FragData[0].a;
|
||||
@@ -452,6 +457,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
if (isWater){
|
||||
Albedo = vec3(0.0);
|
||||
gl_FragData[0].a = 1.0/255.0;
|
||||
|
||||
if (step(ditherFade, bayerDither()) == 0.0) {
|
||||
discard;
|
||||
}
|
||||
gl_FragData[0].a = 0.0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
float bayerDither() {
|
||||
const float bayer[16] = float[16](
|
||||
0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0,
|
||||
12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0,
|
||||
3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0,
|
||||
15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0
|
||||
);
|
||||
|
||||
int x = int(mod(gl_FragCoord.x, 4.0));
|
||||
int y = int(mod(gl_FragCoord.y, 4.0));
|
||||
int index = x + y * 4;
|
||||
|
||||
return bayer[index];
|
||||
}
|
||||
@@ -769,6 +769,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
// #define PLANET_CURVATURE
|
||||
#define CURVATURE_AMOUNT 1.0 // [-10.0 -9.0 -8.0 -7.0 -6.0 -5.0 -4.0 -3.0 -2.0 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0]
|
||||
|
||||
#define DH_CHUNK_FADING
|
||||
// #define OLD_INDIRECT_SSS
|
||||
|
||||
///////////////////////////////////////////
|
||||
|
||||
@@ -339,7 +339,7 @@ SHADER_VERSION_LABEL <empty> \
|
||||
screen.Mod_support = [DISTANT_HORIZONS_SETTINGS] [PHYSICS_MOD_OCEAN]
|
||||
|
||||
screen.DISTANT_HORIZONS_SETTINGS.columns = 1
|
||||
screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE <empty> DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_TAA_JITTER DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF <empty> DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution <empty> TOGGLE_VL_FOG VOLUMETRIC_CLOUDS
|
||||
screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_CHUNK_FADING <empty> DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_TAA_JITTER DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF <empty> DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution <empty> TOGGLE_VL_FOG VOLUMETRIC_CLOUDS
|
||||
|
||||
|
||||
######## MISC SETTINGS
|
||||
|
||||
Reference in New Issue
Block a user