spooky-game/assets/shaders/sprite-fragment.glsl

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);
}