29 lines
786 B
GLSL
29 lines
786 B
GLSL
#version 330 core
|
|
layout(location = 0) in vec3 squareVertices;
|
|
layout(location = 1) in vec4 xyzs;
|
|
layout(location = 2) in vec4 color;
|
|
|
|
out vec2 UV;
|
|
out vec4 ParticleColor;
|
|
|
|
uniform vec3 CameraRight_worldspace;
|
|
uniform vec3 CameraUp_worldspace;
|
|
uniform mat4 VP;
|
|
|
|
void main()
|
|
{
|
|
float particleSize = xyzs.w; // because we encoded it this way.
|
|
vec3 particleCenter_wordspace = xyzs.xyz;
|
|
|
|
vec3 vertexPosition_worldspace =
|
|
particleCenter_wordspace
|
|
+ CameraRight_worldspace * squareVertices.x * particleSize
|
|
+ CameraUp_worldspace * squareVertices.y * particleSize;
|
|
|
|
// Output position of the vertex
|
|
gl_Position = VP * vec4(vertexPosition_worldspace, 1.0f);
|
|
|
|
// UV of the vertex. No special space for this one.
|
|
UV = squareVertices.xy + vec2(0.5, 0.5);
|
|
ParticleColor = color;
|
|
} |