diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-09-15 00:55:11 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-09-15 00:55:11 -0500 | 
| commit | f72a24bf3a5bf7ecb826ef5e6d7f17dbb92d5db2 (patch) | |
| tree | a4a070ba8b95645089dcd55a848baec41b625cbc /indra/newview/app_settings/shaders/class1/environment | |
| parent | 758b936deaa0e6ea397c49afa5024315415eeb93 (diff) | |
| parent | 530981a2149a74e1dc003cea1bbc9dc392fcae60 (diff) | |
merge
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/environment')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/environment/terrainV.glsl | 33 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/environment/waterV.glsl | 24 | 
2 files changed, 38 insertions, 19 deletions
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl index 917891c063..04b3033dd8 100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl @@ -22,7 +22,22 @@   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ -  + +uniform mat3 normal_matrix; +uniform mat4 texture_matrix0; +uniform mat4 texture_matrix1; +uniform mat4 texture_matrix2; +uniform mat4 texture_matrix3; +uniform mat4 modelview_matrix; +uniform mat4 modelview_projection_matrix; + +attribute vec3 position; +attribute vec3 normal; +attribute vec4 diffuse_color; +attribute vec2 texcoord0; +attribute vec2 texcoord1; +attribute vec2 texcoord2; +attribute vec2 texcoord3;  vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); @@ -44,17 +59,17 @@ vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)  void main()  {  	//transform vertex -	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); -	vec4 pos = gl_ModelViewMatrix * gl_Vertex; -	vec3 norm = normalize(gl_NormalMatrix * gl_Normal); +	vec4 pos = modelview_matrix * position; +	vec3 norm = normalize(normal_matrix * normal); -	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), gl_Color); +	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), diffuse_color);  	gl_FrontColor = color; -	gl_TexCoord[0] = texgen_object(gl_Vertex,gl_MultiTexCoord0,gl_TextureMatrix[0],gl_ObjectPlaneS[0],gl_ObjectPlaneT[0]); -	gl_TexCoord[1] = gl_TextureMatrix[1]*gl_MultiTexCoord1; -	gl_TexCoord[2] = texgen_object(gl_Vertex,gl_MultiTexCoord2,gl_TextureMatrix[2],gl_ObjectPlaneS[2],gl_ObjectPlaneT[2]); -	gl_TexCoord[3] = gl_TextureMatrix[3]*gl_MultiTexCoord3; +	gl_TexCoord[0] = texgen_object(vec4(position.xyz, 1.0),vec4(texcoord0,0,1),texture_matrix0,gl_ObjectPlaneS[0],gl_ObjectPlaneT[0]); +	gl_TexCoord[1] = texture_matrix1*vec4(texcoord1,0,1); +	gl_TexCoord[2] = texgen_object(vec4(position.xyz, 1.0),vec4(texcoord2,0,1),texture_matrix2,gl_ObjectPlaneS[2],gl_ObjectPlaneT[2]); +	gl_TexCoord[3] = texture_matrix3*vec4(texcoord3,0,1);  } diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl index 610c06fbbc..99433ada7b 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl @@ -22,8 +22,11 @@   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ -  +uniform mat4 modelview_matrix; +uniform mat4 modelview_projection_matrix; + +attribute vec3 position;  void calcAtmospherics(vec3 inPositionEye); @@ -45,8 +48,7 @@ float wave(vec2 v, float t, float f, vec2 d, float s)  void main()  {  	//transform vertex -	vec4 position = gl_Vertex; -	mat4 modelViewProj = gl_ModelViewProjectionMatrix; +	mat4 modelViewProj = modelview_projection_matrix;  	vec4 oPosition; @@ -57,27 +59,29 @@ void main()  	float d = length(oEyeVec.xy);  	float ld = min(d, 2560.0); -	position.xy = eyeVec.xy + oEyeVec.xy/d*ld; +	vec3 lpos = position; +	lpos.xy = eyeVec.xy + oEyeVec.xy/d*ld;  	view.xyz = oEyeVec;  	d = clamp(ld/1536.0-0.5, 0.0, 1.0);	  	d *= d; -	oPosition = position; +	oPosition = vec4(lpos, 1.0);  	oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d);  	oPosition = modelViewProj * oPosition;  	refCoord.xyz = oPosition.xyz + vec3(0,0,0.2);  	//get wave position parameter (create sweeping horizontal waves) -	vec3 v = position.xyz; +	vec3 v = lpos;  	v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0;  	//push position for further horizon effect. -	position.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z); -	position.w = 1.0; -	position = position*gl_ModelViewMatrix; +	vec4 pos; +	pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z); +	pos.w = 1.0; +	pos = modelview_matrix*pos; -	calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz); +	calcAtmospherics(pos.xyz);  	//pass wave parameters to pixel shader  | 
