diff options
Diffstat (limited to 'shaders/lightmap.vert')
-rw-r--r-- | shaders/lightmap.vert | 29 |
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); } |