summaryrefslogtreecommitdiffhomepage
path: root/shaders/lightmap.vert
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/lightmap.vert')
-rw-r--r--shaders/lightmap.vert29
1 files changed, 22 insertions, 7 deletions
diff --git a/shaders/lightmap.vert b/shaders/lightmap.vert
index 21a4d7a9..479add5c 100644
--- a/shaders/lightmap.vert
+++ b/shaders/lightmap.vert
@@ -1,14 +1,29 @@
precision mediump float;
-layout (location = 0) uniform vec4 color_intensity;
-layout (location = 1) uniform vec2 center;
-layout (location = 2) uniform uint falloff;
-layout (location = 3) uniform vec2 size;
-layout (location = 4) uniform uint mode;
-layout (location = 5) uniform sampler2D sampler;
+layout (location = 0) uniform sampler2D sampler;
+layout (location = 1) uniform vec3 light_color;
+layout (location = 2) uniform vec2 size;
+layout (location = 3) uniform vec2 center_fragcoord;
+layout (location = 4) uniform vec2 center_clip;
+layout (location = 5) uniform float intensity;
+layout (location = 6) uniform uint mode;
+layout (location = 7) uniform uint falloff;
+
+layout (location = 0) flat out vec3 frag_color;
+layout (location = 1) flat out float frag_intensity;
layout (location = 0) in vec2 position;
void main() {
- gl_Position = vec4(position.x, position.y, 0, 1);
+ vec2 pos = position.xy;
+ vec2 dir = pos - center_clip;
+ float len = length(dir);
+ if (len > 1e-6)
+ {
+ vec2 dir_norm = dir * (1/len);
+ pos += dir_norm * position.z * 4;
+ }
+ gl_Position = vec4(pos, 0, 1);
+ frag_intensity = color_intensity.a;
+ frag_falloff = uint(position_falloff.w);
}