From 0e9a86e3553913abb8ebb3d8926e2b99db8d4008 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 30 Jan 2015 10:51:28 -0800 Subject: [PATCH] make line-opacity work with line-image, fixes #970 --- js/render/draw_line.js | 1 + js/render/painter.js | 2 +- shaders/linepattern.fragment.glsl | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/js/render/draw_line.js b/js/render/draw_line.js index 3b262b390ed..e482e727e51 100644 --- a/js/render/draw_line.js +++ b/js/render/draw_line.js @@ -109,6 +109,7 @@ module.exports = function drawLine(painter, layer, posMatrix, tile) { gl.uniform2fv(shader.u_pattern_tl, imagePos.tl); gl.uniform2fv(shader.u_pattern_br, imagePos.br); gl.uniform1f(shader.u_fade, fade); + gl.uniform1f(shader.u_opacity, layer.paint['line-opacity']); } else { shader = painter.lineShader; diff --git a/js/render/painter.js b/js/render/painter.js index 6a032f7b643..ab6365f010e 100644 --- a/js/render/painter.js +++ b/js/render/painter.js @@ -72,7 +72,7 @@ GLPainter.prototype.setup = function() { this.linepatternShader = gl.initializeShader('linepattern', ['a_pos', 'a_data'], - ['u_matrix', 'u_exmatrix', 'u_linewidth', 'u_ratio', 'u_pattern_size', 'u_pattern_tl', 'u_pattern_br', 'u_point', 'u_blur', 'u_fade']); + ['u_matrix', 'u_exmatrix', 'u_linewidth', 'u_ratio', 'u_pattern_size', 'u_pattern_tl', 'u_pattern_br', 'u_point', 'u_blur', 'u_fade', 'u_opacity']); this.linesdfpatternShader = gl.initializeShader('linesdfpattern', ['a_pos', 'a_data'], diff --git a/shaders/linepattern.fragment.glsl b/shaders/linepattern.fragment.glsl index 0a2f4846c34..45be7c8c2fd 100644 --- a/shaders/linepattern.fragment.glsl +++ b/shaders/linepattern.fragment.glsl @@ -6,6 +6,7 @@ uniform vec2 u_pattern_size; uniform vec2 u_pattern_tl; uniform vec2 u_pattern_br; uniform float u_fade; +uniform float u_opacity; uniform sampler2D u_image; @@ -31,5 +32,7 @@ void main() { vec4 color = texture2D(u_image, pos) * (1.0 - u_fade) + u_fade * texture2D(u_image, pos2); + alpha *= u_opacity; + gl_FragColor = color * alpha; }