diff options
Diffstat (limited to 'indra/newview/app_settings/shaders')
4 files changed, 235 insertions, 242 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 7c58749929..a3be4bb0c3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -35,7 +35,7 @@ out vec4 frag_color;  #define frag_color gl_FragColor  #endif -#if USE_DIFFUSE_TEX +#ifdef USE_DIFFUSE_TEX  uniform sampler2D diffuseMap;  #endif @@ -52,7 +52,7 @@ VARYING vec3 vary_pointlight_col;  VARYING vec2 vary_texcoord0;  VARYING vec3 vary_norm; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  VARYING vec4 vertex_color;  #endif @@ -104,7 +104,7 @@ void main()  	vec4 pos = vec4(vary_position, 1.0); -#if USE_INDEXED_TEX +#ifdef USE_INDEXED_TEX  	vec4 diff = diffuseLookup(vary_texcoord0.xy);  #else  	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy); @@ -112,7 +112,7 @@ void main()  	diff.rgb = pow(diff.rgb, vec3(2.2)); -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  	float vertex_color_alpha = vertex_color.a;	  #else  	float vertex_color_alpha = 1.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index b8d43c0586..3f42e8a24b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -35,19 +35,19 @@ uniform mat4 modelview_projection_matrix;  ATTRIBUTE vec3 position; -#if USE_INDEXED_TEX +#ifdef USE_INDEXED_TEX  void passTextureIndex();  #endif  ATTRIBUTE vec3 normal; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  ATTRIBUTE vec4 diffuse_color;  #endif  ATTRIBUTE vec2 texcoord0; -#if HAS_SKIN +#ifdef HAS_SKIN  mat4 getObjectSkinnedTransform();  #elif IS_AVATAR_SKIN  mat4 getSkinnedTransform(); @@ -69,7 +69,7 @@ VARYING vec3 vary_fragcoord;  VARYING vec3 vary_position;  VARYING vec3 vary_pointlight_col; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  VARYING vec4 vertex_color;  #endif @@ -126,7 +126,7 @@ void main()  	vec3 norm;  	//transform vertex -#if HAS_SKIN +#ifdef HAS_SKIN  	mat4 trans = getObjectSkinnedTransform();  	trans = modelview_matrix * trans; @@ -138,7 +138,7 @@ void main()  	gl_Position = frag_pos;  #else -#if IS_AVATAR_SKIN +#ifdef IS_AVATAR_SKIN  	mat4 trans = getSkinnedTransform();  	vec4 pos_in = vec4(position.xyz, 1.0);  	pos.x = dot(trans[0], pos_in); @@ -162,7 +162,7 @@ void main()  #endif -#if USE_INDEXED_TEX +#ifdef USE_INDEXED_TEX  	passTextureIndex();  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  #else @@ -174,7 +174,7 @@ void main()  	calcAtmospherics(pos.xyz); -#if !USE_VERTEX_COLOR +#ifndef USE_VERTEX_COLOR  	vec4 diffuse_color = vec4(1,1,1,1);  #endif @@ -194,15 +194,15 @@ void main()  	col.rgb = col.rgb*diffuse_color.rgb; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  	vertex_color = col;  #endif -#if HAS_SKIN +#ifdef HAS_SKIN  	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);  #else -#if IS_AVATAR_SKIN +#ifdef IS_AVATAR_SKIN  	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);  #else  	pos = modelview_projection_matrix * vert; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 034b3523ca..21179663a7 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -40,7 +40,7 @@ uniform sampler2DShadow shadowMap1;  uniform sampler2DShadow shadowMap2;  uniform sampler2DShadow shadowMap3; -#if USE_DIFFUSE_TEX +#ifdef USE_DIFFUSE_TEX  uniform sampler2D diffuseMap;  #endif @@ -58,7 +58,7 @@ VARYING vec3 vary_pointlight_col;  VARYING vec2 vary_texcoord0;  VARYING vec3 vary_norm; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  VARYING vec4 vertex_color;  #endif @@ -199,11 +199,11 @@ void main()  	vec4 diff; -#if USE_INDEXED_TEX +#ifdef USE_INDEXED_TEX  	diff = diffuseLookup(vary_texcoord0.xy);  #endif -#if USE_DIFFUSE_TEX +#ifdef USE_DIFFUSE_TEX  	diff = texture2D(diffuseMap,vary_texcoord0.xy);  #endif @@ -211,7 +211,7 @@ void main()  	float vertex_color_alpha = 1.0; -#if USE_VERTEX_COLOR +#ifdef USE_VERTEX_COLOR  	vertex_color_alpha = vertex_color.a;	  #endif diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index d59cf9b89a..e9208a291d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -1,222 +1,215 @@ -/**  - * @file alphaV.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$ - */ - -#define INDEXED 1 -#define NON_INDEXED 2 -#define NON_INDEXED_NO_COLOR 3 - -uniform mat3 normal_matrix; -uniform mat4 texture_matrix0; -uniform mat4 projection_matrix; -uniform mat4 modelview_matrix; -uniform mat4 modelview_projection_matrix; - -ATTRIBUTE vec3 position; - -#if USE_INDEXED_TEX -void passTextureIndex(); -#endif - -ATTRIBUTE vec3 normal; - -#if USE_VERTEX_COLOR -ATTRIBUTE vec4 diffuse_color; -#endif - -ATTRIBUTE vec2 texcoord0; - -#if HAS_SKIN -mat4 getObjectSkinnedTransform(); -#else - -#if IS_AVATAR_SKIN -mat4 getSkinnedTransform(); -#endif - -#endif - -vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); -void calcAtmospherics(vec3 inPositionEye); - -float calcDirectionalLight(vec3 n, vec3 l); - -vec3 atmosAmbient(vec3 light); -vec3 atmosAffectDirectionalLight(float lightIntensity); -vec3 scaleDownLight(vec3 light); -vec3 scaleUpLight(vec3 light); - -VARYING vec3 vary_ambient; -VARYING vec3 vary_directional; -VARYING vec3 vary_fragcoord; -VARYING vec3 vary_position; -VARYING vec3 vary_pointlight_col; - -#if USE_VERTEX_COLOR -VARYING vec4 vertex_color; -#endif - -VARYING vec2 vary_texcoord0; - -VARYING vec3 vary_norm; - -uniform float near_clip; -uniform float shadow_offset; -uniform float shadow_bias; - -uniform vec4 light_position[8]; -uniform vec3 light_direction[8]; -uniform vec3 light_attenuation[8];  -uniform vec3 light_diffuse[8]; - -float calcDirectionalLight(vec3 n, vec3 l) -{ -        float a = max(dot(n,l),0.0); -        return a; -} - -float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) -{ -	//get light vector -	vec3 lv = lp.xyz-v; -	 -	//get distance -	float d = dot(lv,lv); -	 -	float da = 0.0; - -	if (d > 0.0 && la > 0.0 && fa > 0.0) -	{ -		//normalize light vector -		lv = normalize(lv); -	 -		//distance attenuation -		float dist2 = d/la; -		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - -		// spotlight coefficient. -		float spot = max(dot(-ln, lv), is_pointlight); -		da *= spot*spot; // GL_SPOT_EXPONENT=2 - -		//angular attenuation -		da *= max(dot(n, lv), 0.0);		 -	} - -	return da;	 -} - -void main() -{ -	vec4 pos; -	vec3 norm; -	 -	//transform vertex -#if HAS_SKIN -	mat4 trans = getObjectSkinnedTransform(); -	trans = modelview_matrix * trans; -	 -	pos = trans * vec4(position.xyz, 1.0); -	 -	norm = position.xyz + normal.xyz; -	norm = normalize((trans * vec4(norm, 1.0)).xyz - pos.xyz); -	vec4 frag_pos = projection_matrix * pos; -	gl_Position = frag_pos; -#else - -#if IS_AVATAR_SKIN -	mat4 trans = getSkinnedTransform(); -	vec4 pos_in = vec4(position.xyz, 1.0); -	pos.x = dot(trans[0], pos_in); -	pos.y = dot(trans[1], pos_in); -	pos.z = dot(trans[2], pos_in); -	pos.w = 1.0; -	 -	norm.x = dot(trans[0].xyz, normal); -	norm.y = dot(trans[1].xyz, normal); -	norm.z = dot(trans[2].xyz, normal); -	norm = normalize(norm); -	 -	vec4 frag_pos = projection_matrix * pos; -	gl_Position = frag_pos; -#else -	norm = normalize(normal_matrix * normal); -	vec4 vert = vec4(position.xyz, 1.0); -	pos = (modelview_matrix * vert); -	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); -#endif - -#endif - -#if USE_INDEXED_TEX -	passTextureIndex(); -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -#else -	vary_texcoord0 = texcoord0; -#endif -	 -	vary_norm = norm; -	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz)); -	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset; -	 -	calcAtmospherics(pos.xyz); - -#if !USE_VERTEX_COLOR -	vec4 diffuse_color = vec4(1,1,1,1); -#endif - -	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.)); -	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a); - -	vec3 dff = pow(diffuse_color.rgb, vec3(2.2f,2.2f,2.2f)); - -	vary_pointlight_col = dff; - -	col.rgb = vec3(0,0,0); - -	// Add windlight lights -	col.rgb = atmosAmbient(col.rgb); -	 -	vary_directional.rgb = atmosAffectDirectionalLight(1); -	vary_ambient = col.rgb*dff; -	 -	col.rgb = col.rgb*dff; -	 -#if USE_VERTEX_COLOR -	vertex_color = col; -#endif -	 -#if HAS_SKIN -	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip); -#else - -#if IS_AVATAR_SKIN -	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); -#else -	pos = modelview_projection_matrix * vert; -	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); -#endif - -#endif - -} +/** 
 + * @file alphaV.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$
 + */
 +
 +vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 +void calcAtmospherics(vec3 inPositionEye);
 +
 +vec3 calcDirectionalLight(vec3 n, vec3 l);
 +
 +vec3 atmosAmbient(vec3 light);
 +vec3 atmosAffectDirectionalLight(float lightIntensity);
 +vec3 scaleDownLight(vec3 light);
 +vec3 scaleUpLight(vec3 light);
 +
 +uniform mat3 normal_matrix;
 +uniform mat4 texture_matrix0;
 +uniform mat4 projection_matrix;
 +uniform mat4 modelview_matrix;
 +uniform mat4 modelview_projection_matrix;
 +
 +ATTRIBUTE vec3 position;
 +
 +#ifdef USE_INDEXED_TEX
 +void passTextureIndex();
 +#endif
 +
 +ATTRIBUTE vec3 normal;
 +
 +#ifdef USE_VERTEX_COLOR
 +ATTRIBUTE vec4 diffuse_color;
 +#endif
 +
 +ATTRIBUTE vec2 texcoord0;
 +
 +#ifdef HAS_SKIN
 +mat4 getObjectSkinnedTransform();
 +#else
 +#ifdef IS_AVATAR_SKIN
 +mat4 getSkinnedTransform();
 +#endif
 +#endif
 +
 +VARYING vec3 vary_ambient;
 +VARYING vec3 vary_directional;
 +VARYING vec3 vary_fragcoord;
 +VARYING vec3 vary_position;
 +VARYING vec3 vary_pointlight_col;
 +
 +#ifdef USE_VERTEX_COLOR
 +VARYING vec4 vertex_color;
 +#endif
 +
 +VARYING vec2 vary_texcoord0;
 +VARYING vec3 vary_norm;
 +
 +uniform float near_clip;
 +uniform float shadow_offset;
 +uniform float shadow_bias;
 +
 +uniform vec4 light_position[8];
 +uniform vec3 light_direction[8];
 +uniform vec3 light_attenuation[8]; 
 +uniform vec3 light_diffuse[8];
 +
 +vec3 calcDirectionalLight(vec3 n, vec3 l)
 +{
 +        float a = max(dot(n,l),0.0);
 +        return vec3(a,a,a);
 +}
 +
 +vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 +{
 +	//get light vector
 +	vec3 lv = lp.xyz-v;
 +	
 +	//get distance
 +	float d = dot(lv,lv);
 +	
 +	float da = 0.0;
 +
 +	if (d > 0.0 && la > 0.0 && fa > 0.0)
 +	{
 +		//normalize light vector
 +		lv = normalize(lv);
 +	
 +		//distance attenuation
 +		float dist2 = d/la;
 +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 +
 +		// spotlight coefficient.
 +		float spot = max(dot(-ln, lv), is_pointlight);
 +		da *= spot*spot; // GL_SPOT_EXPONENT=2
 +
 +		//angular attenuation
 +		da *= max(dot(n, lv), 0.0);		
 +	}
 +
 +	return vec3(da,da,da);	
 +}
 +
 +void main()
 +{
 +	vec4 pos;
 +	vec3 norm;
 +	
 +	//transform vertex
 +#ifdef HAS_SKIN
 +	mat4 trans = getObjectSkinnedTransform();
 +	trans = modelview_matrix * trans;
 +	
 +	pos = trans * vec4(position.xyz, 1.0);
 +	
 +	norm = position.xyz + normal.xyz;
 +	norm = normalize((trans * vec4(norm, 1.0)).xyz - pos.xyz);
 +	vec4 frag_pos = projection_matrix * pos;
 +	gl_Position = frag_pos;
 +#else
 +
 +#ifdef IS_AVATAR_SKIN
 +	mat4 trans = getSkinnedTransform();
 +	vec4 pos_in = vec4(position.xyz, 1.0);
 +	pos.x = dot(trans[0], pos_in);
 +	pos.y = dot(trans[1], pos_in);
 +	pos.z = dot(trans[2], pos_in);
 +	pos.w = 1.0;
 +	
 +	norm.x = dot(trans[0].xyz, normal);
 +	norm.y = dot(trans[1].xyz, normal);
 +	norm.z = dot(trans[2].xyz, normal);
 +	norm = normalize(norm);
 +	
 +	vec4 frag_pos = projection_matrix * pos;
 +	gl_Position = frag_pos;
 +#else
 +	norm = normalize(normal_matrix * normal);
 +	vec4 vert = vec4(position.xyz, 1.0);
 +	pos = (modelview_matrix * vert);
 +	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 +#endif
 +
 +#endif
 +
 +#ifdef USE_INDEXED_TEX
 +	passTextureIndex();
 +	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 +#else
 +	vary_texcoord0 = texcoord0;
 +#endif
 +	
 +	vary_norm = norm;
 +	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
 +	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 +	
 +	calcAtmospherics(pos.xyz);
 +
 +#ifndef USE_VERTEX_COLOR
 +	vec4 diffuse_color = vec4(1,1,1,1);
 +#endif
 +
 +	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
 +	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 +
 +	vec3 dff = pow(diffuse_color.rgb, vec3(2.2f,2.2f,2.2f));
 +
 +	vary_pointlight_col = dff;
 +
 +	col.rgb = vec3(0,0,0);
 +
 +	// Add windlight lights
 +	col.rgb = atmosAmbient(col.rgb);
 +	
 +	vary_directional.rgb = atmosAffectDirectionalLight(1);
 +	vary_ambient = col.rgb*dff;
 +	
 +	col.rgb = col.rgb*dff;
 +	
 +#ifdef USE_VERTEX_COLOR
 +	vertex_color = col;
 +#endif
 +	
 +#ifdef HAS_SKIN
 +	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
 +#else
 +
 +#ifdef IS_AVATAR_SKIN
 +	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 +#else
 +	pos = modelview_projection_matrix * vert;
 +	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 +#endif
 +
 +#endif
 +
 +}
 | 
