diff options
Diffstat (limited to 'indra/newview/app_settings')
| -rw-r--r-- | indra/newview/app_settings/key_bindings.xml | 1 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 22 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/materialF.glsl | 176 | 
3 files changed, 194 insertions, 5 deletions
diff --git a/indra/newview/app_settings/key_bindings.xml b/indra/newview/app_settings/key_bindings.xml index 55babc88bc..8d5349550f 100644 --- a/indra/newview/app_settings/key_bindings.xml +++ b/indra/newview/app_settings/key_bindings.xml @@ -85,7 +85,6 @@      <binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>      <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/> -    <binding key="" mask="NONE" mouse="LMB" command="walk_to"/>      <binding key="" mask="NONE" mouse="LMB" command="script_trigger_lbutton"/>    </third_person> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 4171b52938..88365e6651 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1371,7 +1371,7 @@        <key>Type</key>        <string>F32</string>        <key>Value</key> -      <real>20.0</real> +      <real>40.0</real>      </map>      <key>DiskCacheDirName</key>      <map> @@ -6842,6 +6842,9 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> +      <!-- *HACK: On first run, set this to 0 for new users, +           otherwise the default is 1 to maintain consistent experience +           for existing users. Hardcoded in llnetmap.cpp -->        <integer>1</integer>      </map>      <key>MiniMapScale</key> @@ -6855,6 +6858,17 @@        <key>Value</key>        <real>128.0</real>      </map> +    <key>MiniMapShowPropertyLines</key> +    <map> +      <key>Comment</key> +      <string>Whether or not to show parcel borders on the MiniMap.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <real>1</real> +    </map>      <key>MouseSensitivity</key>      <map>        <key>Comment</key> @@ -7133,13 +7147,13 @@      <key>NonvisibleObjectsInMemoryTime</key>      <map>        <key>Comment</key> -      <string>Number of frames non-visible objects stay in memory before being removed. 0 means never to remove.</string> +      <string>Number of frames non-visible objects stay in memory before being removed. 0 means max.</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key>        <string>U32</string>        <key>Value</key> -			<integer>300</integer> +			<integer>64</integer>      </map>      <key>NoPreload</key>      <map> @@ -11101,7 +11115,7 @@        <key>Type</key>        <string>U32</string>        <key>Value</key> -      <integer>1024</integer> +      <integer>2048</integer>      </map>      <key>SceneLoadLowMemoryBound</key>      <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index beadec434c..70ae615d46 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -37,8 +37,184 @@ out vec4 frag_color;  out vec4 frag_data[4];  #endif +#ifdef HAS_SUN_SHADOW +float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen); +#endif + +uniform samplerCube environmentMap; +uniform sampler2D     lightFunc; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +uniform mat3 env_mat; + +uniform vec3 sun_dir; +uniform vec3 moon_dir; +VARYING vec2 vary_fragcoord; + +VARYING vec3 vary_position; + +uniform mat4 proj_mat; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +uniform vec4 light_position[8]; +uniform vec3 light_direction[8]; +uniform vec4 light_attenuation[8]; +uniform vec3 light_diffuse[8]; + +float getAmbientClamp(); + +vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare, float ambiance) +{ +    // SL-14895 inverted attenuation work-around +    // This routine is tweaked to match deferred lighting, but previously used an inverted la value. To reconstruct +    // that previous value now that the inversion is corrected, we reverse the calculations in LLPipeline::setupHWLights() +    // to recover the `adjusted_radius` value previously being sent as la. +    float falloff_factor = (12.0 * fa) - 9.0; +    float inverted_la = falloff_factor / la; +    // Yes, it makes me want to cry as well. DJH +     +    vec3 col = vec3(0); + +    //get light vector +    vec3 lv = lp.xyz - v; + +    //get distance +    float dist = length(lv); +    float da = 1.0; + +    dist /= inverted_la; + +    if (dist > 0.0 && inverted_la > 0.0) +    { +        //normalize light vector +        lv = normalize(lv); + +        //distance attenuation +        float dist_atten = clamp(1.0 - (dist - 1.0*(1.0 - fa)) / fa, 0.0, 1.0); +        dist_atten *= dist_atten; +        dist_atten *= 2.0f; + +        if (dist_atten <= 0.0) +        { +            return col; +        } + +        // spotlight coefficient. +        float spot = max(dot(-ln, lv), is_pointlight); +        da *= spot*spot; // GL_SPOT_EXPONENT=2 + +        //angular attenuation +        da *= dot(n, lv); + +        float lit = 0.0f; + +        float amb_da = ambiance; +        if (da >= 0) +        { +            lit = max(da * dist_atten, 0.0); +            col = lit * light_col * diffuse; +            amb_da += (da*0.5 + 0.5) * ambiance; +        } +        amb_da += (da*da*0.5 + 0.5) * ambiance; +        amb_da *= dist_atten; +        amb_da = min(amb_da, 1.0f - lit); + +        // SL-10969 need to see why these are blown out +        //col.rgb += amb_da * light_col * diffuse; + +        if (spec.a > 0.0) +        { +            //vec3 ref = dot(pos+lv, norm); +            vec3 h = normalize(lv + npos); +            float nh = dot(n, h); +            float nv = dot(n, 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 = lit*scol*light_col.rgb*spec.rgb; +                speccol = clamp(speccol, vec3(0), vec3(1)); +                col += speccol; + +                float cur_glare = max(speccol.r, speccol.g); +                cur_glare = max(cur_glare, speccol.b); +                glare = max(glare, speccol.r); +                glare += max(cur_glare, 0.0); +            } +        } +    } + +    return max(col, vec3(0.0, 0.0, 0.0)); +} + +#else +#ifdef DEFINE_GL_FRAGCOLOR +out vec4 frag_data[3]; +#else +#define frag_data gl_FragData +#endif +#endif + +uniform sampler2D diffuseMap;  //always in sRGB space + +#ifdef HAS_NORMAL_MAP +uniform sampler2D bumpMap; +#endif + +#ifdef HAS_SPECULAR_MAP +uniform sampler2D specularMap; + +VARYING vec2 vary_texcoord2; +#endif + +uniform float env_intensity; +uniform vec4 specular_color;  // specular color RGB and specular exponent (glossiness) in alpha + +#ifdef HAS_ALPHA_MASK +uniform float minimum_alpha; +#endif + +#ifdef HAS_NORMAL_MAP +VARYING vec3 vary_mat0; +VARYING vec3 vary_mat1; +VARYING vec3 vary_mat2; +VARYING vec2 vary_texcoord1; +#else +VARYING vec3 vary_normal; +#endif + +VARYING vec4 vertex_color; +VARYING vec2 vary_texcoord0; + +vec2 encode_normal(vec3 n); +  void main()  { +    vec2 pos_screen = vary_texcoord0.xy; + +    vec4 diffcol = texture2D(diffuseMap, vary_texcoord0.xy); +	diffcol.rgb *= vertex_color.rgb; + +#ifdef HAS_ALPHA_MASK +#if DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND +    if (diffcol.a*vertex_color.a < minimum_alpha) +#else +    if (diffcol.a < minimum_alpha) +#endif +    { +        discard; +    } +#endif +  #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)      frag_color = vec4(1,0,0,0.5);  #else  | 
