diff options
Diffstat (limited to 'indra/newview/app_settings')
38 files changed, 496 insertions, 454 deletions
| diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 408609b8cd..e16a5c7e76 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -209,6 +209,14 @@        <string>NoAudio</string>      </map> +    <key>noninteractive</key> +    <map> +      <key>desc</key> +      <string>Run in semi-headless mode where only login and logout need to work.</string> +      <key>map-to</key> +      <string>NonInteractive</string> +    </map> +      <key>nonotifications</key>      <map>        <key>desc</key> diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index 662f7e39dd..f64937f443 100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml @@ -6,8 +6,6 @@  	<RenderAvatarLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderAvatarPhysicsLODFactor value="0.9"/> -	<!--NO SHADERS--> -	<RenderAvatarVP value="TRUE"/>  	<!--Short Range-->  	<RenderFarClip value="128"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index 0ee8e7a059..b31a040d67 100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml @@ -6,8 +6,6 @@  	<RenderAvatarLODFactor value="0.5"/>  	<!--Default for now-->  	<RenderAvatarPhysicsLODFactor value="0.0"/> -	<!--NO SHADERS--> -	<RenderAvatarVP value="FALSE"/>  	<!--Short Range-->  	<RenderFarClip value="64"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index c89e060307..9c2c17fc60 100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml @@ -6,8 +6,6 @@  	<RenderAvatarLODFactor value="0.5"/>  	<!--Default for now-->  	<RenderAvatarPhysicsLODFactor value="0.75"/> -	<!--NO SHADERS--> -	<RenderAvatarVP value="TRUE"/>  	<!--Short Range-->  	<RenderFarClip value="96"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 775fcf3754..16d8cd9f06 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -812,17 +812,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>FramePerSecondLimit</key> -    <map> -      <key>Comment</key> -      <string>Controls upper limit of frames per second</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>U32</string> -      <key>Value</key> -      <integer>120</integer> -    </map>      <key>BackgroundYieldTime</key>      <map>        <key>Comment</key> @@ -3409,10 +3398,10 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>DisableVerticalSync</key> +    <key>RenderVSyncEnable</key>      <map>        <key>Comment</key> -      <string>Update frames as fast as possible (FALSE = update frames between display scans)</string> +      <string>Update frames between display scans (FALSE = Update frames as fast as possible).</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -3585,7 +3574,7 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>DoubleClickTeleport</key> +    <key>DoubleClickTeleport</key>       <map>        <key>Comment</key>        <string>Enable double-click to teleport where allowed (afects minimap and people panel)</string> @@ -3915,6 +3904,17 @@          <key>Value</key>          <integer>1</integer>      </map> +    <key>MainWorkTime</key> +    <map> +        <key>Comment</key> +        <string>Max time per frame devoted to mainloop work queue (in milliseconds)</string> +        <key>Persist</key> +        <integer>1</integer> +        <key>Type</key> +        <string>F32</string> +        <key>Value</key> +        <real>0.1</real> +    </map>      <key>QueueInventoryFetchTimeout</key>      <map>          <key>Comment</key> @@ -6470,7 +6470,7 @@      <key>MaxHeapSize</key>      <map>        <key>Comment</key> -      <string>Maximum heap size (GB)</string> +      <string>Maximum heap size on 32-bit builds (GB)</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -6478,6 +6478,17 @@        <key>Value</key>        <real>1.6</real>      </map> +    <key>MaxHeapSize64</key> +    <map> +      <key>Comment</key> +      <string>Maximum heap size on 64-bit builds (GB)</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>F32</string> +      <key>Value</key> +      <real>16.0</real> +    </map>      <key>MaxPersistentNotifications</key>      <map>        <key>Comment</key> @@ -7074,6 +7085,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>NonInteractive</key> +    <map> +      <key>Comment</key> +      <string>Run in a semi-headless mode where only logging in and logging out needs to work.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +	  <integer>0</integer> +    </map>      <key>NonvisibleObjectsInMemoryTime</key>      <map>        <key>Comment</key> @@ -8088,9 +8110,9 @@      <string>Color4</string>      <key>Value</key>      <array> -      <real>1.0</real> -      <real>1.0</real> -      <real>1.0</real> +      <real>0.33</real> +      <real>0.33</real> +      <real>0.33</real>        <real>1.0</real>      </array>    </map> @@ -8704,28 +8726,6 @@      </array>    </map> -    <key>RenderAlphaBatchFullbrights</key> -    <map> -      <key>Comment</key> -      <string>Render fullbright alpha content more efficiently, but with possible visual differences from prev viewers.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>0</integer> -    </map> -    <key>RenderAlphaBatchEmissives</key> -    <map> -      <key>Comment</key> -      <string>Render emissive alpha content more efficiently, but with possible visual differences from prev viewers.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map>      <key>RenderAnisotropic</key>      <map>        <key>Comment</key> @@ -8906,17 +8906,6 @@        <key>Value</key>        <real>1.0</real>      </map> -    <key>RenderAvatarVP</key> -    <map> -      <key>Comment</key> -      <string>Use vertex programs to perform hardware skinning of avatar</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map>    <key>RenderCompressTextures</key>    <map>      <key>Comment</key> @@ -8928,7 +8917,7 @@      <key>Value</key>      <integer>0</integer>    </map> -    <key>RenderHiDPI</key> +   <key>RenderHiDPI</key>    <map>      <key>Comment</key>      <string>Enable support for HiDPI displays, like Retina (MacOS X ONLY, requires restart)</string> @@ -9886,7 +9875,7 @@      <key>Value</key>      <real>2.2</real>    </map> -    <key>RenderGLCoreProfile</key> +    <key>RenderGLContextCoreProfile</key>      <map>        <key>Comment</key>        <string>Don't use a compatibility profile OpenGL context.  Requires restart.  Basic shaders MUST be enabled.</string> @@ -9897,6 +9886,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>RenderGLMultiThreaded</key> +    <map> +      <key>Comment</key> +      <string>Allow OpenGL to use multiple render contexts (reduces frame stutters from loading textures, doesn't play nice with Intel drivers).</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>RenderGlow</key>      <map>        <key>Comment</key> @@ -10200,7 +10200,7 @@        <key>Type</key>        <string>S32</string>        <key>Value</key> -      <integer>512</integer> +      <integer>4096</integer>      </map>      <key>RenderNameFadeDuration</key>      <map> @@ -11650,7 +11650,7 @@              <string>Boolean</string>          <key>Value</key>              <integer>0</integer> -    </map> +    </map>       <key>NearbyListShowMap</key>      <map>        <key>Comment</key> @@ -12766,6 +12766,20 @@        <key>Value</key>        <string />      </map> +    <key>ThreadPoolSizes</key> +    <map> +      <key>Comment</key> +      <string>Map of size overrides for specific thread pools.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>LLSD</string> +      <key>Value</key> +      <map> +        <key>General</key> +        <integer>4</integer> +      </map> +    </map>      <key>ThrottleBandwidthKBPS</key>      <map>        <key>Comment</key> @@ -14208,17 +14222,6 @@      <key>Value</key>      <integer>1</integer>    </map> -  <key>RenderSynchronousOcclusion</key> -  <map> -    <key>Comment</key> -    <string>Don't let occlusion queries get more than one frame behind (block until they complete).</string> -    <key>Persist</key> -    <integer>1</integer> -    <key>Type</key> -    <string>Boolean</string> -    <key>Value</key> -    <integer>1</integer> -  </map>      <key>RenderDelayVBUpdate</key>      <map>        <key>Comment</key> @@ -16736,8 +16739,8 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>1</integer> -  </map> +      <integer>1</integer>         +    </map>    <key>360CaptureUseInterestListCap</key>    <map>      <key>Comment</key> @@ -16817,14 +16820,25 @@    </map>    <key>ResetUIScaleOnFirstRun</key>    <map> -  <key>Comment</key> -  <string>Resets the UI scale factor on first run due to changed display scaling behavior</string> -  <key>Persist</key> -  <integer>1</integer> -  <key>Type</key> -  <string>Boolean</string> -  <key>Value</key> -  <integer>1</integer> +    <key>Comment</key> +    <string>Resets the UI scale factor on first run due to changed display scaling behavior</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>1</integer>         +  </map> +  <key>UpdateAppWindowTitleBar</key> +  <map> +    <key>Comment</key> +    <string>Updates the application window title bar with brief information about user/location</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer>    </map>    <key>MFAHash</key>    <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index dc484317e9..02b2daf0ac 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -56,6 +56,10 @@ VARYING vec3 vary_norm;  VARYING vec4 vertex_color; //vertex color should be treated as sRGB  #endif +#ifdef HAS_ALPHA_MASK +uniform float minimum_alpha; +#endif +  uniform mat4 proj_mat;  uniform mat4 inv_proj;  uniform vec2 screen_res; @@ -86,6 +90,14 @@ float getAmbientClamp();  vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, 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 @@ -95,7 +107,7 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec  	float dist = length(lv);  	float da = 1.0; -    /*if (dist > la) +    /*if (dist > inverted_la)      {          return col;      } @@ -113,9 +125,9 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec          return col;      }*/ -	if (dist > 0.0 && la > 0.0) +	if (dist > 0.0 && inverted_la > 0.0)  	{ -        dist /= la; +        dist /= inverted_la;  		//normalize light vector  		lv = normalize(lv); @@ -183,7 +195,6 @@ void main()  #endif      vec4 diffuse_srgb = diffuse_tap; -    vec4 diffuse_linear = vec4(srgb_to_linear(diffuse_srgb.rgb), diffuse_srgb.a);  #ifdef FOR_IMPOSTOR      vec4 color; @@ -192,25 +203,37 @@ void main()      float final_alpha = diffuse_srgb.a * vertex_color.a;      diffuse_srgb.rgb *= vertex_color.rgb; -    diffuse_linear.rgb = srgb_to_linear(diffuse_srgb.rgb);       // Insure we don't pollute depth with invis pixels in impostor rendering      // -    if (final_alpha < 0.01) +    if (final_alpha < minimum_alpha)      {          discard;      } -#else -     + +    color.rgb = diffuse_srgb.rgb; +    color.a = final_alpha; + +#else // FOR_IMPOSTOR + +    vec4 diffuse_linear = vec4(srgb_to_linear(diffuse_srgb.rgb), diffuse_srgb.a); +      vec3 light_dir = (sun_up_factor == 1) ? sun_dir: moon_dir;      float final_alpha = diffuse_linear.a;  #ifdef USE_VERTEX_COLOR      final_alpha *= vertex_color.a; + +    if (final_alpha < minimum_alpha) +    { // TODO: figure out how to get invisible faces out of  +        // render batches without breaking glow +        discard; +    } +      diffuse_srgb.rgb *= vertex_color.rgb;      diffuse_linear.rgb = srgb_to_linear(diffuse_srgb.rgb); -#endif +#endif // USE_VERTEX_COLOR      vec3 sunlit;      vec3 amblit; @@ -242,13 +265,13 @@ void main()  #if !defined(AMBIENT_KILL)      color.rgb = amblit;      color.rgb *= ambient; -#endif +#endif // !defined(AMBIENT_KILL)  vec3 post_ambient = color.rgb;  #if !defined(SUNLIGHT_KILL)      color.rgb += sun_contrib; -#endif +#endif // !defined(SUNLIGHT_KILL)  vec3 post_sunlight = color.rgb; @@ -280,7 +303,7 @@ vec3 post_atmo = color.rgb;      // sum local light contrib in linear colorspace  #if !defined(LOCAL_LIGHT_KILL)      color.rgb += light.rgb; -#endif +#endif // !defined(LOCAL_LIGHT_KILL)      // back to sRGB as we're going directly to the final RT post-deferred gamma correction      color.rgb = linear_to_srgb(color.rgb); @@ -299,8 +322,8 @@ vec3 post_atmo = color.rgb;      color = applyWaterFogView(pos.xyz, color);  #endif // WATER_FOG -#endif -     +#endif // #else // FOR_IMPOSTOR +      frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 506118d381..6a93bc2fd2 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -105,9 +105,9 @@ void main()  	vec4 vert = vec4(position.xyz, 1.0);  	pos = (modelview_matrix * vert);  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); -#endif +#endif //IS_AVATAR_SKIN -#endif +#endif // HAS_SKIN  #ifdef USE_INDEXED_TEX  	passTextureIndex(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowF.glsl index ef49b6f4e8..1b16e4eb09 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowF.glsl @@ -40,11 +40,11 @@ VARYING vec4 post_pos;  VARYING float pos_w;  VARYING float target_pos_x;  VARYING vec2 vary_texcoord0; -VARYING vec4 vertex_color; +uniform vec4 color;  void main()   { -	float alpha = texture2D(diffuseMap, vary_texcoord0.xy).a * vertex_color.a; +	float alpha = texture2D(diffuseMap, vary_texcoord0.xy).a * color.a;  	if (alpha < 0.05) // treat as totally transparent  	{ diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowV.glsl index d1d7ece6fe..1c5b142ebd 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaShadowV.glsl @@ -30,7 +30,6 @@ uniform float shadow_target_width;  mat4 getSkinnedTransform();  void passTextureIndex(); -ATTRIBUTE vec4 diffuse_color;  ATTRIBUTE vec3 position;  ATTRIBUTE vec3 normal;  ATTRIBUTE vec2 texcoord0; @@ -41,7 +40,6 @@ VARYING vec4 post_pos;  VARYING float pos_w;  VARYING float target_pos_x;  VARYING vec2 vary_texcoord0; -VARYING vec4 vertex_color;  void main()  { @@ -68,7 +66,6 @@ void main()  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vertex_color = diffuse_color;  #if !DEPTH_CLAMP  	post_pos = pos; diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl deleted file mode 100644 index 10144f3e16..0000000000 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl +++ /dev/null @@ -1,64 +0,0 @@ -/**  - * @file bumpV.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 mat4 projection_matrix; -uniform mat4 texture_matrix0; -uniform mat4 modelview_matrix; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec3 normal; -ATTRIBUTE vec2 texcoord0; -ATTRIBUTE vec4 tangent; - -VARYING vec3 vary_mat0; -VARYING vec3 vary_mat1; -VARYING vec3 vary_mat2; -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; - -mat4 getObjectSkinnedTransform(); - -void main() -{ -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	 -	mat4 mat = getObjectSkinnedTransform(); -	 -	mat = modelview_matrix * mat; -	 -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	 -	 -	vec3 n = normalize((mat * vec4(normal.xyz+position.xyz, 1.0)).xyz-pos.xyz); -	vec3 t = normalize((mat * vec4(tangent.xyz+position.xyz, 1.0)).xyz-pos.xyz); -	vec3 b = cross(n, t) * tangent.w; -	 -	vary_mat0 = vec3(t.x, b.x, n.x); -	vary_mat1 = vec3(t.y, b.y, n.y); -	vary_mat2 = vec3(t.z, b.z, n.z); -	 -	gl_Position = projection_matrix*vec4(pos, 1.0); -	vertex_color = diffuse_color; -} diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl index 9f9749394e..d90891aa20 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl @@ -39,16 +39,32 @@ VARYING vec3 vary_mat2;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +uniform mat4 modelview_matrix; +#endif +  void main()  {  	//transform vertex +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +	mat = modelview_matrix * mat; +	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; +	gl_Position = projection_matrix*vec4(pos, 1.0); + +	vec3 n = normalize((mat * vec4(normal.xyz+position.xyz, 1.0)).xyz-pos.xyz); +	vec3 t = normalize((mat * vec4(tangent.xyz+position.xyz, 1.0)).xyz-pos.xyz); +#else  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);  -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	  	vec3 n = normalize(normal_matrix * normal);  	vec3 t = normalize(normal_matrix * tangent.xyz); +#endif +  	vec3 b = cross(n, t) * tangent.w; -	 +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; +  	vary_mat0 = vec3(t.x, b.x, n.x);  	vary_mat1 = vec3(t.y, b.y, n.y);  	vary_mat2 = vec3(t.z, b.z, n.z); diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl index 3c026796c8..d64bcefade 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl @@ -39,14 +39,28 @@ VARYING vec2 vary_texcoord0;  void passTextureIndex(); +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +uniform mat4 modelview_matrix; +#endif +  void main()  { -	//transform vertex +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vec4(position.xyz, 1.0); +    gl_Position = projection_matrix * pos; +    vary_normal = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz); +#else  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);  +    vary_normal = normalize(normal_matrix * normal); +#endif +	  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  	passTextureIndex(); -	vary_normal = normalize(normal_matrix * normal); -	 +  	vertex_color = diffuse_color;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl index 5e4f08b017..08b1147ab0 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl @@ -40,15 +40,26 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif  void main()  {  	//transform vertex -	vec4 vert = vec4(position.xyz, 1.0); -	vec4 pos = (modelview_matrix * vert);  	passTextureIndex(); -	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; + +    vec4 pos = mat * vec4(position.xyz, 1.0); +    gl_Position = projection_matrix * pos; +#else +	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); +    vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0)); +#endif  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl index 8f6eb79668..3bd6b693fa 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl @@ -47,19 +47,32 @@ VARYING vec2 vary_texcoord0;  VARYING vec3 vary_texcoord1;  VARYING vec4 vary_position; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif +  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz,1.0);  	passTextureIndex(); + +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vert; +    vary_position = gl_Position = projection_matrix * pos; +	vec3 norm = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz); +#else  	vec4 pos = (modelview_matrix * vert);  	vary_position = gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); -	  	vec3 norm = normalize(normal_matrix * normal); +#endif  	vec3 ref = reflect(pos.xyz, -norm);  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz; +	vary_texcoord1 = (texture_matrix1 * vec4(ref,1.0)).xyz;  	calcAtmospherics(pos.xyz); diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index bdf3546aa5..e71636f2c9 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl @@ -45,15 +45,26 @@ VARYING vec3 vary_position;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz, 1.0); -	vec4 pos = (modelview_matrix * vert);  	passTextureIndex(); +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vert; +    gl_Position = projection_matrix * pos; +#else +	vec4 pos = (modelview_matrix * vert);  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); +#endif  #ifdef WATER_FOG  	vary_position = pos.xyz; diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index eb6e56e718..a58cc3d12d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl @@ -54,8 +54,7 @@ void main()  	vec4 norm = texture2D(normalMap,   vary_texcoord0.xy);  	vec4 spec = texture2D(specularMap, vary_texcoord0.xy); -	col.rgb = linear_to_srgb(col.rgb);  	frag_data[0] = vec4(col.rgb, 0.0);  	frag_data[1] = spec; -	frag_data[2] = vec4(norm.xy,0,0); +	frag_data[2] = norm;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index e1f7031af6..02d83925ea 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -91,6 +91,14 @@ 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 @@ -100,9 +108,9 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spe      float dist = length(lv);      float da = 1.0; -    dist /= la; +    dist /= inverted_la; -    if (dist > 0.0 && la > 0.0) +    if (dist > 0.0 && inverted_la > 0.0)      {          //normalize light vector          lv = normalize(lv); diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl index d0c06cd51f..7a941674b8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl @@ -43,18 +43,18 @@ uniform float norm_scale;  void main()  { -	float alpha = texture2D(alphaMap, vary_texcoord0).a; +	float c = texture2D(alphaMap, vary_texcoord0).r; -	vec3 right = vec3(norm_scale, 0, (texture2D(alphaMap, vary_texcoord0+vec2(stepX, 0)).a-alpha)*255); -	vec3 left = vec3(-norm_scale, 0, (texture2D(alphaMap, vary_texcoord0-vec2(stepX, 0)).a-alpha)*255); -	vec3 up = vec3(0, -norm_scale, (texture2D(alphaMap, vary_texcoord0-vec2(0, stepY)).a-alpha)*255); -	vec3 down = vec3(0, norm_scale, (texture2D(alphaMap, vary_texcoord0+vec2(0, stepY)).a-alpha)*255); +	vec3 right = vec3(norm_scale, 0, (texture2D(alphaMap, vary_texcoord0+vec2(stepX, 0)).r-c)*255); +	vec3 left = vec3(-norm_scale, 0, (texture2D(alphaMap, vary_texcoord0-vec2(stepX, 0)).r-c)*255); +	vec3 up = vec3(0, -norm_scale, (texture2D(alphaMap, vary_texcoord0-vec2(0, stepY)).r-c)*255); +	vec3 down = vec3(0, norm_scale, (texture2D(alphaMap, vary_texcoord0+vec2(0, stepY)).r-c)*255);  	vec3 norm = cross(right, down) + cross(down, left) + cross(left,up) + cross(up, right);  	norm = normalize(norm);  	norm *= 0.5;  	norm += 0.5;	 -	 -	frag_color = vec4(norm, alpha); + +	frag_color = vec4(norm, c);  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskSkinnedV.glsl index 2487110624..2b17aea75a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskSkinnedV.glsl @@ -1,8 +1,9 @@  /**  - * @file diffuseSkinnedV.glsl - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * @file shadowAlphaMaskSkinnedV.glsl + * + * $LicenseInfo:firstyear=2021&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. + * Copyright (C) 2011, 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 @@ -22,38 +23,48 @@   * $/LicenseInfo$   */ -uniform mat4 projection_matrix;  uniform mat4 texture_matrix0;  uniform mat4 modelview_matrix; +uniform mat4 projection_matrix; +uniform float shadow_target_width;  ATTRIBUTE vec3 position;  ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec3 normal;  ATTRIBUTE vec2 texcoord0; -VARYING vec3 vary_normal; +VARYING vec4 post_pos; +VARYING float target_pos_x;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +void passTextureIndex(); +  mat4 getObjectSkinnedTransform();  void main()  { -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -		 +	//transform vertex +	vec4 pre_pos = vec4(position.xyz, 1.0); +  	mat4 mat = getObjectSkinnedTransform();  	mat = modelview_matrix * mat; -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	vec4 norm = vec4(position.xyz, 1.0); -	norm.xyz += normal.xyz; -	norm.xyz = (mat*norm).xyz; -	norm.xyz = normalize(norm.xyz-pos.xyz); +	vec4 pos = mat * pre_pos; +	pos = projection_matrix * pos; -	vary_normal = norm.xyz; -			 -	vertex_color = diffuse_color; +	target_pos_x = 0.5 * (shadow_target_width - 1.0) * pos.x; + +	post_pos = pos; + +#if !defined(DEPTH_CLAMP) +	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); +#else +	gl_Position = pos; +#endif -	gl_Position = projection_matrix*vec4(pos, 1.0); +	passTextureIndex(); + +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; +	vertex_color = diffuse_color;  } diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowSkinnedV.glsl index df31b5a79f..bdf8e0854d 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowSkinnedV.glsl @@ -1,6 +1,7 @@  /**  - * @file simpleSkinnedV.glsl - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * @file shadowSkinnedV.glsl + * + * $LicenseInfo:firstyear=2021&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc.   *  @@ -22,44 +23,30 @@   * $/LicenseInfo$   */ -uniform mat4 texture_matrix0;  uniform mat4 modelview_matrix;  uniform mat4 projection_matrix;  ATTRIBUTE vec3 position; -ATTRIBUTE vec3 normal; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; +VARYING vec4 post_pos; - -vec4 calcLighting(vec3 pos, vec3 norm, vec4 color); -void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform();  void main()  {  	//transform vertex -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	  	mat4 mat = getObjectSkinnedTransform();  	mat = modelview_matrix * mat; -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	 -	vec4 norm = vec4(position.xyz, 1.0); -	norm.xyz += normal.xyz; -	norm.xyz = (mat*norm).xyz; -	norm.xyz = normalize(norm.xyz-pos.xyz); -		 -	calcAtmospherics(pos.xyz); +	vec4 pos = (mat*vec4(position.xyz, 1.0)); +	pos = projection_matrix*pos; + +	post_pos = pos; + +#if !defined(DEPTH_CLAMP) +	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); +#else +	gl_Position = pos; +#endif -	vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color); -	vertex_color = color; -	 -	gl_Position = projection_matrix*vec4(pos, 1.0); -	 -	  } diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowSkinnedV.glsl index 9064904191..d9ca6d3a46 100644 --- a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowSkinnedV.glsl @@ -1,7 +1,7 @@  /**  - * @file emissiveSkinnedV.glsl + * @file treeShadowV.glsl   * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ +  * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc.   *  @@ -23,34 +23,31 @@   * $/LicenseInfo$   */ -uniform mat4 projection_matrix;  uniform mat4 texture_matrix0;  uniform mat4 modelview_matrix; - +uniform mat4 projection_matrix; +   ATTRIBUTE vec3 position; -ATTRIBUTE vec4 emissive;  ATTRIBUTE vec2 texcoord0; -VARYING vec4 vertex_color; +VARYING vec4 post_pos;  VARYING vec2 vary_texcoord0; - -void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform();  void main()  {  	//transform vertex -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	 -	mat4 mat = getObjectSkinnedTransform(); +    mat4 mat = getObjectSkinnedTransform();  	mat = modelview_matrix * mat; -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	vertex_color = emissive; - -	calcAtmospherics(pos.xyz); - -	gl_Position = projection_matrix*vec4(pos, 1.0); +	vec4 pos = mat * vec4(position.xyz, 1.0); +    pos = projection_matrix * pos; +	 +	post_pos = pos; +	 +	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); +	 +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  } diff --git a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl index f4d704577a..153998f1d5 100644 --- a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl @@ -27,8 +27,21 @@ uniform mat4 modelview_projection_matrix;  ATTRIBUTE vec3 position; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +uniform mat4 modelview_matrix; +#endif +  void main()  { +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vec4(position.xyz,1.0); +    gl_Position = projection_matrix * pos; +#else  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); +#endif  } diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl index 9bf7b60eb7..0b362cf46c 100644 --- a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl @@ -31,10 +31,23 @@ ATTRIBUTE vec2 texcoord0;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +uniform mat4 modelview_matrix; +#endif +  void main()  {  	//transform vertex +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vec4(position.xyz,1.0); +    gl_Position = projection_matrix * pos; +#else  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); +#endif  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  } diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionSkinnedV.glsl index eff75435a9..7305065a05 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionSkinnedV.glsl @@ -1,6 +1,7 @@  /**  - * @file fullbrightSkinnedV.glsl - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * @file occlusionSkinnedV.glsl + * + * $LicenseInfo:firstyear=2021&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc.   *  @@ -23,35 +24,17 @@   */  uniform mat4 projection_matrix; -uniform mat4 texture_matrix0;  uniform mat4 modelview_matrix;  ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; -void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform(); -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; - -  void main()  { -	//transform vertex -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	  	mat4 mat = getObjectSkinnedTransform(); -	  	mat = modelview_matrix * mat;  	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	 -	calcAtmospherics(pos.xyz); - -	vertex_color = diffuse_color; -	  	gl_Position = projection_matrix*vec4(pos, 1.0); -		 -	  } + diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl index 1855cfceeb..ad2170bbd3 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl @@ -50,7 +50,7 @@ void fullbright_lighting()  		discard;  	} -	color.rgb *= vertex_color.rgb; +	color *= vertex_color;  	color.rgb = pow(color.rgb, vec3(texture_gamma)); diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl index 5fcdf3107c..89be8195f0 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl @@ -56,5 +56,6 @@ void fullbright_lighting()  	color.rgb = pow(color.rgb, vec3(1.0/texture_gamma));  	frag_color = color; +  } diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl index a7738087dc..ee9970bc70 100644 --- a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl @@ -33,10 +33,23 @@ ATTRIBUTE vec2 texcoord1;  VARYING vec2 vary_texcoord0;  VARYING vec2 vary_texcoord1; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +uniform mat4 modelview_matrix; +#endif +  void main()  {  	//transform vertex +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vec4(position.xyz, 1.0); +    gl_Position = projection_matrix * pos; +#else  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); +#endif  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  	vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;  } diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl index e984deb0c8..d762239e51 100644 --- a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl @@ -37,20 +37,30 @@ VARYING vec2 vary_texcoord0;  void calcAtmospherics(vec3 inPositionEye); - - +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif  void main()  {  	//transform vertex  	passTextureIndex(); + +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; + +    vec4 pos = mat * vec4(position.xyz, 1.0); +    gl_Position = projection_matrix * pos; +#else  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); +    vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0)); +#endif  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0)); +	  	calcAtmospherics(pos.xyz);  	vertex_color = emissive; - -	  } diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl deleted file mode 100644 index 1e244d9dfd..0000000000 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl +++ /dev/null @@ -1,71 +0,0 @@ -/**  - * @file shinySimpleSkinnedV.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 mat4 texture_matrix0; -uniform mat4 texture_matrix1; -uniform mat4 modelview_matrix; -uniform mat4 projection_matrix; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec3 normal; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; - -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; -VARYING vec3 vary_texcoord1; -VARYING vec4 vary_position; - - -void calcAtmospherics(vec3 inPositionEye); -mat4 getObjectSkinnedTransform(); - -void main() -{ -	mat4 mat = getObjectSkinnedTransform(); -	 -	mat = modelview_matrix * mat; -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; - -    mat4 mvp = modelview_matrix * projection_matrix; -    vary_position = mvp * vec4(position, 1.0); -	 -	vec4 norm = vec4(position.xyz, 1.0); -	norm.xyz += normal.xyz; -	norm.xyz = (mat*norm).xyz; -	norm.xyz = normalize(norm.xyz-pos.xyz); -		 -	vec3 ref = reflect(pos.xyz, -norm.xyz); - -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz; - -	calcAtmospherics(pos.xyz); - -	vertex_color = diffuse_color; -	 -	gl_Position = projection_matrix*vec4(pos, 1.0); -	 -	 -} diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl index 34bd8d445a..891515ab1e 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl @@ -46,20 +46,32 @@ VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0;  VARYING vec3 vary_texcoord1; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz,1.0);  	passTextureIndex(); + +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vert; +    gl_Position = projection_matrix * pos; +	vec3 norm = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz); +#else  	vec4 pos = (modelview_matrix * vert);  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); -	  	vec3 norm = normalize(normal_matrix * normal); +#endif  	vec3 ref = reflect(pos.xyz, -norm);  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz; +	vary_texcoord1 = (texture_matrix1 * vec4(ref,1.0)).xyz;  	calcAtmospherics(pos.xyz); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl index fc20d3270e..5af42f1fcf 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl @@ -33,26 +33,33 @@ ATTRIBUTE vec2 texcoord0;  ATTRIBUTE vec3 normal;  ATTRIBUTE vec4 diffuse_color; -  void calcAtmospherics(vec3 inPositionEye); -  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz,1.0);  	passTextureIndex(); -	vec4 pos = (modelview_matrix * vert); +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vert; +    gl_Position = projection_matrix * pos; +#else +    vec4 pos = (modelview_matrix * vert);  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); +#endif  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  	calcAtmospherics(pos.xyz);  	vertex_color = diffuse_color; - -	  } diff --git a/indra/newview/app_settings/shaders/class1/objects/previewPhysicsF.glsl b/indra/newview/app_settings/shaders/class1/objects/previewPhysicsF.glsl new file mode 100644 index 0000000000..3a5e6fdf7c --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/previewPhysicsF.glsl @@ -0,0 +1,42 @@ +/**  + * @file previewPhysicsF.glsl + * + * $LicenseInfo:firstyear=2022&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2022, 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$ + */ + +#ifdef DEFINE_GL_FRAGCOLOR +out vec4 frag_color; +#else +#define frag_color gl_FragColor +#endif + +uniform sampler2D diffuseMap; +uniform vec4 color; + +VARYING vec2 vary_texcoord0; + +//==================================================================================================== + +void main() +{ +    frag_color = texture2D(diffuseMap,vary_texcoord0.xy) * color; +} diff --git a/indra/newview/app_settings/shaders/class1/objects/previewPhysicsV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewPhysicsV.glsl new file mode 100644 index 0000000000..913dec83bd --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/previewPhysicsV.glsl @@ -0,0 +1,42 @@ +/**  + * @file previewPhysicsV.glsl + * + * $LicenseInfo:firstyear=2022&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2022, 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 mat4 texture_matrix0; +uniform mat4 modelview_matrix; +uniform mat4 modelview_projection_matrix; + +ATTRIBUTE vec3 position; +ATTRIBUTE vec2 texcoord0; + +VARYING vec2 vary_texcoord0; + +//==================================================================================================== + +void main() +{ +	//transform vertex +	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; +} diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl index 4bb588335a..5886f47cbc 100644 --- a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl @@ -51,30 +51,6 @@ float calcDirectionalLight(vec3 n, vec3 l)  	return a;  } - -float calcLocalLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight) -{ -	//get light vector -	vec3 lv = lp.xyz-v; -	 -	//get distance -	float d = length(lv); -	 -	//normalize light vector -	lv *= 1.0/d; -	 -	//distance attenuation -	float da = clamp(1.0/(la * d), 0.0, 1.0); -	 -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 - -	//angular attenuation -	da *= calcDirectionalLight(n, lv); - -	return da;	 -}  //==================================================================================================== @@ -91,7 +67,8 @@ void main()  	// 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*calcLocalLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z); -	col.rgb += light_diffuse[3].rgb*calcLocalLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z); +    col.rgb += light_diffuse[2].rgb * calcDirectionalLight(norm, light_position[2].xyz); +    col.rgb += light_diffuse[3].rgb * calcDirectionalLight(norm, light_position[3].xyz); +  	vertex_color = col*color;  } diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl deleted file mode 100644 index 727bae19c0..0000000000 --- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl +++ /dev/null @@ -1,66 +0,0 @@ -/**  - * @file shinySimpleSkinnedV.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 mat4 projection_matrix; -uniform mat4 texture_matrix0; -uniform mat4 texture_matrix1; -uniform mat4 modelview_matrix; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec3 normal; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; - -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; -VARYING vec3 vary_texcoord1; - -vec4 calcLighting(vec3 pos, vec3 norm, vec4 color); -void calcAtmospherics(vec3 inPositionEye); -mat4 getObjectSkinnedTransform(); - -void main() -{ -	mat4 mat = getObjectSkinnedTransform(); -	 -	mat = modelview_matrix * mat; -	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz; -	 -	vec4 norm = vec4(position.xyz, 1.0); -	norm.xyz += normal.xyz; -	norm.xyz = (mat*norm).xyz; -	norm.xyz = normalize(norm.xyz-pos.xyz); -		 -	vec3 ref = reflect(pos.xyz, -norm.xyz); - -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz; - -	calcAtmospherics(pos.xyz); - -	vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color); -	vertex_color = color; -	 -	gl_Position = projection_matrix*vec4(pos, 1.0); -} diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl index 4ba8194d03..3ad7bcaa50 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl @@ -45,19 +45,32 @@ void calcAtmospherics(vec3 inPositionEye);  uniform vec4 origin; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif +  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz,1.0);  	passTextureIndex(); + +#ifdef HAS_SKIN +    mat4 mat = getObjectSkinnedTransform(); +    mat = modelview_matrix * mat; +    vec4 pos = mat * vert; +    gl_Position = projection_matrix * pos; +	vec3 norm = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz); +#else  	vec4 pos = (modelview_matrix * vert);  	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); -		  	vec3 norm = normalize(normal_matrix * normal); +#endif  	vec3 ref = reflect(pos.xyz, -norm); -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz; +	vary_texcoord0 = (texture_matrix0*vec4(texcoord0,0,1)).xy; +	vary_texcoord1 = (texture_matrix1 * vec4(ref,1.0)).xyz;  	calcAtmospherics(pos.xyz); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl index 9ef7704b70..2025174f7d 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl @@ -44,12 +44,16 @@ void calcAtmospherics(vec3 inPositionEye);  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +#ifdef HAS_SKIN +mat4 getObjectSkinnedTransform(); +uniform mat4 projection_matrix; +#endif +  void main()  {  	//transform vertex  	vec4 vert = vec4(position.xyz,1.0); -	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);  	passTextureIndex();  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy; @@ -58,11 +62,23 @@ void main()  	if (no_atmo == 1)  	{  		vertex_color = diffuse_color; +        gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);  	}  	else  	{ +#ifdef HAS_SKIN +        mat4 mat = getObjectSkinnedTransform(); +        mat = modelview_matrix * mat; + +        vec4 pos = mat * vert; +        vec3 norm = normalize((mat*vec4(normal.xyz+vert.xyz,1.0)).xyz-pos.xyz); + +        gl_Position = projection_matrix * pos; +#else  		vec4 pos = (modelview_matrix * vert);  		vec3 norm = normalize(normal_matrix * normal); +        gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); +#endif  		calcAtmospherics(pos.xyz); diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index eb2cd356d9..8462df207b 100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml @@ -6,8 +6,6 @@  	<RenderAvatarLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderAvatarPhysicsLODFactor value="1.0"/> -	<!--NO SHADERS--> -	<RenderAvatarVP value="TRUE"/>  	<!--Short Range-->  	<RenderFarClip value="256"/>  	<!--Default for now--> | 
