diff options
| author | Dave Parks <davep@lindenlab.com> | 2023-02-03 19:45:31 -0600 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2023-02-03 19:45:31 -0600 | 
| commit | 1c2410b8af62254e96d60b2ae2e411d4756215e4 (patch) | |
| tree | c702253a1458a34dfa4149717948a3413dc017f7 /indra/newview/app_settings/shaders/class2 | |
| parent | eb341f856cb55155cce5e6749cef44707badb137 (diff) | |
SL-19148 Decruft followthrough -- decruft shader tree and some remaining forward rendering code.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
8 files changed, 0 insertions, 1137 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl deleted file mode 100644 index 563c5f562b..0000000000 --- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl +++ /dev/null @@ -1,62 +0,0 @@ -/**  - * @file eyeballV.glsl - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -uniform mat3 normal_matrix; -uniform mat4 texture_matrix0; -uniform mat4 modelview_matrix; -uniform mat4 modelview_projection_matrix; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec3 normal; -ATTRIBUTE vec2 texcoord0; - -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; - - -vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor); -void calcAtmospherics(vec3 inPositionEye); - -void main() -{ -	//transform vertex -	vec3 pos = (modelview_matrix * vec4(position.xyz, 1.0)).xyz; -	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -		 -	vec3 norm = normalize(normal_matrix * normal); - -	calcAtmospherics(pos.xyz); -	 -	// vec4 specular = specularColor; -	vec4 specular = vec4(1.0); -	vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular); -			 -	vertex_color = color; -	 - -} - diff --git a/indra/newview/app_settings/shaders/class2/deferred/indirect.glsl b/indra/newview/app_settings/shaders/class2/deferred/indirect.glsl deleted file mode 100644 index 67b98e0fb1..0000000000 --- a/indra/newview/app_settings/shaders/class2/deferred/indirect.glsl +++ /dev/null @@ -1,32 +0,0 @@ -/**  - * @file class2/deferred/indirect.glsl - * - * $LicenseInfo:firstyear=2018&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen); - -vec3 getIndirect(vec3 ambient, vec3 norm, vec4 pos, vec2 pos_screen) -{ -    return ambient * calcAmbientOcclusion(pos, norm, pos_screen); -} - diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl deleted file mode 100644 index ba419e7a65..0000000000 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ /dev/null @@ -1,298 +0,0 @@ -/**  - * @file multiSpotLightF.glsl - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  -#extension GL_ARB_texture_rectangle : enable -#extension GL_ARB_shader_texture_lod : enable - -/*[EXTRA_CODE_HERE]*/ - -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -uniform sampler2D diffuseRect; -uniform sampler2D specularRect; -uniform sampler2D depthMap; -uniform sampler2D normalMap; -uniform samplerCube environmentMap; -uniform sampler2D lightMap; -uniform sampler2D noiseMap; -uniform sampler2D projectionMap; -uniform sampler2D lightFunc; - -uniform mat4 proj_mat; //screen space to light space -uniform float proj_near; //near clip for projection -uniform vec3 proj_p; //plane projection is emitting from (in screen space) -uniform vec3 proj_n; -uniform float proj_focus; //distance from plane to begin blurring -uniform float proj_lod;  //(number of mips in proj map) -uniform float proj_range; //range between near clip and far clip plane of projection -uniform float proj_ambient_lod; -uniform float proj_ambiance; -uniform float near_clip; -uniform float far_clip; - -uniform vec3 proj_origin; //origin of projection to be used for angular attenuation -uniform float sun_wash; -uniform int proj_shadow_idx; -uniform float shadow_fade; - -uniform vec3 center; -uniform float size; -uniform vec3 color; -uniform float falloff; - -VARYING vec4 vary_fragcoord; -uniform vec2 screen_res; - -uniform mat4 inv_proj; - -vec3 srgb_to_linear(vec3 cs); -vec3 getNorm(vec2 pos_screen); - -vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) -{ -    vec4 ret = texture2DLod(projectionMap, tc, lod); -    ret.rgb = srgb_to_linear(ret.rgb); -    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -     -    float det = min(lod/(proj_lod*0.5), 1.0); -     -    float d = min(dist.x, dist.y); -     -    d *= min(1, d * (proj_lod - lod)); -     -    float edge = 0.25*det; -     -    ret *= clamp(d/edge, 0.0, 1.0); -     -    return ret; -} - -vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) -{ -    vec4 ret = texture2DLod(projectionMap, tc, lod); -    ret.rgb = srgb_to_linear(ret.rgb); - -    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -     -    float det = min(lod/(proj_lod*0.5), 1.0); -     -    float d = min(dist.x, dist.y); -     -    float edge = 0.25*det; -         -    ret *= clamp(d/edge, 0.0, 1.0); -     -    return ret; -} - -vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) -{ -    vec4 ret = texture2DLod(projectionMap, tc, lod); -    ret.rgb = srgb_to_linear(ret.rgb); - -    vec2 dist = tc-vec2(0.5); -     -    float d = dot(dist,dist); -         -    ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); -     -    return ret; -} - -vec4 getPosition(vec2 pos_screen); - -void main()  -{ - -    vec3 col = vec3(0,0,0); - -#if defined(LOCAL_LIGHT_KILL) -    discard; -#else -    vec4 frag = vary_fragcoord; -    frag.xyz /= frag.w; -    frag.xyz = frag.xyz*0.5+0.5; -     -    vec3 pos = getPosition(frag.xy).xyz; -    vec3 lv = center.xyz-pos.xyz; -    float dist = length(lv); - -    if (dist >= size) -    { -        discard; -    } -    dist /= size; - -    float shadow = 1.0; -     -    if (proj_shadow_idx >= 0) -    { -        vec4 shd = texture2D(lightMap, frag.xy); -        shadow = (proj_shadow_idx==0)?shd.b:shd.a; -        shadow += shadow_fade; -        shadow = clamp(shadow, 0.0, 1.0);         -    } -     -    vec3 norm = texture2D(normalMap, frag.xy).xyz; -     -    float envIntensity = norm.z; - -    norm = getNorm(frag.xy); -     -    norm = normalize(norm); -    float l_dist = -dot(lv, proj_n); -     -    vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); -    if (proj_tc.z < 0.0) -    { -        discard; -    } -     -    proj_tc.xyz /= proj_tc.w; -     -    float fa = falloff+1.0; -    float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0); -    dist_atten *= dist_atten; -    dist_atten *= 2.0; -    if (dist_atten <= 0.0) -    { -        discard; -    } -     -    lv = proj_origin-pos.xyz; -    lv = normalize(lv); -    float da = dot(norm, lv); -         -    vec3 diff_tex = texture2D(diffuseRect, frag.xy).rgb; -  -    vec4 spec = texture2D(specularRect, frag.xy); - -    vec3 dlit = vec3(0, 0, 0); - -    float noise = texture2D(noiseMap, frag.xy).b; -    if (proj_tc.z > 0.0 && -        proj_tc.x < 1.0 && -        proj_tc.y < 1.0 && -        proj_tc.x > 0.0 && -        proj_tc.y > 0.0) -    { -        float amb_da = proj_ambiance; -        float lit = 0.0; - -        if (da > 0.0) -        { -            lit = da * dist_atten * noise; - -            float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); -            float lod = diff * proj_lod; -             -            vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); -         -            dlit = color.rgb * plcol.rgb * plcol.a; -             -            col = dlit*lit*diff_tex*shadow; - -            // unshadowed for consistency between forward and deferred? -            amb_da += (da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; -        } -         -        //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); -        vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); - -        // use unshadowed for consistency between forward and deferred? -        amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; -        amb_da *= dist_atten * noise; -        amb_da = min(amb_da, 1.0-lit); - -        col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; -    } -     - -    if (spec.a > 0.0) -    { -        vec3 npos = -normalize(pos); -        dlit *= min(da*6.0, 1.0) * dist_atten; - -        //vec3 ref = dot(pos+lv, norm); -        vec3 h = normalize(lv+npos); -        float nh = dot(norm, h); -        float nv = dot(norm, npos); -        float vh = dot(npos, h); -        float sa = nh; -        float fres = pow(1 - dot(h, npos), 5)*0.4+0.5; - -        float gtdenom = 2 * nh; -        float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); -                                 -        if (nh > 0.0) -        { -            float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da); -            vec3 speccol = dlit*scol*spec.rgb*shadow; -            speccol = clamp(speccol, vec3(0), vec3(1)); -            col += speccol; -        } -    }    - -    if (envIntensity > 0.0) -    { -        vec3 ref = reflect(normalize(pos), norm); -         -        //project from point pos in direction ref to plane proj_p, proj_n -        vec3 pdelta = proj_p-pos; -        float ds = dot(ref, proj_n); -         -        if (ds < 0.0) -        { -            vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; -             -            vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); - -            if (stc.z > 0.0) -            { -                stc /= stc.w; -                                 -                if (stc.x < 1.0 && -                    stc.y < 1.0 && -                    stc.x > 0.0 && -                    stc.y > 0.0) -                { -                    col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity; -                } -            } -        } -    } -#endif - -    //not sure why, but this line prevents MATBUG-194 -    col = max(col, vec3(0.0)); - -    //output linear -    frag_color.rgb = col; -    frag_color.a = 0.0; -} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl deleted file mode 100644 index fab227f5a4..0000000000 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ /dev/null @@ -1,159 +0,0 @@ -/** - * @file class2/deferred/softenLightF.glsl - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#extension GL_ARB_texture_rectangle : enable -#extension GL_ARB_shader_texture_lod : enable - -/*[EXTRA_CODE_HERE]*/ - -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -uniform sampler2D diffuseRect; -uniform sampler2D specularRect; -uniform sampler2D normalMap; -uniform sampler2D lightMap; -uniform sampler2D depthMap; -uniform samplerCube   environmentMap; -uniform sampler2D     lightFunc; - -uniform float blur_size; -uniform float blur_fidelity; - -// Inputs -uniform mat3 env_mat; - -uniform vec3 sun_dir; -uniform vec3 moon_dir; -uniform int  sun_up_factor; -VARYING vec2 vary_fragcoord; - -uniform mat4 inv_proj; -uniform vec2 screen_res; - -vec3 getNorm(vec2 pos_screen); -vec4 getPositionWithDepth(vec2 pos_screen, float depth); -float getDepth(vec2 pos_screen); - -void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao); -float getAmbientClamp(); -vec3  atmosFragLighting(vec3 l, vec3 additive, vec3 atten); -vec3  scaleSoftClipFrag(vec3 l); -vec3  fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten); -vec3  fullbrightScaleSoftClip(vec3 light); - -vec3 linear_to_srgb(vec3 c); -vec3 srgb_to_linear(vec3 c); - -#ifdef WATER_FOG -vec4 applyWaterFogView(vec3 pos, vec4 color); -#endif - -void main() -{ -    vec2  tc           = vary_fragcoord.xy; -    float depth        = getDepth(tc.xy); -    vec4  pos          = getPositionWithDepth(tc, depth); -    vec4  norm         = texture2D(normalMap, tc); -    float envIntensity = norm.z; -    norm.xyz           = getNorm(tc); - -    vec3  light_dir   = (sun_up_factor == 1) ? sun_dir : moon_dir; -    float da          = clamp(dot(norm.xyz, light_dir.xyz), 0.0, 1.0); -    float light_gamma = 1.0 / 1.3; -    da                = pow(da, light_gamma); - -    vec4 diffuse     = texture2D(diffuseRect, tc); -         diffuse.rgb = linear_to_srgb(diffuse.rgb); // SL-14035 -    vec4 spec        = texture2D(specularRect, vary_fragcoord.xy); - -    vec2 scol_ambocc = texture2D(lightMap, vary_fragcoord.xy).rg; -    scol_ambocc      = pow(scol_ambocc, vec2(light_gamma)); -    float scol       = max(scol_ambocc.r, diffuse.a); -    float ambocc     = scol_ambocc.g; - -    vec3  color = vec3(0); -    float bloom = 0.0; - -    vec3 sunlit; -    vec3 amblit; -    vec3 additive; -    vec3 atten; -    calcAtmosphericVars(pos.xyz, light_dir, ambocc, sunlit, amblit, additive, atten, true); - -    color.rgb = amblit; - -    float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); -    ambient *= 0.5; -    ambient *= ambient; -    ambient = (1.0 - ambient); -    color.rgb *= ambient; - -    vec3 sun_contrib = min(da, scol) * sunlit; -    color.rgb += sun_contrib; -    color.rgb *= diffuse.rgb; - -    vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - -    if (spec.a > 0.0)  // specular reflection -    { -        float sa        = dot(refnormpersp, light_dir.xyz); -        vec3  dumbshiny = sunlit * scol * (texture2D(lightFunc, vec2(sa, spec.a)).r); - -        // add the two types of shiny together -        vec3 spec_contrib = dumbshiny * spec.rgb; -        bloom             = dot(spec_contrib, spec_contrib) / 6; -        color.rgb += spec_contrib; -    } - -    color.rgb = mix(color.rgb, diffuse.rgb, diffuse.a); - -    if (envIntensity > 0.0) -    {  // add environmentmap -        vec3 env_vec         = env_mat * refnormpersp; -        vec3 reflected_color = textureCube(environmentMap, env_vec).rgb; -        color                = mix(color.rgb, reflected_color, envIntensity); -    } - -    if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS)) -    { -        color = mix(atmosFragLighting(color, additive, atten), fullbrightAtmosTransportFrag(color, additive, atten), diffuse.a); -        color = mix(scaleSoftClipFrag(color), fullbrightScaleSoftClip(color), diffuse.a); -    } - -#ifdef WATER_FOG -    vec4 fogged = applyWaterFogView(pos.xyz, vec4(color, bloom)); -    color       = fogged.rgb; -    bloom       = fogged.a; -#endif - -    // convert to linear as fullscreen lights need to sum in linear colorspace -    // and will be gamma (re)corrected downstream... -    frag_color.rgb = pos.xyz;// srgb_to_linear(color.rgb); -    frag_color.a   = bloom; -} diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl deleted file mode 100644 index e6a627fbf7..0000000000 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ /dev/null @@ -1,292 +0,0 @@ -/**  - * @file spotLightF.glsl - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  -#extension GL_ARB_texture_rectangle : enable -#extension GL_ARB_shader_texture_lod : enable - -/*[EXTRA_CODE_HERE]*/ - -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -uniform sampler2D diffuseRect; -uniform sampler2D specularRect; -uniform sampler2D depthMap; -uniform sampler2D normalMap; -uniform samplerCube environmentMap; -uniform sampler2D lightMap; -uniform sampler2D noiseMap; -uniform sampler2D projectionMap; -uniform sampler2D lightFunc; - -uniform mat4 proj_mat; //screen space to light space -uniform float proj_near; //near clip for projection -uniform vec3 proj_p; //plane projection is emitting from (in screen space) -uniform vec3 proj_n; -uniform float proj_focus; //distance from plane to begin blurring -uniform float proj_lod;  //(number of mips in proj map) -uniform float proj_range; //range between near clip and far clip plane of projection -uniform float proj_ambient_lod; -uniform float proj_ambiance; -uniform float near_clip; -uniform float far_clip; - -uniform vec3 proj_origin; //origin of projection to be used for angular attenuation -uniform float sun_wash; -uniform int proj_shadow_idx; -uniform float shadow_fade; - -uniform float size; -uniform vec3 color; -uniform float falloff; - -VARYING vec3 trans_center; -VARYING vec4 vary_fragcoord; -uniform vec2 screen_res; - -uniform mat4 inv_proj; - -vec3 getNorm(vec2 pos_screen); -vec3 srgb_to_linear(vec3 c); - -vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) -{ -	vec4 ret = texture2DLod(projectionMap, tc, lod); -	ret.rgb = srgb_to_linear(ret.rgb); - -	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -	 -	float det = min(lod/(proj_lod*0.5), 1.0); -	 -	float d = min(dist.x, dist.y); -     -    d *= min(1, d * (proj_lod - lod)); -	 -	float edge = 0.25*det; -     -	ret *= clamp(d/edge, 0.0, 1.0); -	 -	return ret; -} - -vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) -{ -	vec4 ret = texture2DLod(projectionMap, tc, lod); -	ret.rgb = srgb_to_linear(ret.rgb); -	 -	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -	 -	float det = min(lod/(proj_lod*0.5), 1.0); -	 -	float d = min(dist.x, dist.y); -	 -	float edge = 0.25*det; -		 -	ret *= clamp(d/edge, 0.0, 1.0); -	 -	return ret; -} - -vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) -{ -	vec4 ret = texture2DLod(projectionMap, tc, lod); -	ret.rgb = srgb_to_linear(ret.rgb); -	 -	vec2 dist = tc-vec2(0.5); -	 -	float d = dot(dist,dist); -		 -	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); -	 -	return ret; -} - -vec4 getPosition(vec2 pos_screen); - -void main()  -{ -	vec3 col = vec3(0,0,0); - -#if defined(LOCAL_LIGHT_KILL) -    discard; -#else -	vec4 frag = vary_fragcoord; -	frag.xyz /= frag.w; -	frag.xyz = frag.xyz*0.5+0.5; -	 -	vec3 pos = getPosition(frag.xy).xyz; -	vec3 lv = trans_center.xyz-pos.xyz; -	float dist = length(lv); - -    if (dist >= size) -    { -        discard; -    } -	dist /= size; - -	float shadow = 1.0; -	 -	if (proj_shadow_idx >= 0) -	{ -		vec4 shd = texture2D(lightMap, frag.xy); -        shadow = (proj_shadow_idx == 0) ? shd.b : shd.a; -        shadow += shadow_fade; -		shadow = clamp(shadow, 0.0, 1.0);         -	} -	 -	vec3 norm = texture2D(normalMap, frag.xy).xyz; -	float envIntensity = norm.z; -	norm = getNorm(frag.xy); -	 -	norm = normalize(norm); -	float l_dist = -dot(lv, proj_n); -	 -	vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); -	if (proj_tc.z < 0.0) -	{ -		discard; -	} -	 -	proj_tc.xyz /= proj_tc.w; -	 -	float fa = falloff+1.0; -	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0); -	dist_atten *= dist_atten; -	dist_atten *= 2.0; - -	if (dist_atten <= 0.0) -	{ -		discard; -	} -	 -	lv = proj_origin-pos.xyz; -	lv = normalize(lv); -	float da = dot(norm, lv); -		 -	vec3 diff_tex = texture2D(diffuseRect, frag.xy).rgb; -	vec4 spec = texture2D(specularRect, frag.xy); -	vec3 dlit = vec3(0, 0, 0); - -	float noise = texture2D(noiseMap, frag.xy).b; -	if (proj_tc.z > 0.0 && -		proj_tc.x < 1.0 && -		proj_tc.y < 1.0 && -		proj_tc.x > 0.0 && -		proj_tc.y > 0.0) -	{ -		float amb_da = proj_ambiance; -		float lit = 0.0; -		 -		if (da > 0.0) -		{ -			lit = da * dist_atten * noise; - -			float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); -			float lod = diff * proj_lod; -			 -			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); -		 -			dlit = color.rgb * plcol.rgb * plcol.a; -		 -			col = dlit*lit*diff_tex*shadow; - -			amb_da += (da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; -		} -		 -		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); -		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); -							 -		amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; -		amb_da *= dist_atten * noise; -		amb_da = min(amb_da, 1.0-lit); -	 -	    col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; -	} - -	if (spec.a > 0.0) -	{ -		dlit *= min(da*6.0, 1.0) * dist_atten; -		vec3 npos = -normalize(pos); - -		//vec3 ref = dot(pos+lv, norm); -		vec3 h = normalize(lv+npos); -		float nh = dot(norm, h); -		float nv = dot(norm, npos); -		float vh = dot(npos, h); -		float sa = nh; -		float fres = pow(1 - dot(h, npos), 5)*0.4+0.5; - -		float gtdenom = 2 * nh; -		float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); -								 -		if (nh > 0.0) -		{ -			float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da); -			vec3 speccol = dlit*scol*spec.rgb*shadow; -            speccol = clamp(speccol, vec3(0), vec3(1)); -			col += speccol; -		} -	}	 - -	if (envIntensity > 0.0) -	{ -		vec3 ref = reflect(normalize(pos), norm); -		 -		//project from point pos in direction ref to plane proj_p, proj_n -		vec3 pdelta = proj_p-pos; -		float ds = dot(ref, proj_n); -		 -		if (ds < 0.0) -		{ -			vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; -			 -			vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); - -			if (stc.z > 0.0) -			{ -				stc /= stc.w; -								 -				if (stc.x < 1.0 && -					stc.y < 1.0 && -					stc.x > 0.0 && -					stc.y > 0.0) -				{ -					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity; -				} -			} -		} -	} -#endif -	 -	//not sure why, but this line prevents MATBUG-194 -	col = max(col, vec3(0.0)); - -	//output linear colors as gamma correction happens down stream -	frag_color.rgb = col;	 -	frag_color.a = 0.0; -} diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl deleted file mode 100644 index d485379a56..0000000000 --- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl +++ /dev/null @@ -1,170 +0,0 @@ -/**  - * @file waterF.glsl - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -//class2/environment/waterF.glsl - -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -vec3 scaleSoftClip(vec3 inColor); -vec3 atmosTransport(vec3 inColor); - -uniform sampler2D bumpMap; -uniform sampler2D bumpMap2; -uniform float     blend_factor; -uniform sampler2D screenTex; -uniform sampler2D refTex; - -uniform float sunAngle; -uniform float sunAngle2; -uniform vec3 lightDir; -uniform vec3 specular; -uniform float lightExp; -uniform float refScale; -uniform float kd; -uniform vec2 screenRes; -uniform vec3 normScale; -uniform float fresnelScale; -uniform float fresnelOffset; -uniform float blurMultiplier; - - -//bigWave is (refCoord.w, view.w); -VARYING vec4 refCoord; -VARYING vec4 littleWave; -VARYING vec4 view; - -vec3 BlendNormal(vec3 bump1, vec3 bump2) -{ -    vec3 n = mix(bump1, bump2, blend_factor); -    return n; -} - - -void main()  -{ -	vec4 color; -	 -	float dist = length(view.xy); -	 -	//normalize view vector -	vec3 viewVec = normalize(view.xyz); -	 -	//get wave normals -    vec2 bigwave = vec2(refCoord.w, view.w); -    vec3 wave1_a = texture2D(bumpMap, bigwave      ).xyz*2.0-1.0; -    vec3 wave2_a = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0; -    vec3 wave3_a = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0; - - -    vec3 wave1_b = texture2D(bumpMap2, bigwave      ).xyz*2.0-1.0; -    vec3 wave2_b = texture2D(bumpMap2, littleWave.xy).xyz*2.0-1.0; -    vec3 wave3_b = texture2D(bumpMap2, littleWave.zw).xyz*2.0-1.0; - -    vec3 wave1 = BlendNormal(wave1_a, wave1_b); -    vec3 wave2 = BlendNormal(wave2_a, wave2_b); -    vec3 wave3 = BlendNormal(wave3_a, wave3_b); - - -	//get base fresnel components	 -	 -	vec3 df = vec3( -					dot(viewVec, wave1), -					dot(viewVec, (wave2 + wave3) * 0.5), -					dot(viewVec, wave3) -				 ) * fresnelScale + fresnelOffset; -	df *= df; -		     -	vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5; -	 -	float dist2 = dist; -	dist = max(dist, 5.0); -	 -	float dmod = sqrt(dist); -	 -	vec2 dmod_scale = vec2(dmod*dmod, dmod); -	 -	//get reflected color -	vec2 refdistort1 = wave1.xy*normScale.x; -	vec2 refvec1 = distort+refdistort1/dmod_scale; -	vec4 refcol1 = texture2D(refTex, refvec1); -	 -	vec2 refdistort2 = wave2.xy*normScale.y; -	vec2 refvec2 = distort+refdistort2/dmod_scale; -	vec4 refcol2 = texture2D(refTex, refvec2); -	 -	vec2 refdistort3 = wave3.xy*normScale.z; -	vec2 refvec3 = distort+refdistort3/dmod_scale; -	vec4 refcol3 = texture2D(refTex, refvec3); - -	vec4 refcol = refcol1 + refcol2 + refcol3; -	float df1 = df.x + df.y + df.z; -	refcol *= df1 * 0.333; -	 -	vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5; -	 -	wavef.z *= max(-viewVec.z, 0.1); -	wavef = normalize(wavef); -	 -	float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset; -	 -	vec2 refdistort4 = wavef.xy*0.125; -	refdistort4.y -= abs(refdistort4.y); -	vec2 refvec4 = distort+refdistort4/dmod; -	float dweight = min(dist2*blurMultiplier, 1.0); -	vec4 baseCol = texture2D(refTex, refvec4); -	refcol = mix(baseCol*df2, refcol, dweight); - -	//get specular component -	float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0); -		 -	//harden specular -	spec = pow(spec, 128.0); - -	//figure out distortion vector (ripply)    -	vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0); -		 -	vec4 fb = texture2D(screenTex, distort2); -	 -	//mix with reflection -	// Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug -	color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999); -	color.rgb += spec * specular; -	 -	color.rgb = atmosTransport(color.rgb); -	color.rgb = scaleSoftClip(color.rgb); -	color.a = spec * sunAngle2; -	 -	frag_color = color; - -#if defined(WATER_EDGE) -    gl_FragDepth = 0.9999847f; -#endif -	 -} - diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl deleted file mode 100644 index 89d9d1bde3..0000000000 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @file class2\lighting\sumLightsSpecularV.glsl - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2005, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  - - -float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da); -vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol); - -vec3 atmosAmbient(); -vec3 atmosAffectDirectionalLight(float lightIntensity); -vec3 atmosGetDiffuseSunlightColor(); -vec3 scaleDownLight(vec3 light); - -uniform vec4 light_position[8]; -uniform vec4 light_attenuation[8];  -uniform vec3 light_diffuse[8]; - -vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor) -{ -	vec4 col = vec4(0.0, 0.0, 0.0, color.a); -	 -	vec3 view = normalize(pos); -	 -	/// collect all the specular values from each calcXXXLightSpecular() function -	vec4 specularSum = vec4(0.0); -	 -	// Collect normal lights (need to be divided by two, as we later multiply by 2) -	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0); -	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb);  -	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb);  -	col.rgb = scaleDownLight(col.rgb); -						 -	// Add windlight lights -	col.rgb += atmosAmbient(); -	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz, atmosGetDiffuseSunlightColor(), 1.0)); - -	col.rgb = min(col.rgb*color.rgb, 1.0); -	specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0); -	col.rgb += specularColor.rgb; - -	return col;	 -} diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl deleted file mode 100644 index 30ca88afd2..0000000000 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @file class2\lighting\sumLightsV.glsl - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2005, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  -float calcDirectionalLight(vec3 n, vec3 l); -float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight); - -vec3 atmosAffectDirectionalLight(float lightIntensity); -vec3 scaleDownLight(vec3 light); - -uniform vec4 light_position[8]; -uniform vec3 light_direction[8]; -uniform vec3 light_attenuation[8];  -uniform vec3 light_diffuse[8]; - -vec4 sumLights(vec3 pos, vec3 norm, vec4 color) -{ -	vec4 col = vec4(0.0, 0.0, 0.0, color.a); -	 -	// Collect normal lights (need to be divided by two, as we later multiply by 2) -	col.rgb += light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz); -	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z); -	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z); -	col.rgb = scaleDownLight(col.rgb); - -#if defined(LOCAL_LIGHT_KILL) -    col.rgb = vec3(0); -i#endif - -	// Add windlight lights -	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz)); - -#if !defined(SUNLIGHT_KILL) -	col.rgb = min(col.rgb*color.rgb, 1.0); -#endif - -	return col;	 -} - | 
