55 lines
983 B
GLSL
55 lines
983 B
GLSL
in vec2 interpolated_uv;
|
|
in vec3 interpolated_normal;
|
|
in vec4 interpolated_colors;
|
|
out vec4 output_color;
|
|
|
|
in float selected;
|
|
|
|
uniform sampler2D base_color_texture;
|
|
uniform sampler2D emissive_texture;
|
|
|
|
uniform vec3 emissive_factor;
|
|
uniform vec4 base_color_factor;
|
|
uniform int alpha_mode;
|
|
uniform float alpha_cutoff;
|
|
uniform vec4 highlight_color;
|
|
|
|
#define ALPHA_OPAQUE 0
|
|
#define ALPHA_MASK 1
|
|
#define ALPHA_BLEND 2
|
|
|
|
|
|
void main()
|
|
{
|
|
vec4 color = base_color_factor * texture(base_color_texture, interpolated_uv);
|
|
if(interpolated_colors != vec4(0))
|
|
color *= interpolated_colors;
|
|
|
|
if(alpha_mode == ALPHA_MASK)
|
|
{
|
|
if(color.a < alpha_cutoff)
|
|
{
|
|
discard;
|
|
}
|
|
}
|
|
|
|
//slight blend optimization
|
|
if(alpha_mode == ALPHA_BLEND)
|
|
{
|
|
if(color.a < 0.01)
|
|
{
|
|
discard;
|
|
}
|
|
}
|
|
|
|
vec4 emissive = vec4(emissive_factor, 1) * texture(emissive_texture, interpolated_uv);
|
|
|
|
color = color + emissive;
|
|
output_color = color;
|
|
|
|
if(selected >= 0.999)
|
|
{
|
|
output_color = highlight_color;
|
|
}
|
|
}
|