diff --git a/shaders/block.properties b/shaders/block.properties index 1079bd6..5064f1d 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -19,11 +19,11 @@ block.16=vine ## ground waving ## add a newline to organize for modded blocks -block.60=minecraft:sunflower:half=upper minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:kelp minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:tall_seagrass:half=upper minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush +block.60 = minecraft:sunflower:half=upper minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:kelp minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:tall_seagrass:half=upper minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush # removed: sapling(s) ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. -block.61=minecraft:fern conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:large_fern_1 conquest:large_fern_2 conquest:large_fern_3 conquest:thick_fern conquest:tall_grass conquest:large_fern conquest:sunflower conquest:tall_lilac conquest:peony conquest:rose_bush conquest:tall_seagrass conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom +block.61=minecraft:fern conquest:red_clover_flowers conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:large_fern_1 conquest:large_fern_2 conquest:large_fern_3 conquest:thick_fern conquest:tall_grass conquest:large_fern conquest:sunflower conquest:tall_lilac conquest:peony conquest:rose_bush conquest:tall_seagrass conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom ## air waving ## add a newline to organize for modded blocks diff --git a/shaders/dimensions/DH_solid.fsh b/shaders/dimensions/DH_solid.fsh index f03e900..e07763b 100644 --- a/shaders/dimensions/DH_solid.fsh +++ b/shaders/dimensions/DH_solid.fsh @@ -101,7 +101,7 @@ uniform vec3 cameraPosition; void main() { #ifdef DH_OVERDRAW_PREVENTION - if(clamp(1.0-length(pos.xyz)/max(far - 32.0,0.0),0.0,1.0) > 0.0 ){ + if(clamp(1.0-length(pos.xyz)/max(far - 32.0,32.0),0.0,1.0) > 0.0 ){ discard; return; } diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 07eadff..12271ad 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -385,7 +385,6 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef SNELLS_WINDOW if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); #endif - #ifdef SCREENSPACE_REFLECTIONS vec3 rtPos = rayTrace(reflectedVector, viewPos, interleaved_gradientNoise(), fresnel, false); if (rtPos.z < 1.){ @@ -398,13 +397,13 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) } } #endif - #ifdef WATER_BACKGROUND_SPECULAR BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 30.0; #endif #ifdef WATER_SUN_SPECULAR - SunReflection = Direct_lighting * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0); + SunReflection = Direct_lighting * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); #endif + Reflections_Final = mix(BackgroundReflection, Reflections.rgb, Reflections.a) * fresnel; Reflections_Final += SunReflection; diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index ad75706..4f2dab2 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -456,6 +456,7 @@ void main() { gl_FragData[3].a = 0.0; #endif + //////////////////////////////// //////////////////////////////// //////////////////////////////// NORMAL //////////////////////////////// //////////////////////////////// //////////////////////////////// diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index 93aa7d2..e8ae91e 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -752,10 +752,6 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef DAMAGE_BLOCK_EFFECT #undef WATER_REFLECTIONS #endif - - // #ifdef ENTITIES - // #undef WATER_BACKGROUND_SPECULAR - // #endif #ifndef OVERWORLD_SHADER #undef WATER_SUN_SPECULAR @@ -889,7 +885,6 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifndef HAND gl_FragData[1] = vec4(Albedo, MATERIALS); #endif - #if DEBUG_VIEW == debug_DH_WATER_BLENDING if(gl_FragCoord.x*texelSize.x < 0.47) gl_FragData[0] = vec4(0.0); #endif diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index ebc63ae..a1d342c 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -116,7 +116,7 @@ void main() { // translucent entities #if defined ENTITIES || defined BLOCKENTITIES mat = 0.9; - if (entityId == 1403) mat = 0.8; + if (entityId == 1803) mat = 0.8; #endif // translucent blocks diff --git a/shaders/dimensions/composite.fsh b/shaders/dimensions/composite.fsh index 9cb9989..d5d3221 100644 --- a/shaders/dimensions/composite.fsh +++ b/shaders/dimensions/composite.fsh @@ -8,9 +8,10 @@ flat varying vec2 TAA_Offset; uniform sampler2D depthtex0; uniform sampler2D depthtex1; + #ifdef DISTANT_HORIZONS -uniform sampler2D dhDepthTex; -uniform sampler2D dhDepthTex1; + uniform sampler2D dhDepthTex; + uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex1; @@ -23,11 +24,11 @@ uniform sampler2D colortex15; // Noise uniform sampler2D shadow; -// #ifdef TRANSLUCENT_COLORED_SHADOWS +#ifdef TRANSLUCENT_COLORED_SHADOWS uniform sampler2D shadowcolor0; uniform sampler2D shadowtex0; uniform sampler2D shadowtex1; -// #endif +#endif uniform sampler2D noisetex; diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index b41d049..69b7200 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -170,6 +170,7 @@ vec3 toScreenSpace(vec3 p) { #ifdef OVERWORLD_SHADER #include "/lib/volumetricClouds.glsl" + // #define CLOUDS_INTERSECT_TERRAIN #endif #include "/lib/util.glsl" @@ -360,120 +361,6 @@ vec3 worldToView(vec3 worldPos) { return pos.xyz; } -void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient){ - inColor *= exp(-rayLength * waterCoefs); //No need to take the integrated value - int spCount = rayMarchSampleCount; - vec3 start = toShadowSpaceProjected(rayStart); - vec3 end = toShadowSpaceProjected(rayEnd); - vec3 dV = (end-start); - //limit ray length at 32 blocks for performance and reducing integration error - //you can't see above this anyway - float maxZ = min(rayLength,12.0)/(1e-8+rayLength); - dV *= maxZ; - vec3 dVWorld = -mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; - rayLength *= maxZ; - estEndDepth *= maxZ; - estSunDepth *= maxZ; - vec3 absorbance = vec3(1.0); - vec3 vL = vec3(0.0); - - - float expFactor = 11.0; - vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; - for (int i=0;i 0) gl_FragData[0].rgb = vec3(1.0) * Shadows; ////// DEBUG VIEW STUFF @@ -1403,24 +1281,5 @@ void main() { // if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * filteredShadow.z;//exp(-7*(1-clamp(1.0 - filteredShadow.x,0.0,1.0))); #endif - - // float shadew = clamp(1.0 - filteredShadow.y/1,0.0,1.0); - // // if(hideGUI == 1) - - - - #ifdef CLOUDS_INFRONT_OF_WORLD - gl_FragData[1] = texture2D(colortex2, texcoord); - if(heightRelativeToClouds > 0.0 && !hand){ - gl_FragData[0].rgb = gl_FragData[0].rgb * Clouds.a + Clouds.rgb; - gl_FragData[1].a = gl_FragData[1].a*Clouds.a*Clouds.a*Clouds.a; - } - -/* DRAWBUFFERS:32 */ - - #else - -/* DRAWBUFFERS:3 */ - - #endif + /* DRAWBUFFERS:3 */ } \ No newline at end of file diff --git a/shaders/dimensions/composite3.fsh b/shaders/dimensions/composite3.fsh index 0188fac..2789cfb 100644 --- a/shaders/dimensions/composite3.fsh +++ b/shaders/dimensions/composite3.fsh @@ -217,6 +217,7 @@ void ApplyDistortion(inout vec2 Texcoord, vec2 TangentNormals, float lineardista uniform int dhRenderDistance; uniform float eyeAltitude; + void main() { /* DRAWBUFFERS:73 */ diff --git a/shaders/dimensions/deferred.fsh b/shaders/dimensions/deferred.fsh index 1f0cbe5..5fcb675 100644 --- a/shaders/dimensions/deferred.fsh +++ b/shaders/dimensions/deferred.fsh @@ -236,7 +236,6 @@ if (gl_FragCoord.x > pixelPos6.x && gl_FragCoord.x < pixelPos6.x + 1 && gl_FragC #else if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) gl_FragData[0] = vec4(lightSourceColor,1.0); - if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) gl_FragData[0] = vec4(sunColor,1.0); if (gl_FragCoord.x > 9. && gl_FragCoord.x < 10. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) diff --git a/shaders/dimensions/deferred2.fsh b/shaders/dimensions/deferred2.fsh index f2bf6ad..f7a41a5 100644 --- a/shaders/dimensions/deferred2.fsh +++ b/shaders/dimensions/deferred2.fsh @@ -19,7 +19,10 @@ uniform sampler2D depthtex0; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; +uniform sampler2D dhDepthTex1; #endif + + // uniform sampler2D colortex4; uniform sampler2D noisetex; @@ -37,8 +40,12 @@ uniform mat4 gbufferModelViewInverse; uniform vec3 cameraPosition; uniform mat4 gbufferModelView; +uniform mat4 gbufferProjection; // flat varying vec2 TAA_Offset; +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + vec3 toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); @@ -47,6 +54,9 @@ vec3 toScreenSpace(vec3 p) { return fragposition.xyz / fragposition.w; } + +#include "/lib/DistantHorizons_projections.glsl" + float R2_dither(){ #ifdef TAA vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; @@ -86,14 +96,26 @@ float blueNoise(){ vec3 normVec (vec3 vec){ return vec*inversesqrt(dot(vec,vec)); } +uniform float far; + + +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} + +uniform int dhRenderDistance; #include "/lib/lightning_stuff.glsl" - #include "/lib/sky_gradient.glsl" + +// #define CLOUDS_INTERSECT_TERRAIN #include "/lib/volumetricClouds.glsl" #include "/lib/res_params.glsl" + + + //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -105,12 +127,22 @@ void main() { /* DRAWBUFFERS:0 */ #if defined OVERWORLD_SHADER && defined VOLUMETRIC_CLOUDS vec2 halfResTC = vec2(floor(gl_FragCoord.xy)/CLOUDS_QUALITY/RENDER_SCALE+0.5+offsets[framemod8]*CLOUDS_QUALITY*RENDER_SCALE*0.5); + + float depth = texture2D(depthtex0, halfResTC*texelSize).x; + + + // vec3 viewPos = toScreenSpace(vec3(halfResTC*texelSize, depth)); + + #ifdef DISTANT_HORIZONS + float DH_depth = texture2D(dhDepthTex, halfResTC*texelSize).x; + vec3 viewPos = toScreenSpace_DH(halfResTC*texelSize, depth, DH_depth); + #else + vec3 viewPos = toScreenSpace(vec3(halfResTC*texelSize, depth)); + #endif - vec3 viewPos = toScreenSpace(vec3(halfResTC*texelSize,1.0)); vec4 VolumetricClouds = renderClouds(viewPos, vec2(R2_dither(), blueNoise()), sunColor/80.0, averageSkyCol/30.0); - // gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); gl_FragData[0] = VolumetricClouds; #else gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index b5463e7..6a2eed7 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -155,14 +155,6 @@ void main() { applyGameplayEffects_FRAGMENT(FINAL_COLOR, texcoord, interleaved_gradientNoise()); // for making the fun, more fun - - - - - // float reprojectedBuffer = texture2D(colortex14, texcoord).a; - - // gl_FragColor.rgb = vec3(1.0) * reprojectedBuffer; - gl_FragColor.rgb = FINAL_COLOR; #if DEBUG_VIEW == debug_SHADOWMAP diff --git a/shaders/dimensions/fogBehindTranslucent_pass.fsh b/shaders/dimensions/fogBehindTranslucent_pass.fsh index 9cf8637..a197a76 100644 --- a/shaders/dimensions/fogBehindTranslucent_pass.fsh +++ b/shaders/dimensions/fogBehindTranslucent_pass.fsh @@ -24,6 +24,7 @@ uniform sampler2D colortex3; // uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D colortex7; +uniform sampler2D colortex11; uniform sampler2D colortex14; flat varying vec3 WsunVec; @@ -319,6 +320,15 @@ void main() { vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; + #ifdef BIOME_TINT_WATER + // yoink the biome tint written in this buffer for water only. + if(iswater){ + vec2 translucentdata = texture2D(colortex11,tc).gb; + vec3 wateralbedo = normalize(vec3(decodeVec2(translucentdata.x),decodeVec2(translucentdata.y).x)+0.00001) * 0.5 + 0.5; + scatterCoef = dirtAmount * wateralbedo / 3.14; + } + #endif + vec3 directLightColor = lightCol.rgb/80.0; vec3 indirectLightColor = averageSkyCol/30.0; vec3 indirectLightColor_dynamic = averageSkyCol_Clouds/30.0; @@ -350,9 +360,9 @@ void main() { - indirectLightColor_dynamic *= ambient_brightness * pow(1.0-pow(1.0-lightmap.y,0.5),3.0) ; - float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) ; - indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * TorchBrightness_autoAdjust * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) * 2.0; + // indirectLightColor_dynamic *= ambient_brightness * pow(1.0-pow(1.0-lightmap.y,0.5),3.0) ; + // float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) ; + // indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * TorchBrightness_autoAdjust * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) * 2.0; vec4 VolumetricFog2 = vec4(0,0,0,1); #ifdef OVERWORLD_SHADER diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 5e04f01..28bc904 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -251,7 +251,6 @@ float phaseg(float x, float g){ return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14; } - vec3 DoCloudLighting( float density, float densityFaded, @@ -263,12 +262,10 @@ vec3 DoCloudLighting( vec3 sunScatter, vec3 sunMultiScatter, float distantfog - ){ float powder = 1.0 - exp(-5.0 * sqrt(density)); - // float powder = 1.0 - exp(-15.0 * density); - vec3 indirectLight = skyLightCol * mix(1.0, 1.0 - exp(-1.0 * (1.0-sqrt(density))), skyScatter*skyScatter*skyScatter * distantfog); + vec3 indirectLight = skyLightCol * mix(1.0, 1.0 - exp(-1.0 * (1.0-sqrt(density))), skyScatter*skyScatter*skyScatter * distantfog); vec3 directLight = sunMultiScatter * exp(-3.0 * sunShadows) * powder + sunScatter * exp(-10.0 * sunShadows); @@ -276,26 +273,6 @@ vec3 DoCloudLighting( // return directLight; return indirectLight + directLight; } -vec3 rodSample_CLOUD(vec2 Xi) -{ - float r = sqrt(1.0f - Xi.x*Xi.y); - float phi = 2 * 3.14159265359 * Xi.y; - - return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; -} -vec2 R2_samples_CLOUD(int n){ - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha * n); -} -vec3 cosineHemisphereSample_CLOUD(vec2 Xi){ - float theta = 2.0 * 3.14159265359 * Xi.y; - - float r = sqrt(Xi.x); - float x = r * cos(theta); - float y = r * sin(theta); - - return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); -} vec4 renderLayer( int layer, @@ -317,14 +294,32 @@ vec4 renderLayer( in vec3 sunMultiScatter, in vec3 indirectScatter, in float distantfog, - bool notVisible + bool notVisible, + vec3 FragPosition ){ vec3 COLOR = vec3(0.0); float TOTAL_EXTINCTION = 1.0; + bool IntersecTerrain = false; + + #ifdef CLOUDS_INTERSECT_TERRAIN + // thank you emin for this world intersection thing + #if defined DISTANT_HORIZONS + float maxdist = dhRenderDistance + 16 * 64; + #else + float maxdist = far + 16*5; + #endif + + float lViewPosM = length(FragPosition) < maxdist ? length(FragPosition) - 1.0 : 100000000.0; + #endif if(layer == 2){ - if(notVisible) return vec4(COLOR, TOTAL_EXTINCTION); + + #ifdef CLOUDS_INTERSECT_TERRAIN + IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; + #endif + + if(notVisible || IntersecTerrain) return vec4(COLOR, TOTAL_EXTINCTION); float signFlip = mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)); @@ -361,9 +356,12 @@ if(layer == 2){ #endif for(int i = 0; i < QUALITY; i++) { - + + #ifdef CLOUDS_INTERSECT_TERRAIN + IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; + #endif /// avoid overdraw - if(notVisible) break; + if(notVisible || IntersecTerrain) break; // do not sample anything unless within a clouds bounding box if(clamp(rayProgress.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayProgress.y - minHeight,0.0,1.0) > 0.0){ @@ -404,6 +402,7 @@ if(layer == 2){ } } rayProgress += dV_view; + } return vec4(COLOR, TOTAL_EXTINCTION); } @@ -537,7 +536,7 @@ vec4 renderClouds( #endif #ifdef CloudLayer0 - vec4 layer0 = renderLayer(0, layer0_start, dV_view, mult, Dither.x, maxIT_clouds, MinHeight, MaxHeight, dV_Sun, LAYER0_DENSITY, SkyColor, directScattering, directMultiScattering, sunIndirectScattering, distantfog, false); + vec4 layer0 = renderLayer(0, layer0_start, dV_view, mult, Dither.x, maxIT_clouds, MinHeight, MaxHeight, dV_Sun, LAYER0_DENSITY, SkyColor, directScattering, directMultiScattering* 2.0, sunIndirectScattering, distantfog, false, FragPosition); total_extinction *= layer0.a; // stop overdraw. @@ -549,7 +548,7 @@ vec4 renderClouds( #endif #ifdef CloudLayer1 - vec4 layer1 = renderLayer(1, layer1_start, dV_view, mult, Dither.x, maxIT_clouds, MinHeight1, MaxHeight1, dV_Sun, LAYER1_DENSITY, SkyColor, directScattering, directMultiScattering,sunIndirectScattering, distantfog, notVisible); + vec4 layer1 = renderLayer(1, layer1_start, dV_view, mult, Dither.x, maxIT_clouds, MinHeight1, MaxHeight1, dV_Sun, LAYER1_DENSITY, SkyColor, directScattering, directMultiScattering* 2.0, sunIndirectScattering, distantfog, notVisible, FragPosition); total_extinction *= layer1.a; // stop overdraw. @@ -557,7 +556,7 @@ vec4 renderClouds( #endif #ifdef CloudLayer2 - vec4 layer2 = renderLayer(2, layer2_start, dV_view_Alto, mult_alto, Dither.x, maxIT_clouds, Height2, Height2, dV_Sun, LAYER2_DENSITY, SkyColor, directScattering, directMultiScattering,sunIndirectScattering, distantfog, altoNotVisible); + vec4 layer2 = renderLayer(2, layer2_start, dV_view_Alto, mult_alto, Dither.x, maxIT_clouds, Height2, Height2, dV_Sun, LAYER2_DENSITY, SkyColor, directScattering, directMultiScattering,sunIndirectScattering, distantfog, altoNotVisible, FragPosition); total_extinction *= layer2.a; #endif diff --git a/shaders/shaders.properties b/shaders/shaders.properties index c90658d..ed8d82a 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -36,13 +36,15 @@ iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUS #ifdef TRANSLUCENT_ENTITIES separateEntityDraws = true #else - separateEntityDraws = true + separateEntityDraws = false #endif program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES + program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES + program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES @@ -322,7 +324,7 @@ BLISS_SHADERS \ ######## MISC SETTINGS - screen.Misc_Settings = DEBUG_VIEW [the_orb] display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH LIT_PARTICLE_BRIGHTNESS PLANET_GROUND_BRIGHTNESS BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER CLOUDS_INFRONT_OF_WORLD SELECT_BOX DENOISE_SSS_AND_SSAO WATER_CAUSTICS_BRIGHTNESS HYPER_DETAILED_WAVES OLD_BLOOM DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX + screen.Misc_Settings = DEBUG_VIEW [the_orb] display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH LIT_PARTICLE_BRIGHTNESS PLANET_GROUND_BRIGHTNESS BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER CLOUDS_INTERSECT_TERRAIN SELECT_BOX WATER_CAUSTICS_BRIGHTNESS HYPER_DETAILED_WAVES OLD_BLOOM DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX screen.the_orb.columns = 1 screen.the_orb = THE_ORB ORB_X ORB_Y ORB_Z ORB_ColMult ORB_R ORB_G ORB_B