54 lines
1.2 KiB
GLSL
54 lines
1.2 KiB
GLSL
#version 430
|
|
|
|
|
|
uniform mat4 projection;
|
|
uniform mat4 view;
|
|
|
|
uniform vec3 quad1, quad2;
|
|
|
|
layout(points) in;
|
|
layout(triangle_strip) out;
|
|
layout(max_vertices = 4) out;
|
|
|
|
in vec3 color_pass[];
|
|
in float lifetime_pass[];
|
|
in float size_pass[];
|
|
in int type_pass[];
|
|
|
|
smooth out vec2 tex_coords;
|
|
flat out vec4 color_part;
|
|
|
|
void main() {
|
|
//if(type_pass[0] != 0) {
|
|
// This is not a generator particle
|
|
|
|
vec3 old_pos = gl_in[0].gl_Position.xyz;
|
|
float size = size_pass[0];
|
|
mat4 view_projection_matrix = projection * view;
|
|
|
|
color_part = vec4(color_pass[0], lifetime_pass[0]);
|
|
|
|
vec3 pos = old_pos + (-quad1 - quad2) * size;
|
|
tex_coords = vec2(0.0, 0.0);
|
|
|
|
gl_Position = view_projection_matrix * vec4(pos, 1.0);
|
|
EmitVertex();
|
|
|
|
pos = old_pos + (-quad1 + quad2) * size;
|
|
tex_coords = vec2(0.0, 1.0);
|
|
gl_Position = view_projection_matrix * vec4(pos, 1.0);
|
|
EmitVertex();
|
|
|
|
pos = old_pos + (quad1 - quad2) * size;
|
|
tex_coords = vec2(1.0, 0.0);
|
|
gl_Position = view_projection_matrix * vec4(pos, 1.0);
|
|
EmitVertex();
|
|
|
|
pos = old_pos + (quad1 + quad2) * size;
|
|
tex_coords = vec2(1.0, 1.0);
|
|
gl_Position = view_projection_matrix * vec4(pos, 1.0);
|
|
EmitVertex();
|
|
|
|
EndPrimitive();
|
|
//}
|
|
} |