generated from AfonsoCMSousa/CPP-OpenGLTemplate
27 lines
662 B
GLSL
27 lines
662 B
GLSL
#version 330 core
|
|
layout(location = 0) in vec3 aPos;
|
|
layout(location = 1) in vec4 aColor;
|
|
layout(location = 2) in float aLife;
|
|
layout(location = 4) in float size;
|
|
|
|
out vec4 vColor;
|
|
|
|
uniform mat4 uMVP;
|
|
uniform float uScreenHeight;
|
|
|
|
void main() {
|
|
float alpha;
|
|
if (aLife < 0.0) {
|
|
alpha = 1.0; // immortal — fully opaque
|
|
} else {
|
|
alpha = clamp(aLife / 2.0, 0.0, 1.0); // fade over last 2 seconds of life
|
|
}
|
|
|
|
vColor = vec4(aColor.rgb, aColor.a * alpha);
|
|
vec4 clip_pos = uMVP * vec4(aPos, 1.0);
|
|
gl_Position = clip_pos;
|
|
|
|
float base_size = 0.2 + size;
|
|
gl_PointSize = max(1.0, base_size / clip_pos.w);
|
|
}
|