45 lines
1.2 KiB
GLSL
45 lines
1.2 KiB
GLSL
#pragma language glsl3
|
|
|
|
varying vec4 PixelNormal;
|
|
varying vec4 PixelTexture;
|
|
varying vec4 PixelWorldPosition;
|
|
|
|
uniform vec4 emission_color;
|
|
uniform vec4 ambient_color;
|
|
uniform vec4 diffuse_color;
|
|
uniform vec4 specular_color;
|
|
uniform float shininess;
|
|
|
|
uniform vec4 view_position;
|
|
uniform vec4 light_position;
|
|
//uniform int4 texture_channel;
|
|
|
|
uniform sampler2D texture_sampler;
|
|
|
|
out vec4 out_color;
|
|
|
|
void pixelmain()
|
|
{
|
|
//vec4 texColor = texture(texture_sampler, PixelTexture.xy);
|
|
|
|
vec3 normal = normalize(PixelNormal.xyz);
|
|
vec3 view_direction = normalize(view_position.xyz - PixelWorldPosition.xyz);
|
|
vec3 light_direction = normalize(light_position.xyz - PixelWorldPosition.xyz);
|
|
vec3 reflect_light_direction = reflect(-light_direction, normal);
|
|
|
|
vec3 emission = emission_color.xyz;
|
|
vec3 ambient = ambient_color.xyz;
|
|
vec3 diffuse = diffuse_color.xyz;
|
|
vec3 specular = specular_color.xyz;
|
|
|
|
float diffuse_intensity = max(dot(normal, light_direction), 0.0);
|
|
float specular_intensity = pow(max(dot(view_direction, reflect_light_direction), 0.0), shininess);
|
|
|
|
vec3 color = emission * 0;
|
|
color += ambient * 0;
|
|
color += diffuse * diffuse_intensity;
|
|
color += specular * specular_intensity * 0.3;
|
|
|
|
out_color = vec4(color, 1.0);
|
|
}
|