diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-05-30 01:25:55 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-05-30 01:25:55 -0500 | 
| commit | eca17c8993aecfd8d69c1b1765f8ac841ad29119 (patch) | |
| tree | f876d76ad19db1fa18c56f7c61efd4b10648c747 /indra/newview/app_settings/shaders/class2 | |
| parent | 57725bd6a14f471cae1a0f4ac7485ab9ccd8bfc6 (diff) | |
SH-1682 Full integration if indexed texture rendering to improve batch size.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
22 files changed, 554 insertions, 24 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 6dfc1b952c..bd4875f3ff 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -9,13 +9,14 @@  #extension GL_ARB_texture_rectangle : enable -uniform sampler2D diffuseMap;  uniform sampler2DRectShadow shadowMap0;  uniform sampler2DRectShadow shadowMap1;  uniform sampler2DRectShadow shadowMap2;  uniform sampler2DRectShadow shadowMap3;  uniform sampler2DRect depthMap; +vec4 diffuseLookup(vec2 texcoord); +  uniform mat4 shadow_matrix[6];  uniform vec4 shadow_clip;  uniform vec2 screen_res; @@ -105,7 +106,7 @@ void main()  		}  	} -	vec4 diff= texture2D(diffuseMap, gl_TexCoord[0].xy); +	vec4 diff = diffuseLookup(gl_TexCoord[0].xy);  	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a);  	vec4 color = diff * col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index f6160815eb..c6c0b0f32a 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -22,6 +22,7 @@ varying vec3 vary_directional;  varying vec3 vary_fragcoord;  varying vec3 vary_position;  varying vec3 vary_pointlight_col; +varying float vary_texture_index;  uniform float near_clip;  uniform float shadow_offset; @@ -60,11 +61,13 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  void main()  {  	//transform vertex -	gl_Position = ftransform();  +	vec4 vert = vec4(gl_Vertex.xyz, 1.0); +	vary_texture_index = gl_Vertex.w; +	gl_Position = gl_ModelViewProjectionMatrix * vert;   	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; -	vec4 pos = (gl_ModelViewMatrix * gl_Vertex); +	vec4 pos = (gl_ModelViewMatrix * vert);  	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);  	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz)); @@ -99,7 +102,7 @@ void main()  	gl_FogFragCoord = pos.z; -	pos = gl_ModelViewProjectionMatrix * gl_Vertex; +	pos = gl_ModelViewProjectionMatrix * vert;  	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);  } diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl index 342bc2ab66..d5775f4506 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl @@ -7,14 +7,40 @@  #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +		case 7: return texture2D(tex7, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 atmosLighting(vec3 light);  vec3 scaleSoftClip(vec3 light);  void default_lighting()   { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; +	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;  	color.rgb = atmosLighting(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl index dad18b5883..e64b089dca 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl @@ -7,14 +7,40 @@  #version 120 -uniform sampler2D diffuseMap; -  vec3 fullbrightAtmosTransport(vec3 light);  vec3 fullbrightScaleSoftClip(vec3 light); +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +		case 7: return texture2D(tex7, texcoord); +	} + +	return vec4(0,0,0,0); +} +  void fullbright_lighting()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; +	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;  	color.rgb = fullbrightAtmosTransport(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl new file mode 100644 index 0000000000..811a919d52 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl @@ -0,0 +1,25 @@ +/**  + * @file lightFullbrightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +vec3 fullbrightAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); + +uniform sampler2D diffuseMap; + +void fullbright_lighting() +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; +	 +	color.rgb = fullbrightAtmosTransport(color.rgb); +	 +	color.rgb = fullbrightScaleSoftClip(color.rgb); + +	gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl index 73ff81e03a..f4ac789a74 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl @@ -7,15 +7,41 @@  #version 120 -uniform sampler2D diffuseMap;  uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +	} + +	return vec4(0,0,0,0); +} + +  vec3 fullbrightShinyAtmosTransport(vec3 light);  vec3 fullbrightScaleSoftClip(vec3 light);  void fullbright_shiny_lighting()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); +	vec4 color = diffuseLookup(gl_TexCoord[0].xy);  	color.rgb *= gl_Color.rgb;  	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl new file mode 100644 index 0000000000..51a7ddb89a --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl @@ -0,0 +1,32 @@ +/**  + * @file lightFullbrightShinyF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 fullbrightShinyAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); + +void fullbright_shiny_lighting() +{ +	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); +	color.rgb *= gl_Color.rgb; +	 +	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 +	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + +	color.rgb = fullbrightShinyAtmosTransport(color.rgb); + +	color.rgb = fullbrightScaleSoftClip(color.rgb); + +	color.a = max(color.a, gl_Color.a); + +	gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl index 9b4b584369..277170e8af 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl @@ -7,8 +7,33 @@  #version 120 -uniform sampler2D diffuseMap; +  uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 fullbrightShinyAtmosTransport(vec3 light);  vec3 fullbrightScaleSoftClip(vec3 light); @@ -16,7 +41,7 @@ vec4 applyWaterFog(vec4 color);  void fullbright_shiny_lighting_water()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); +	vec4 color = diffuseLookup(gl_TexCoord[0].xy);  	color.rgb *= gl_Color.rgb;  	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl new file mode 100644 index 0000000000..a9a95940e6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl @@ -0,0 +1,32 @@ +/**  + * @file lightFullbrightShinyWaterF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ +  +#version 120 + + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 fullbrightShinyAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); +vec4 applyWaterFog(vec4 color); + +void fullbright_shiny_lighting_water() +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); +	color.rgb *= gl_Color.rgb; +	 +	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 +	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + +	color.rgb = fullbrightShinyAtmosTransport(color.rgb); +	color.rgb = fullbrightScaleSoftClip(color.rgb); +	color.a = max(color.a, gl_Color.a); + +	gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl index 3d46c8d874..37e33059a6 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl @@ -7,14 +7,40 @@  #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +		case 7: return texture2D(tex7, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 fullbrightAtmosTransport(vec3 light);  vec4 applyWaterFog(vec4 color);  void fullbright_lighting_water()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; +	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;  	color.rgb = fullbrightAtmosTransport(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl new file mode 100644 index 0000000000..3d46c8d874 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl @@ -0,0 +1,23 @@ +/**  + * @file lightFullbrightWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +uniform sampler2D diffuseMap; + +vec3 fullbrightAtmosTransport(vec3 light); +vec4 applyWaterFog(vec4 color); + +void fullbright_lighting_water() +{ +	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + +	color.rgb = fullbrightAtmosTransport(color.rgb); +	 +	gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl new file mode 100644 index 0000000000..787eeb7af6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl @@ -0,0 +1,25 @@ +/**  + * @file lightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +uniform sampler2D diffuseMap; + +vec3 atmosLighting(vec3 light); +vec3 scaleSoftClip(vec3 light); + +void default_lighting()  +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; +	 +	color.rgb = atmosLighting(color.rgb); + +	color.rgb = scaleSoftClip(color.rgb); + +	gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl index ebe21320b4..9f438f513f 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl @@ -7,8 +7,33 @@  #version 120 -uniform sampler2D diffuseMap; +  uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 scaleSoftClip(vec3 light);  vec3 atmosLighting(vec3 light); @@ -16,7 +41,7 @@ vec4 applyWaterFog(vec4 color);  void shiny_lighting()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); +	vec4 color = diffuseLookup(gl_TexCoord[0].xy);  	color.rgb *= gl_Color.rgb;  	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl new file mode 100644 index 0000000000..212eacd6ea --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl @@ -0,0 +1,32 @@ +/**  + * @file lightShinyF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 scaleSoftClip(vec3 light); +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void shiny_lighting() +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); +	color.rgb *= gl_Color.rgb; +	 +	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 +	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + +	color.rgb = atmosLighting(color.rgb); + +	color.rgb = scaleSoftClip(color.rgb); +	color.a = max(color.a, gl_Color.a); +	gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl index 7f48e2cf1d..5e11f6585c 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl @@ -8,15 +8,39 @@  #version 120 -uniform sampler2D diffuseMap;  uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 atmosLighting(vec3 light);  vec4 applyWaterFog(vec4 color);  void shiny_lighting_water()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); +	vec4 color = diffuseLookup(gl_TexCoord[0].xy);  	color.rgb *= gl_Color.rgb;  	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl new file mode 100644 index 0000000000..cb8a24da60 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl @@ -0,0 +1,29 @@ +/**  + * @file lightShinyWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + + +uniform sampler2D diffuseMap; +uniform samplerCube environmentMap; + +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void shiny_lighting_water() +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); +	color.rgb *= gl_Color.rgb; +	 +	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	 +	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + +	color.rgb = atmosLighting(color.rgb); +	color.a = max(color.a, gl_Color.a); +	gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl index 97eba92d7b..022544a917 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl @@ -7,14 +7,40 @@  #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ +	switch (int(vary_texture_index+0.25)) +	{ +		case 0: return texture2D(tex0, texcoord); +		case 1: return texture2D(tex1, texcoord); +		case 2: return texture2D(tex2, texcoord); +		case 3: return texture2D(tex3, texcoord); +		case 4: return texture2D(tex4, texcoord); +		case 5: return texture2D(tex5, texcoord); +		case 6: return texture2D(tex6, texcoord); +		case 7: return texture2D(tex7, texcoord); +	} + +	return vec4(0,0,0,0); +}  vec3 atmosLighting(vec3 light);  vec4 applyWaterFog(vec4 color);  void default_lighting_water()  { -	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; +	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;  	color.rgb = atmosLighting(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl new file mode 100644 index 0000000000..dc16f2d5cd --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl @@ -0,0 +1,23 @@ +/**  + * @file lightWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +uniform sampler2D diffuseMap; + +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void default_lighting_water() +{ +	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; + +	color.rgb = atmosLighting(color.rgb); + +	gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl new file mode 100644 index 0000000000..e2145e1956 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl @@ -0,0 +1,35 @@ +/** + * @file fullbrightShinyV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +void calcAtmospherics(vec3 inPositionEye); + +uniform vec4 origin; + +varying float vary_texture_index; + +void main() +{ +	//transform vertex +	vec4 vert = vec4(gl_Vertex.xyz,1.0); +	vary_texture_index = gl_Vertex.w; +	gl_Position = gl_ModelViewProjectionMatrix*vert; +	 +	vec4 pos = (gl_ModelViewMatrix * vert); +	vec3 norm = normalize(gl_NormalMatrix * gl_Normal); +	vec3 ref = reflect(pos.xyz, -norm); + +	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; +	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0); + +	calcAtmospherics(pos.xyz); + +	gl_FrontColor = gl_Color; + +	gl_FogFragCoord = pos.z; +} diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl new file mode 100644 index 0000000000..c4a3611a29 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl @@ -0,0 +1,29 @@ +/** + * @file fullbrightV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +void calcAtmospherics(vec3 inPositionEye); + +varying float vary_texture_index; + +void main() +{ +	//transform vertex +	vec4 vert = vec4(gl_Vertex.xyz,1.0); +	vary_texture_index = gl_Vertex.w; +	gl_Position = gl_ModelViewProjectionMatrix*vert; +	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; +	 +	vec4 pos = (gl_ModelViewMatrix * vert); + +	calcAtmospherics(pos.xyz); + +	gl_FrontColor = gl_Color; + +	gl_FogFragCoord = pos.z; +} diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl index 4cebb06df0..436c193c5d 100644 --- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl @@ -11,14 +11,18 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  void calcAtmospherics(vec3 inPositionEye); +varying float vary_texture_index; +  uniform vec4 origin;  void main()  {  	//transform vertex -	gl_Position = ftransform(); +	vec4 vert = vec4(gl_Vertex.xyz,1.0); +	vary_texture_index = gl_Vertex.w; +	gl_Position = gl_ModelViewProjectionMatrix*vert; -	vec4 pos = (gl_ModelViewMatrix * gl_Vertex); +	vec4 pos = (gl_ModelViewMatrix * vert);  	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);  	vec3 ref = reflect(pos.xyz, -norm); diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl new file mode 100644 index 0000000000..50d2beee57 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl @@ -0,0 +1,33 @@ +/**  + * @file simpleV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#version 120 + +vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); +void calcAtmospherics(vec3 inPositionEye); + +varying float vary_texture_index; + +void main() +{ +	//transform vertex +	vec4 vert = vec4(gl_Vertex.xyz,1.0); +	vary_texture_index = gl_Vertex.w; +	gl_Position = gl_ModelViewProjectionMatrix*vert; +	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; +	 +	vec4 pos = (gl_ModelViewMatrix * vert); +	 +	vec3 norm = normalize(gl_NormalMatrix * gl_Normal); + +	calcAtmospherics(pos.xyz); + +	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); +	gl_FrontColor = color; + +	gl_FogFragCoord = pos.z; +} | 
