From b6a9088f46e8ee2f55a33e4b5bdbf1169e4524bd Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Tue, 21 Dec 2021 23:18:15 -0500 Subject: [PATCH] I forgot alpha blend materials --- .../shaders/class1/deferred/materialF.glsl | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 46af11ebaa9..80bf7c1cc8c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -286,7 +286,6 @@ void main() shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen); #endif - spec = final_specular; vec4 diffuse = final_color; float envIntensity = final_normal.z; @@ -334,7 +333,9 @@ void main() float glare = 0.0; - if (spec.a > 0.0) // specular reflection + final_specular.rgb = srgb_to_linear(final_specular.rgb); // SL-14035 + + if (final_specular.a > 0.0) // specular reflection { /* // Reverting this specular calculation to previous 'dumbshiny' version - DJH 6/17/2020 // Preserving the refactored version as a comment for potential reconsideration, @@ -342,7 +343,7 @@ void main() // // If you're reading this in 2021+, feel free to obliterate. */ -#if 0 +#if 1 vec3 npos = -normalize(pos.xyz); //vec3 ref = dot(pos+lv, norm); @@ -358,18 +359,22 @@ void main() if (nh > 0.0) { - float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); - vec3 sp = sun_contrib*scol / 6.0f; + float scol = fres*texture2D(lightFunc, vec2(nh, final_specular.a)).r*gt / (nh*da); + vec3 sp = sun_contrib*scol / 6.0; sp = clamp(sp, vec3(0), vec3(1)); - bloom += dot(sp, sp) / 4.0; - color += sp * spec.rgb; + glare += dot(sp, sp) / 4.0; + + vec3 spec_contrib = sp * final_specular.rgb; + color.rgb = srgb_to_linear(color.rgb); + color.rgb += spec_contrib; + color.rgb = linear_to_srgb(color.rgb); } #else float sa = dot(refnormpersp, sun_dir.xyz); - vec3 dumbshiny = sunlit * shadow * (texture2D(lightFunc, vec2(sa, spec.a)).r); + vec3 dumbshiny = sunlit * shadow * (texture2D(lightFunc, vec2(sa, final_specular.a)).r); // add the two types of shiny together - vec3 spec_contrib = dumbshiny * spec.rgb; + vec3 spec_contrib = dumbshiny * final_specular.rgb; bloom = dot(spec_contrib, spec_contrib) / 6; glare = max(spec_contrib.r, spec_contrib.g); @@ -406,8 +411,6 @@ void main() vec3 light = vec3(0, 0, 0); - final_specular.rgb = srgb_to_linear(final_specular.rgb); // SL-14035 - #define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w ); LIGHT_LOOP(1) -- GitLab