openGL work and other parts
This commit is contained in:
76
res/gl/fragmentTex.glsl
Normal file
76
res/gl/fragmentTex.glsl
Normal file
@@ -0,0 +1,76 @@
|
||||
#ifdef GL_ES
|
||||
// Set default precision to medium
|
||||
precision mediump int;
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
uniform vec3 eyeWorldPos;
|
||||
uniform vec3 lightWorldPos;
|
||||
|
||||
uniform sampler2D texDiffuse;
|
||||
uniform sampler2D texNormalMap;
|
||||
|
||||
// interpolated values
|
||||
varying vec3 v_WorldPos;
|
||||
varying vec3 v_CamPos;
|
||||
varying vec3 v_normal;
|
||||
varying vec2 v_texcoord;
|
||||
varying mat3 normalMat;
|
||||
|
||||
void main() {
|
||||
|
||||
// diffuse fragment color
|
||||
|
||||
vec4 ambient = texture2D(texDiffuse, v_texcoord);
|
||||
vec4 diffuse = ambient * vec4(0.8, 0.6, 0.35, 1.0);
|
||||
vec4 specular = vec4(1,1,1,1);
|
||||
|
||||
// get the normal from the normal map
|
||||
//vec3 normal = vec3(0,0,1);
|
||||
vec3 normal = normalize(texture2D(texNormalMap, v_texcoord).rgb - 0.5) * 2.0;
|
||||
// and convert from texture's normal-space into the object's normal-space using the normal-matrix
|
||||
normal = normalize(normalMat * normal);
|
||||
|
||||
|
||||
// direction from fragment towards the light
|
||||
vec3 lightDir = normalize(lightWorldPos - v_WorldPos);
|
||||
|
||||
// direction from fragment towards the eye
|
||||
vec3 eyeDir = normalize(eyeWorldPos - v_WorldPos);
|
||||
|
||||
|
||||
// diffuse lighting
|
||||
float diffuseIntensity = max(dot(lightDir, normal), 0.0);
|
||||
|
||||
// specular lighting
|
||||
// vec3 h = normalize(lightDir + eyeDir);
|
||||
// float intSpec = max(dot(h, normal), 0.0);
|
||||
// float specularIntensity = pow(intSpec, 2.0);
|
||||
float specularIntensity = pow(max(0.0, dot(eyeDir, reflect(-lightDir, normal))), 16);
|
||||
|
||||
|
||||
// distance between fragment and light (in meter)
|
||||
float distToLight_m = length(lightWorldPos - v_WorldPos);
|
||||
float lightInt = clamp(1.0 / (distToLight_m / 10.0), 0.0, 1.0);
|
||||
|
||||
// Set fragment color from texture
|
||||
vec4 finalColor =
|
||||
ambient * 0.05 +
|
||||
diffuse * 0.95 * diffuseIntensity * lightInt +
|
||||
clamp(specular * specularIntensity, 0.0, 1.0) * 1.0;
|
||||
|
||||
gl_FragColor = clamp(finalColor, 0.0, 1.0);
|
||||
|
||||
// FOG
|
||||
//float mixing = pow((1.0 - v_CamPos.z * 3.0), 2);
|
||||
//gl_FragColor = mix(gl_FragColor, vec4(0.5, 0.5, 0.5, 1.0), 1.0-mixing);
|
||||
|
||||
//gl_FragColor = gl_FragColor * 1;
|
||||
|
||||
// gl_FragColor =
|
||||
// ambient * 0.001 +
|
||||
// diffuse * 0.009 * diffuseIntensity +
|
||||
// specular * 0.6 * specularIntensity;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user