All pastes #134249 Raw Edit

shader1.txt

public text v1 · immutable
#134249 ·published 2006-08-16 09:37 UTC
rendered paste body
#define UseBumpmapping
#define DiffuseFromBuffer


#ifdef UseBumpmapping



varying vec3 tsLightDir;

varying vec3 tsEyeDir;

//varying vec3 tsHalfDir;



#endif



uniform vec3 wsLightDir;

uniform vec3 wsEyePos;



uniform sampler2DRect _buffer;
uniform sampler2D seafloor_BM;
uniform sampler2D grassblend;
uniform sampler2D grass_BM;
uniform sampler2D rockblend;
uniform sampler2D rock_BM;
uniform sampler2D adamblend;
uniform sampler2D adamante_BM;
uniform sampler2D shoreblend;
uniform sampler2D gravelshore_BM;
uniform sampler2D dirtyblend;
uniform sampler2D dirtspots_BM;
const float specularExponent = 8;


// Optimized function generated by the GLSL handler

// This function uses the utility functions below to do things like texture reading and lighting

vec4 CalculateColor();



#ifdef UseBumpmapping

vec3 reflect(vec3 N, vec3 L)

{

	return 2.0*N*dot(N, L) - L;

}



vec4 CalcFinal(vec4 diffuse, vec4 texValue)

{

	vec3 normal = normalize(texValue.xyz * vec3(2.0) - vec3(1.0));

	float diffuseFactor = max(0.0, -dot(tsLightDir, normal));

	

	vec3 R = reflect(normal, tsLightDir);

	float specularFactor = clamp(pow(dot(R, tsEyeDir), specularExponent), 0.0, 1.0);

	

	vec4 r = gl_LightSource[0].diffuse * diffuse * diffuseFactor;

	r += gl_LightSource[0].specular * specularFactor * texValue.a;

	r += gl_LightSource[0].ambient;



	return r;

}

#endif





// Shader entry point

void main()

{

	gl_FragColor=CalculateColor();

}

vec4 CalculateColor()  { vec4 color; float curalpha; 
color = texture2D(seafloor_BM, gl_TexCoord[0].st);
curalpha = texture2D(grassblend, gl_TexCoord[1].st).a;
color = mix(color, texture2D(grass_BM, gl_TexCoord[2].st), curalpha);
curalpha = texture2D(rockblend, gl_TexCoord[1].st).a;
color = mix(color, texture2D(rock_BM, gl_TexCoord[3].st), curalpha);
curalpha = texture2D(adamblend, gl_TexCoord[1].st).a;
color = mix(color, texture2D(adamante_BM, gl_TexCoord[4].st), curalpha);
curalpha = texture2D(shoreblend, gl_TexCoord[1].st).a;
color = mix(color, texture2D(gravelshore_BM, gl_TexCoord[0].st), curalpha);
curalpha = texture2D(dirtyblend, gl_TexCoord[1].st).a;
color = mix(color, texture2D(dirtspots_BM, gl_TexCoord[0].st), curalpha);
return CalcFinal(ReadDiffuseColor(), color);}