53 lines
1.3 KiB
GLSL
Executable File
53 lines
1.3 KiB
GLSL
Executable File
#version 130
|
|
|
|
in vec3 vPosition2;
|
|
in vec2 vTexCoords2;
|
|
in vec3 vNormal2;
|
|
|
|
out vec4 outColor;
|
|
|
|
uniform vec3 diffuseColor;
|
|
uniform sampler2D diffuseTextureID;
|
|
|
|
uniform mat4 viewMatrix;
|
|
|
|
uniform vec3 light_color;
|
|
uniform float light_intensity;
|
|
uniform vec3 light_position;
|
|
vec3 light_position_viewSpace;
|
|
|
|
|
|
void main() {
|
|
// Texturing
|
|
vec2 flipped_texcoord = vec2(vTexCoords2.x, 1.0 - vTexCoords2.y);
|
|
vec4 pixelColor = texture2D(diffuseTextureID, flipped_texcoord);
|
|
|
|
light_position_viewSpace = (viewMatrix * vec4(light_position, 1)).xyz;
|
|
|
|
// Lighting
|
|
vec3 Lp = light_position_viewSpace;
|
|
float Li = light_intensity;
|
|
vec3 Ka = vec3(0.2);
|
|
vec3 Kd = light_color;
|
|
vec3 Ks = vec3(0.6);
|
|
float shininess = 1;
|
|
vec3 n = normalize(vNormal2);
|
|
vec3 s = normalize(vec3(Lp) - vPosition2);
|
|
vec3 v = normalize(vec3(-vPosition2));
|
|
vec3 h = normalize(v + s);
|
|
vec3 pixelLight = vec3(Li * (Ka * pixelColor.rgb) +
|
|
(Kd * pixelColor.rgb) * max(dot(s, n), 0.0) +
|
|
(Ks * pixelColor.rgb) * pow(max(dot(h, n), 0.0), shininess));
|
|
|
|
// Discard fragment if transparent
|
|
if (pixelColor.a < 0.5f)
|
|
{
|
|
discard;
|
|
}
|
|
|
|
// Final color
|
|
outColor = vec4(pixelColor.rgb*diffuseColor*pixelLight, pixelColor.a);
|
|
//outColor = vec4((pixelColor.rgb), 1);//*diffuseColor*pixelLight).x, 1, 1, 1);
|
|
//outColor = vec4(1,1,1,1) + vec4(diffuseColor, 1) - vec4(diffuseColor, 1);
|
|
}
|