diff --git a/shaders/gbuffers_all_solid.fsh b/shaders/gbuffers_all_solid.fsh index eaff540..c3e225a 100644 --- a/shaders/gbuffers_all_solid.fsh +++ b/shaders/gbuffers_all_solid.fsh @@ -272,6 +272,7 @@ void main() { float Puddle_shape = 0.; #ifndef ENTITIES + #ifndef HAND #ifdef WORLD #ifdef Puddles Puddle_shape = (1.0 - clamp(exp(-15 * pow(texture2D(noisetex, worldpos.xz * (0.015 * Puddle_Size) ).b ,5)),0,1)) * lightmap ; @@ -280,6 +281,7 @@ void main() { #endif #endif #endif + #endif #ifdef POM @@ -492,7 +494,7 @@ void main() { vec4 SpecularTex = texture2D(specular, lmtexcoord.xy, bias); SpecularTex.r = max(SpecularTex.r, Puddle_shape); - SpecularTex.g = max(SpecularTex.g, Puddle_shape*0.04); + SpecularTex.g = max(SpecularTex.g, Puddle_shape*0.02); // #ifdef ENTITIES // if(NameTags == 1) SpecularTex = vec4(0.0); diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl index a4d3a0a..0d9ae7e 100644 --- a/shaders/lib/specular.glsl +++ b/shaders/lib/specular.glsl @@ -271,17 +271,14 @@ void MaterialReflections( vec3 F = mix_vec3(f0, vec3(1.0), fresnel); vec3 rayContrib = F; - float VisibilityFactor = rayContrib.x * pow(1.0-roughness,3.0); + float rayContribLuma = luma(rayContrib); + + float VisibilityFactor = rayContribLuma * pow(1.0-roughness,3.0); bool hasReflections = Roughness_Threshold == 1.0 ? true : (f0.y * (1.0 - roughness * Roughness_Threshold)) > 0.01; - float hasReflections2 = max(1.0 - roughness*1.75,0.0); - - // // if (!hasReflections) Outdoors = 0.0; - - // SunReflection = directlighting * SunGGX(normal, -np3, sunPos, roughness, f0.y) / 5.0; SunReflection = directlighting * GGX(normal, -np3, sunPos, roughness, vec3(f0.y)); -// + if (hasReflections) { // Skip sky reflection and SSR if its just not very visible anyway #ifdef Sky_reflection SkyReflection = ( skyCloudsFromTex(L, colortex4).rgb / 150. ) * 5.; @@ -289,7 +286,7 @@ void MaterialReflections( #ifdef Screen_Space_Reflections - float rayQuality = mix_float(reflection_quality,6.0,luma(rayContrib)); // Scale quality with ray contribution + float rayQuality = mix_float(reflection_quality,6.0,rayContribLuma); // Scale quality with ray contribution @@ -331,7 +328,7 @@ void MaterialReflections( // put reflections onto the scene #ifdef Rough_reflections - Output = hand ? mix_vec3(Output, Reflections.rgb, VisibilityFactor) : mix_vec3(Output, Reflections.rgb, luma(rayContrib)); + Output = hand ? mix_vec3(Output, Reflections.rgb, VisibilityFactor) : mix_vec3(Output, Reflections.rgb, rayContribLuma * (1.0 - roughness * Roughness_Threshold)); #else Output = mix_vec3(Output, Reflections.rgb, VisibilityFactor); #endif diff --git a/shaders/lib/volumetricFog.glsl b/shaders/lib/volumetricFog.glsl index 4f99f08..5b8a025 100644 --- a/shaders/lib/volumetricFog.glsl +++ b/shaders/lib/volumetricFog.glsl @@ -136,7 +136,7 @@ vec4 getVolumetricRays( vec3 AtmosphericFog = skyCol0 * (rL+m) ; // extra fog effects - vec3 rainRays = (sunColor*sh) * (rayL*phaseg(SdotV,0.5)) * clamp(pow(WsunVec.y,5)*2,0.0,1) * rainStrength * noPuddleAreas * RainFog_amount; + vec3 rainRays = (sunColor*sh) * (rayL*phaseg(SdotV,0.5)) * clamp(pow(WsunVec.y,5)*2,0.0,1) * rainStrength * noPuddleAreas * RainFog_amount * 0.5; vec3 CaveRays = (sunColor*sh) * phaseg(SdotV,0.7) * 0.001 * (1.0 - max(eyeBrightnessSmooth.y,0)/240.); vec3 vL0 = (DirectLight + AmbientLight + AtmosphericFog + rainRays ) * max(eyeBrightnessSmooth.y,0)/240. ;