Loading play-services-core/src/main/java/org/microg/gms/maps/markup/CircleImpl.java +21 −8 Original line number Original line Diff line number Diff line Loading @@ -208,9 +208,11 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { private int matrixPosition; private int matrixPosition; private int phase; private int phase; private int scale; private int scale; private int direction; private int color; private int color; private int borderColor; private int borderWidth; @Override @Override public void update(GLViewport viewport) { public void update(GLViewport viewport) { if (!isEnabled()) { if (!isEnabled()) { Loading Loading @@ -254,6 +256,7 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { float radius = (float) (drawRadius * viewport.pos.scale); float radius = (float) (drawRadius * viewport.pos.scale); GL.uniform1f(scale, radius); GL.uniform1f(scale, radius); GL.uniform1f(borderWidth, (float) (options.getStrokeWidth() / (viewport.pos.scale * 10))); double x = indicatorPosition.x - viewport.pos.x; double x = indicatorPosition.x - viewport.pos.x; double y = indicatorPosition.y - viewport.pos.y; double y = indicatorPosition.y - viewport.pos.y; Loading @@ -263,7 +266,6 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { viewport.mvp.multiplyMM(viewport.viewproj, viewport.mvp); viewport.mvp.multiplyMM(viewport.viewproj, viewport.mvp); viewport.mvp.setAsUniform(matrixPosition); viewport.mvp.setAsUniform(matrixPosition); GL.uniform1f(phase, 1); GL.uniform1f(phase, 1); GL.uniform2f(direction, 0, 0); float alpha = Color.aToFloat(options.getFillColor()); float alpha = Color.aToFloat(options.getFillColor()); GL.uniform4f(color, GL.uniform4f(color, Color.rToFloat(options.getFillColor()) * alpha, Color.rToFloat(options.getFillColor()) * alpha, Loading @@ -271,6 +273,13 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { Color.bToFloat(options.getFillColor()) * alpha, Color.bToFloat(options.getFillColor()) * alpha, alpha); alpha); alpha = Color.aToFloat(options.getStrokeColor()); GL.uniform4f(borderColor, Color.rToFloat(options.getStrokeColor()) * alpha, Color.gToFloat(options.getStrokeColor()) * alpha, Color.bToFloat(options.getStrokeColor()) * alpha, alpha); GL.drawArrays(GL20.GL_TRIANGLE_STRIP, 0, 4); GL.drawArrays(GL20.GL_TRIANGLE_STRIP, 0, 4); } } Loading @@ -283,14 +292,15 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { matrixPosition = GL.getUniformLocation(shader, "u_mvp"); matrixPosition = GL.getUniformLocation(shader, "u_mvp"); phase = GL.getUniformLocation(shader, "u_phase"); phase = GL.getUniformLocation(shader, "u_phase"); scale = GL.getUniformLocation(shader, "u_scale"); scale = GL.getUniformLocation(shader, "u_scale"); direction = GL.getUniformLocation(shader, "u_dir"); color = GL.getUniformLocation(shader, "u_color"); color = GL.getUniformLocation(shader, "u_color"); borderColor = GL.getUniformLocation(shader, "u_border_color"); borderWidth = GL.getUniformLocation(shader, "u_border_width"); return true; return true; } } } } } } private final static String vShaderStr = "" private final static String vShaderStr = "" + "precision mediump float;" + "precision mediump float;" + "uniform mat4 u_mvp;" + "uniform mat4 u_mvp;" Loading @@ -307,13 +317,16 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { + "precision mediump float;" + "precision mediump float;" + "varying vec2 v_tex;" + "varying vec2 v_tex;" + "uniform float u_scale;" + "uniform float u_scale;" + "uniform float u_phase;" + "uniform vec2 u_dir;" + "uniform vec4 u_color;" + "uniform vec4 u_color;" + "uniform float u_border_width;" + "uniform vec4 u_border_color;" + "void main() {" + "void main() {" + " float len = 1.0 - length(v_tex);" + " float len = 1.0 - length(v_tex);" + " float a = smoothstep(0.0, 2.0 / u_scale, len);" + " float a = smoothstep(0.0, 2.0 / u_scale, len);" + " gl_FragColor = u_color * a;" + " if ( len > u_border_width )" + " gl_FragColor = u_color;" + " else " + " gl_FragColor = u_border_color;" + " gl_FragColor = gl_FragColor * a;" + "}"; + "}"; } } Loading
play-services-core/src/main/java/org/microg/gms/maps/markup/CircleImpl.java +21 −8 Original line number Original line Diff line number Diff line Loading @@ -208,9 +208,11 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { private int matrixPosition; private int matrixPosition; private int phase; private int phase; private int scale; private int scale; private int direction; private int color; private int color; private int borderColor; private int borderWidth; @Override @Override public void update(GLViewport viewport) { public void update(GLViewport viewport) { if (!isEnabled()) { if (!isEnabled()) { Loading Loading @@ -254,6 +256,7 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { float radius = (float) (drawRadius * viewport.pos.scale); float radius = (float) (drawRadius * viewport.pos.scale); GL.uniform1f(scale, radius); GL.uniform1f(scale, radius); GL.uniform1f(borderWidth, (float) (options.getStrokeWidth() / (viewport.pos.scale * 10))); double x = indicatorPosition.x - viewport.pos.x; double x = indicatorPosition.x - viewport.pos.x; double y = indicatorPosition.y - viewport.pos.y; double y = indicatorPosition.y - viewport.pos.y; Loading @@ -263,7 +266,6 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { viewport.mvp.multiplyMM(viewport.viewproj, viewport.mvp); viewport.mvp.multiplyMM(viewport.viewproj, viewport.mvp); viewport.mvp.setAsUniform(matrixPosition); viewport.mvp.setAsUniform(matrixPosition); GL.uniform1f(phase, 1); GL.uniform1f(phase, 1); GL.uniform2f(direction, 0, 0); float alpha = Color.aToFloat(options.getFillColor()); float alpha = Color.aToFloat(options.getFillColor()); GL.uniform4f(color, GL.uniform4f(color, Color.rToFloat(options.getFillColor()) * alpha, Color.rToFloat(options.getFillColor()) * alpha, Loading @@ -271,6 +273,13 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { Color.bToFloat(options.getFillColor()) * alpha, Color.bToFloat(options.getFillColor()) * alpha, alpha); alpha); alpha = Color.aToFloat(options.getStrokeColor()); GL.uniform4f(borderColor, Color.rToFloat(options.getStrokeColor()) * alpha, Color.gToFloat(options.getStrokeColor()) * alpha, Color.bToFloat(options.getStrokeColor()) * alpha, alpha); GL.drawArrays(GL20.GL_TRIANGLE_STRIP, 0, 4); GL.drawArrays(GL20.GL_TRIANGLE_STRIP, 0, 4); } } Loading @@ -283,14 +292,15 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { matrixPosition = GL.getUniformLocation(shader, "u_mvp"); matrixPosition = GL.getUniformLocation(shader, "u_mvp"); phase = GL.getUniformLocation(shader, "u_phase"); phase = GL.getUniformLocation(shader, "u_phase"); scale = GL.getUniformLocation(shader, "u_scale"); scale = GL.getUniformLocation(shader, "u_scale"); direction = GL.getUniformLocation(shader, "u_dir"); color = GL.getUniformLocation(shader, "u_color"); color = GL.getUniformLocation(shader, "u_color"); borderColor = GL.getUniformLocation(shader, "u_border_color"); borderWidth = GL.getUniformLocation(shader, "u_border_width"); return true; return true; } } } } } } private final static String vShaderStr = "" private final static String vShaderStr = "" + "precision mediump float;" + "precision mediump float;" + "uniform mat4 u_mvp;" + "uniform mat4 u_mvp;" Loading @@ -307,13 +317,16 @@ public class CircleImpl extends ICircleDelegate.Stub implements Markup { + "precision mediump float;" + "precision mediump float;" + "varying vec2 v_tex;" + "varying vec2 v_tex;" + "uniform float u_scale;" + "uniform float u_scale;" + "uniform float u_phase;" + "uniform vec2 u_dir;" + "uniform vec4 u_color;" + "uniform vec4 u_color;" + "uniform float u_border_width;" + "uniform vec4 u_border_color;" + "void main() {" + "void main() {" + " float len = 1.0 - length(v_tex);" + " float len = 1.0 - length(v_tex);" + " float a = smoothstep(0.0, 2.0 / u_scale, len);" + " float a = smoothstep(0.0, 2.0 / u_scale, len);" + " gl_FragColor = u_color * a;" + " if ( len > u_border_width )" + " gl_FragColor = u_color;" + " else " + " gl_FragColor = u_border_color;" + " gl_FragColor = gl_FragColor * a;" + "}"; + "}"; } }