diff options
| author | Dave Parks <davep@lindenlab.com> | 2021-11-20 18:49:19 +0000 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2021-11-20 18:49:19 +0000 | 
| commit | 28f9fb06a9f4cb9edccb2ff8132c7f6a9b27c060 (patch) | |
| tree | e3096bac94279dded08731dcc4f042d81dc2bfac /indra/newview/app_settings/shaders/class1/deferred | |
| parent | 3171aaad9b1f2757f8b0d8cbb784a45a7bbebafa (diff) | |
SL-16289 Rigged mesh rendering overhaul
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl | 4 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl | 22 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl | 20 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl | 18 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl | 13 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskSkinnedV.glsl (renamed from indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl) | 50 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/shadowSkinnedV.glsl | 52 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/treeShadowSkinnedV.glsl (renamed from indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl) | 36 | 
8 files changed, 160 insertions, 55 deletions
| 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/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/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl index 8f6eb79668..2c139430e7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyV.glsl @@ -25,7 +25,6 @@  uniform mat3 normal_matrix;  uniform mat4 texture_matrix0; -uniform mat4 texture_matrix1;  uniform mat4 modelview_matrix;  uniform mat4 modelview_projection_matrix; @@ -47,19 +46,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 = transpose(normal_matrix) * ref.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/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskSkinnedV.glsl index 10144f3e16..2b17aea75a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskSkinnedV.glsl @@ -1,8 +1,9 @@  /**  - * @file bumpV.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,43 +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; -ATTRIBUTE vec4 tangent; -VARYING vec3 vary_mat0; -VARYING vec3 vary_mat1; -VARYING vec3 vary_mat2; +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; -	 -	 -	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); +	vec4 pos = mat * pre_pos; +	pos = projection_matrix * pos; + +	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/deferred/shadowSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowSkinnedV.glsl new file mode 100644 index 0000000000..bdf8e0854d --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowSkinnedV.glsl @@ -0,0 +1,52 @@ +/**  + * @file shadowSkinnedV.glsl + * + * $LicenseInfo:firstyear=2021&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 modelview_matrix; +uniform mat4 projection_matrix; + +ATTRIBUTE vec3 position; + +VARYING vec4 post_pos; + +mat4 getObjectSkinnedTransform(); + +void main() +{ +	//transform vertex +	mat4 mat = getObjectSkinnedTransform(); +	 +	mat = modelview_matrix * mat; +	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 + +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowSkinnedV.glsl index 2487110624..d9ca6d3a46 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowSkinnedV.glsl @@ -1,6 +1,7 @@  /**  - * @file diffuseSkinnedV.glsl - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * @file treeShadowV.glsl + * +  * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc.   *  @@ -22,38 +23,31 @@   * $/LicenseInfo$   */ -uniform mat4 projection_matrix;  uniform mat4 texture_matrix0;  uniform mat4 modelview_matrix; - +uniform mat4 projection_matrix; +   ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec3 normal;  ATTRIBUTE vec2 texcoord0; -VARYING vec3 vary_normal; -VARYING vec4 vertex_color; +VARYING vec4 post_pos;  VARYING vec2 vary_texcoord0;  mat4 getObjectSkinnedTransform();  void main()  { -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -		 -	mat4 mat = getObjectSkinnedTransform(); +	//transform vertex +    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); - -	vary_normal = norm.xyz; -			 -	vertex_color = diffuse_color; +	vec4 pos = mat * vec4(position.xyz, 1.0); +    pos = projection_matrix * pos; +	 +	post_pos = pos; -	gl_Position = projection_matrix*vec4(pos, 1.0); +	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); +	 +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  } | 
