| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #version 450
- const vec2 OFFSETS[6] = vec2[]
- (
- vec2(-1.f, -1.f),
- vec2(-1.f, 1.f),
- vec2(1.f, -1.f),
- vec2(1.f, -1.f),
- vec2(-1.f, 1.f),
- vec2(1.f, 1.f)
- );
- layout (location = 0) out vec2 frag_offset;
- struct PointLight
- {
- vec4 position; // w is radius
- vec4 color; // w is intensity
- };
- layout (set = 0, binding = 0) uniform GlobalUBO
- {
- // MATRICES
- mat4 view;
- mat4 viewInverse;
- mat4 viewProjection;
- // LIGHTING
- vec4 globalLightDirection;
- vec4 ambientLighting;
- // POINT LIGHTS
- PointLight pointLights[8];
- int numLights;
- } ubo;
- layout(push_constant) uniform Push
- {
- vec4 position; // w is radius
- vec4 color; // w is intensity
- } push;
- void main()
- {
- frag_offset = OFFSETS[gl_VertexIndex];
- vec3 cam_world_right = {ubo.view[0][0], ubo.view[1][0], ubo.view[2][0]};
- vec3 cam_world_up = {ubo.view[0][1], ubo.view[1][1], ubo.view[2][1]};
- vec3 world_pos = push.position.xyz
- + push.position.w * frag_offset.x * cam_world_right
- + push.position.w * frag_offset.y * cam_world_up;
- gl_Position = ubo.viewProjection * vec4(world_pos, 1.f);
- }
|