123456789101112131415161718192021222324252627282930313233343536373839 |
- /*
- Normal - normal texture
- Base_Height - Base texture with height map in alpha channel
- */
- uniform sampler2D Normal;
- uniform sampler2D base_tex;
- uniform sampler2D Base_Height; // height in alpha ch.
- varying vec3 g_lightVec;
- varying vec3 g_viewVec;
- uniform vec3 cBumpSize;// = 0.02 * vec2 (2.0, -1.0);
- void main()
- {
- float LightAttenuation = clamp(1.0 - dot(g_lightVec, g_lightVec), 0.0, 1.0);
- vec3 lightVec = normalize(g_lightVec);
- vec3 viewVec = normalize(g_viewVec);
-
- float height = texture2D(Base_Height, gl_TexCoord[0].xy).r;
- height = height * cBumpSize.x + cBumpSize.y;
- vec2 newUV = gl_TexCoord[0].xy + viewVec.xy * height;
- vec4 color_base = texture2D(base_tex,newUV);
- vec3 bump = texture2D(Normal, newUV.xy).rgb * 2.0 - 1.0;
- bump = normalize(bump);
- //vec4 base = texture2D(Base_Height, newUV.xy);
- float base = texture2D(Base_Height, newUV.xy).r;
-
- float diffuse = clamp(dot(lightVec, bump), 0.0, 1.0);
- float specular = pow(clamp(dot(reflect(-viewVec, bump), lightVec), 0.0, 1.0), 16.0);
- gl_FragColor = color_base * gl_LightSource[0].diffuse
- * (diffuse * base + 0.7 * specular)
- * LightAttenuation;
-
- }
|