Map renderer COORD_SCALE configurable and global use (#344)

This commit is contained in:
Longri
2017-03-29 13:21:18 +02:00
committed by Emux
parent 7a28788972
commit c580e1d7a5
15 changed files with 64 additions and 60 deletions

View File

@@ -33,6 +33,7 @@ import org.oscim.utils.FastMath;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import static org.oscim.backend.GLAdapter.gl; import static org.oscim.backend.GLAdapter.gl;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
public class HexagonRenderTest extends GdxMap { public class HexagonRenderTest extends GdxMap {
@@ -66,7 +67,7 @@ public class HexagonRenderTest extends GdxMap {
private BufferObject mVBO; private BufferObject mVBO;
int mZoom = -1; int mZoom = -1;
float mCellScale = 60 * MapRenderer.COORD_SCALE; float mCellScale = 60 * COORD_SCALE;
@Override @Override
public void update(GLViewport v) { public void update(GLViewport v) {

View File

@@ -6,13 +6,14 @@ attribute vec2 tex_coord;
uniform mat4 u_mv; uniform mat4 u_mv;
uniform mat4 u_proj; uniform mat4 u_proj;
uniform float u_scale; uniform float u_scale;
uniform float u_coord_scale;
uniform vec2 u_div; uniform vec2 u_div;
varying vec2 tex_c; varying vec2 tex_c;
const float coord_scale = 1.0/8.0;
void void
main(){ main(){
vec4 pos; vec4 pos;
vec2 dir = vertex.zw; vec2 dir = vertex.zw;
float coord_scale = 1.0 / u_coord_scale;
if (abs(mod(vertex.x, 2.0)) == 0.0) { if (abs(mod(vertex.x, 2.0)) == 0.0) {
pos = u_proj * (u_mv * vec4(vertex.xy + dir * u_scale, 0.0, 1.0)); pos = u_proj * (u_mv * vec4(vertex.xy + dir * u_scale, 0.0, 1.0));
} }

View File

@@ -21,6 +21,8 @@ package org.oscim.renderer;
import org.oscim.backend.canvas.Bitmap; import org.oscim.backend.canvas.Bitmap;
import org.oscim.renderer.bucket.BitmapBucket; import org.oscim.renderer.bucket.BitmapBucket;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
/** /**
* RenderLayer to draw a custom Bitmap. * RenderLayer to draw a custom Bitmap.
* NOTE: Only modify the Bitmap within a synchronized block! * NOTE: Only modify the Bitmap within a synchronized block!
@@ -91,7 +93,7 @@ public class BitmapRenderer extends BucketRenderer {
@Override @Override
public synchronized void render(GLViewport v) { public synchronized void render(GLViewport v) {
v.useScreenCoordinates(mWidth, mHeight, position, xOffset, yOffset, 8); v.useScreenCoordinates(mWidth, mHeight, position, xOffset, yOffset, COORD_SCALE);
BitmapBucket.Renderer.draw(buckets.get(), v, 1, 1); BitmapBucket.Renderer.draw(buckets.get(), v, 1, 1);
} }
} }

View File

@@ -33,6 +33,7 @@ import org.oscim.utils.FastMath;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
import static org.oscim.renderer.bucket.RenderBucket.BITMAP; import static org.oscim.renderer.bucket.RenderBucket.BITMAP;
import static org.oscim.renderer.bucket.RenderBucket.CIRCLE; import static org.oscim.renderer.bucket.RenderBucket.CIRCLE;
import static org.oscim.renderer.bucket.RenderBucket.HAIRLINE; import static org.oscim.renderer.bucket.RenderBucket.HAIRLINE;
@@ -173,7 +174,7 @@ public class BucketRenderer extends LayerRenderer {
* @param project if true apply view- and projection, or just view otherwise. * @param project if true apply view- and projection, or just view otherwise.
*/ */
protected void setMatrix(GLViewport v, boolean project) { protected void setMatrix(GLViewport v, boolean project) {
setMatrix(v, project, MapRenderer.COORD_SCALE); setMatrix(v, project, COORD_SCALE);
} }
protected void setMatrix(GLViewport v, boolean project, float coordScale) { protected void setMatrix(GLViewport v, boolean project, float coordScale) {

View File

@@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import static org.oscim.backend.GLAdapter.gl; import static org.oscim.backend.GLAdapter.gl;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
public abstract class ExtrusionRenderer extends LayerRenderer { public abstract class ExtrusionRenderer extends LayerRenderer {
static final Logger log = LoggerFactory.getLogger(ExtrusionRenderer.class); static final Logger log = LoggerFactory.getLogger(ExtrusionRenderer.class);
@@ -254,7 +255,7 @@ public abstract class ExtrusionRenderer extends LayerRenderer {
float x = (float) ((l.x - v.pos.x) * curScale); float x = (float) ((l.x - v.pos.x) * curScale);
float y = (float) ((l.y - v.pos.y) * curScale); float y = (float) ((l.y - v.pos.y) * curScale);
v.mvp.setTransScale(x, y, scale / MapRenderer.COORD_SCALE); v.mvp.setTransScale(x, y, scale / COORD_SCALE);
v.mvp.setValue(10, scale / 10); v.mvp.setValue(10, scale / 10);
v.mvp.multiplyLhs(v.viewproj); v.mvp.multiplyLhs(v.viewproj);

View File

@@ -38,7 +38,7 @@ public class MapRenderer {
/** /**
* scale factor used for short vertices * scale factor used for short vertices
*/ */
public static final float COORD_SCALE = 8.0f; public static float COORD_SCALE = 8.0f;
private final Map mMap; private final Map mMap;
private final GLViewport mViewport; private final GLViewport mViewport;

View File

@@ -21,12 +21,12 @@ import org.oscim.backend.canvas.Bitmap;
import org.oscim.renderer.GLShader; import org.oscim.renderer.GLShader;
import org.oscim.renderer.GLState; import org.oscim.renderer.GLState;
import org.oscim.renderer.GLViewport; import org.oscim.renderer.GLViewport;
import org.oscim.renderer.MapRenderer;
import org.oscim.renderer.bucket.TextureItem.TexturePool; import org.oscim.renderer.bucket.TextureItem.TexturePool;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
import static org.oscim.backend.GLAdapter.gl; import static org.oscim.backend.GLAdapter.gl;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
import static org.oscim.renderer.MapRenderer.MAX_INDICES; import static org.oscim.renderer.MapRenderer.MAX_INDICES;
import static org.oscim.renderer.MapRenderer.bindQuadIndicesVBO; import static org.oscim.renderer.MapRenderer.bindQuadIndicesVBO;
@@ -84,8 +84,8 @@ public class BitmapBucket extends TextureBucket {
private void setVertices(ShortBuffer vboData) { private void setVertices(ShortBuffer vboData) {
short[] buf = mVertices; short[] buf = mVertices;
short w = (short) (mWidth * MapRenderer.COORD_SCALE); short w = (short) (mWidth * COORD_SCALE);
short h = (short) (mHeight * MapRenderer.COORD_SCALE); short h = (short) (mHeight * COORD_SCALE);
short texMin = 0; short texMin = 0;
short texMax = 1; short texMax = 1;

View File

@@ -21,7 +21,6 @@ import org.oscim.core.GeometryBuffer;
import org.oscim.core.GeometryBuffer.GeometryType; import org.oscim.core.GeometryBuffer.GeometryType;
import org.oscim.core.MapElement; import org.oscim.core.MapElement;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.renderer.MapRenderer;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.utils.KeyMap; import org.oscim.utils.KeyMap;
import org.oscim.utils.KeyMap.HashItem; import org.oscim.utils.KeyMap.HashItem;
@@ -33,11 +32,11 @@ import org.slf4j.LoggerFactory;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
public class ExtrusionBucket extends RenderBucket { public class ExtrusionBucket extends RenderBucket {
static final Logger log = LoggerFactory.getLogger(ExtrusionBucket.class); static final Logger log = LoggerFactory.getLogger(ExtrusionBucket.class);
private static final float S = MapRenderer.COORD_SCALE;
private VertexData mIndices[]; private VertexData mIndices[];
private LineClipper mClipper; private LineClipper mClipper;
@@ -164,7 +163,7 @@ public class ExtrusionBucket extends RenderBucket {
synchronized (vertexPool) { synchronized (vertexPool) {
Vertex key = vertexPool.get(); Vertex key = vertexPool.get();
double scale = S * Tile.SIZE / 4096; double scale = COORD_SCALE * Tile.SIZE / 4096;
for (int k = 0, n = index.length; k < n; ) { for (int k = 0, n = index.length; k < n; ) {
if (index[k] < 0) if (index[k] < 0)
@@ -330,9 +329,9 @@ public class ExtrusionBucket extends RenderBucket {
// v = 0; // v = 0;
// } // }
// /* set coordinate */ // /* set coordinate */
// vertices[v++] = (short) (points[j++] * S); // vertices[v++] = (short) (points[j++] * COORD_SCALE);
// vertices[v++] = (short) (points[j++] * S); // vertices[v++] = (short) (points[j++] * COORD_SCALE);
// vertices[v++] = (short) (points[j++] * S); // vertices[v++] = (short) (points[j++] * COORD_SCALE);
// v++; // v++;
// } // }
// //
@@ -491,8 +490,8 @@ public class ExtrusionBucket extends RenderBucket {
} else { // if (addFace) } else { // if (addFace)
short c = (short) (color1 | fcolor << 8); short c = (short) (color1 | fcolor << 8);
/* add bottom and top vertex for each point */ /* add bottom and top vertex for each point */
vertexItems.add((short) (cx * S), (short) (cy * S), mh, c); vertexItems.add((short) (cx * COORD_SCALE), (short) (cy * COORD_SCALE), mh, c);
vertexItems.add((short) (cx * S), (short) (cy * S), h, c); vertexItems.add((short) (cx * COORD_SCALE), (short) (cy * COORD_SCALE), h, c);
//v += 8; //v += 8;
break; break;
@@ -512,8 +511,8 @@ public class ExtrusionBucket extends RenderBucket {
c = (short) (color2 | color1 << 8); c = (short) (color2 | color1 << 8);
/* add bottom and top vertex for each point */ /* add bottom and top vertex for each point */
vertexItems.add((short) (cx * S), (short) (cy * S), mh, c); vertexItems.add((short) (cx * COORD_SCALE), (short) (cy * COORD_SCALE), mh, c);
vertexItems.add((short) (cx * S), (short) (cy * S), h, c); vertexItems.add((short) (cx * COORD_SCALE), (short) (cy * COORD_SCALE), h, c);
color1 = color2; color1 = color2;

View File

@@ -26,12 +26,12 @@ import org.oscim.renderer.GLShader;
import org.oscim.renderer.GLState; import org.oscim.renderer.GLState;
import org.oscim.renderer.GLUtils; import org.oscim.renderer.GLUtils;
import org.oscim.renderer.GLViewport; import org.oscim.renderer.GLViewport;
import org.oscim.renderer.MapRenderer;
import org.oscim.theme.styles.LineStyle; import org.oscim.theme.styles.LineStyle;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import static org.oscim.backend.GLAdapter.gl; import static org.oscim.backend.GLAdapter.gl;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
/** /**
* Note: * Note:
@@ -42,7 +42,6 @@ import static org.oscim.backend.GLAdapter.gl;
public class LineBucket extends RenderBucket { public class LineBucket extends RenderBucket {
static final Logger log = LoggerFactory.getLogger(LineBucket.class); static final Logger log = LoggerFactory.getLogger(LineBucket.class);
private static final float COORD_SCALE = MapRenderer.COORD_SCALE;
/** /**
* scale factor mapping extrusion vector to short values * scale factor mapping extrusion vector to short values
*/ */
@@ -537,7 +536,7 @@ public class LineBucket extends RenderBucket {
/* factor to normalize extrusion vector and scale to coord scale */ /* factor to normalize extrusion vector and scale to coord scale */
private final static float COORD_SCALE_BY_DIR_SCALE = private final static float COORD_SCALE_BY_DIR_SCALE =
MapRenderer.COORD_SCALE / LineBucket.DIR_SCALE; COORD_SCALE / LineBucket.DIR_SCALE;
private final static int CAP_THIN = 0; private final static int CAP_THIN = 0;
private final static int CAP_BUTT = 1; private final static int CAP_BUTT = 1;

View File

@@ -247,7 +247,7 @@ public final class LineTexBucket extends LineBucket {
/* factor to normalize extrusion vector and scale to coord scale */ /* factor to normalize extrusion vector and scale to coord scale */
private final static float COORD_SCALE_BY_DIR_SCALE = private final static float COORD_SCALE_BY_DIR_SCALE =
MapRenderer.COORD_SCALE / LineBucket.DIR_SCALE; COORD_SCALE / LineBucket.DIR_SCALE;
private static int mVertexFlipID; private static int mVertexFlipID;

View File

@@ -25,7 +25,6 @@ import org.oscim.renderer.GLShader;
import org.oscim.renderer.GLState; import org.oscim.renderer.GLState;
import org.oscim.renderer.GLUtils; import org.oscim.renderer.GLUtils;
import org.oscim.renderer.GLViewport; import org.oscim.renderer.GLViewport;
import org.oscim.renderer.MapRenderer;
import org.oscim.renderer.bucket.VertexData.Chunk; import org.oscim.renderer.bucket.VertexData.Chunk;
import org.oscim.theme.styles.AreaStyle; import org.oscim.theme.styles.AreaStyle;
import org.oscim.utils.ColorUtil; import org.oscim.utils.ColorUtil;
@@ -134,8 +133,7 @@ public class MeshBucket extends RenderBucket {
Chunk chunk = vertexItems.obtainChunk(); Chunk chunk = vertexItems.obtainChunk();
tess.getVertices(chunk.vertices, offset, size, tess.getVertices(chunk.vertices, offset, size, COORD_SCALE);
MapRenderer.COORD_SCALE);
offset += size; offset += size;
vertexItems.releaseChunk(size); vertexItems.releaseChunk(size);

View File

@@ -28,7 +28,6 @@ import org.oscim.renderer.GLShader;
import org.oscim.renderer.GLState; import org.oscim.renderer.GLState;
import org.oscim.renderer.GLUtils; import org.oscim.renderer.GLUtils;
import org.oscim.renderer.GLViewport; import org.oscim.renderer.GLViewport;
import org.oscim.renderer.MapRenderer;
import org.oscim.theme.styles.AreaStyle; import org.oscim.theme.styles.AreaStyle;
import org.oscim.utils.ArrayUtils; import org.oscim.utils.ArrayUtils;
import org.oscim.utils.geom.LineClipper; import org.oscim.utils.geom.LineClipper;
@@ -39,6 +38,7 @@ import org.slf4j.LoggerFactory;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
import static org.oscim.backend.GLAdapter.gl; import static org.oscim.backend.GLAdapter.gl;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
import static org.oscim.utils.FastMath.clamp; import static org.oscim.utils.FastMath.clamp;
/** /**
@@ -52,8 +52,6 @@ public final class PolygonBucket extends RenderBucket {
public final static int CLIP_DEPTH = 2; public final static int CLIP_DEPTH = 2;
public final static int CLIP_TEST_DEPTH = 3; public final static int CLIP_TEST_DEPTH = 3;
private static final float S = MapRenderer.COORD_SCALE;
public static boolean enableTexture = true; public static boolean enableTexture = true;
public AreaStyle area; public AreaStyle area;
@@ -75,7 +73,7 @@ public final class PolygonBucket extends RenderBucket {
final float[] bbox = new float[8]; final float[] bbox = new float[8];
public void addPolygon(float[] points, int[] index) { public void addPolygon(float[] points, int[] index) {
short center = (short) ((Tile.SIZE >> 1) * S); short center = (short) ((Tile.SIZE >> 1) * COORD_SCALE);
boolean outline = area.strokeWidth > 0; boolean outline = area.strokeWidth > 0;
@@ -96,8 +94,8 @@ public final class PolygonBucket extends RenderBucket {
int inPos = pos; int inPos = pos;
for (int j = 0; j < length; j += 2) { for (int j = 0; j < length; j += 2) {
float x = (points[inPos++] * S); float x = (points[inPos++] * COORD_SCALE);
float y = (points[inPos++] * S); float y = (points[inPos++] * COORD_SCALE);
xmax = Math.max(xmax, x); xmax = Math.max(xmax, x);
xmin = Math.min(xmin, x); xmin = Math.min(xmin, x);
ymax = Math.max(ymax, y); ymax = Math.max(ymax, y);
@@ -117,8 +115,8 @@ public final class PolygonBucket extends RenderBucket {
} }
} }
vertexItems.add((short) (points[pos + 0] * S), vertexItems.add((short) (points[pos + 0] * COORD_SCALE),
(short) (points[pos + 1] * S)); (short) (points[pos + 1] * COORD_SCALE));
numVertices++; numVertices++;
pos += length; pos += length;

View File

@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
import static org.oscim.renderer.bucket.RenderBucket.CIRCLE; import static org.oscim.renderer.bucket.RenderBucket.CIRCLE;
import static org.oscim.renderer.bucket.RenderBucket.HAIRLINE; import static org.oscim.renderer.bucket.RenderBucket.HAIRLINE;
import static org.oscim.renderer.bucket.RenderBucket.LINE; import static org.oscim.renderer.bucket.RenderBucket.LINE;
@@ -434,7 +435,7 @@ public class RenderBuckets extends TileData {
private static short[] fillCoords; private static short[] fillCoords;
static { static {
short s = (short) (Tile.SIZE * MapRenderer.COORD_SCALE); short s = (short) (Tile.SIZE * COORD_SCALE);
fillCoords = new short[]{0, s, s, s, 0, 0, s, 0}; fillCoords = new short[]{0, s, s, s, 0, 0, s, 0};
} }

View File

@@ -28,10 +28,11 @@ import org.slf4j.LoggerFactory;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
import static org.oscim.renderer.MapRenderer.COORD_SCALE;
public final class SymbolBucket extends TextureBucket { public final class SymbolBucket extends TextureBucket {
static final Logger log = LoggerFactory.getLogger(SymbolBucket.class); static final Logger log = LoggerFactory.getLogger(SymbolBucket.class);
private final static float SCALE = 8.0f;
private final static int VERTICES_PER_SPRITE = 4; private final static int VERTICES_PER_SPRITE = 4;
private final static int LBIT_MASK = 0xfffffffe; private final static int LBIT_MASK = 0xfffffffe;
@@ -132,10 +133,10 @@ public final class SymbolBucket extends TextureBucket {
continue; continue;
} }
short u1 = (short) (SCALE * x); short u1 = (short) (COORD_SCALE * x);
short v1 = (short) (SCALE * y); short v1 = (short) (COORD_SCALE * y);
short u2 = (short) (SCALE * (x + width)); short u2 = (short) (COORD_SCALE * (x + width));
short v2 = (short) (SCALE * (y + height)); short v2 = (short) (COORD_SCALE * (y + height));
PointF prevOffset = null; PointF prevOffset = null;
short x1 = 0, y1 = 0, x2 = 0, y2 = 0; short x1 = 0, y1 = 0, x2 = 0, y2 = 0;
@@ -156,25 +157,25 @@ public final class SymbolBucket extends TextureBucket {
float hw = width / 2f; float hw = width / 2f;
float hh = height / 2f; float hh = height / 2f;
x1 = (short) (SCALE * (-hw)); x1 = (short) (COORD_SCALE * (-hw));
x2 = (short) (SCALE * (hw)); x2 = (short) (COORD_SCALE * (hw));
y1 = (short) (SCALE * (hh)); y1 = (short) (COORD_SCALE * (hh));
y2 = (short) (SCALE * (-hh)); y2 = (short) (COORD_SCALE * (-hh));
} else { } else {
float hw = (float) (it.offset.x * width); float hw = (float) (it.offset.x * width);
float hh = (float) (it.offset.y * height); float hh = (float) (it.offset.y * height);
x1 = (short) (SCALE * (-hw)); x1 = (short) (COORD_SCALE * (-hw));
x2 = (short) (SCALE * (width - hw)); x2 = (short) (COORD_SCALE * (width - hw));
y1 = (short) (SCALE * (height - hh)); y1 = (short) (COORD_SCALE * (height - hh));
y2 = (short) (SCALE * (-hh)); y2 = (short) (COORD_SCALE * (-hh));
} }
} }
/* add vertices */ /* add vertices */
short tx = (short) ((int) (SCALE * it.x) & LBIT_MASK short tx = (short) ((int) (COORD_SCALE * it.x) & LBIT_MASK
| (it.billboard ? 1 : 0)); | (it.billboard ? 1 : 0));
short ty = (short) (SCALE * it.y); short ty = (short) (COORD_SCALE * it.y);
vertexItems.add(tx, ty, x1, y1, u1, v2); vertexItems.add(tx, ty, x1, y1, u1, v2);
vertexItems.add(tx, ty, x1, y2, u1, v1); vertexItems.add(tx, ty, x1, y2, u1, v1);
@@ -192,17 +193,17 @@ public final class SymbolBucket extends TextureBucket {
offsetX = 0; offsetX = 0;
offsetY = 0; offsetY = 0;
} else { } else {
offsetX = (short) (((width / 2f) - (it.offset.x * width)) * SCALE); offsetX = (short) (((width / 2f) - (it.offset.x * width)) * COORD_SCALE);
offsetY = (short) (((height / 2f) - (it.offset.y * height)) * SCALE); offsetY = (short) (((height / 2f) - (it.offset.y * height)) * COORD_SCALE);
} }
float hw = width / 2f; float hw = width / 2f;
float hh = height / 2f; float hh = height / 2f;
minX = (SCALE * (-hw)); minX = (COORD_SCALE * (-hw));
maxX = (SCALE * (hw)); maxX = (COORD_SCALE * (hw));
minY = (SCALE * (hh)); minY = (COORD_SCALE * (hh));
maxY = (SCALE * (-hh)); maxY = (COORD_SCALE * (-hh));
// target drawing rectangle // target drawing rectangle
{ // lower-left { // lower-left
@@ -231,9 +232,9 @@ public final class SymbolBucket extends TextureBucket {
} }
/* add vertices */ /* add vertices */
short tx = (short) (((int) (SCALE * it.x) & LBIT_MASK short tx = (short) (((int) (COORD_SCALE * it.x) & LBIT_MASK
| (it.billboard ? 1 : 0)) + offsetX); | (it.billboard ? 1 : 0)) + offsetX);
short ty = (short) ((SCALE * it.y) + offsetY); short ty = (short) ((COORD_SCALE * it.y) + offsetY);
vertexItems.add(tx, ty, points[0], points[1], u1, v2); // lower-left vertexItems.add(tx, ty, points[0], points[1], u1, v2); // lower-left
vertexItems.add(tx, ty, points[2], points[3], u1, v1); // upper-left vertexItems.add(tx, ty, points[2], points[3], u1, v1); // upper-left

View File

@@ -83,7 +83,7 @@ public class TextureBucket extends RenderBucket {
} }
static class Shader extends GLShader { static class Shader extends GLShader {
int uMV, uProj, uScale, uTexSize, aPos, aTexCoord; int uMV, uProj, uScale, uCoordScale, uTexSize, aPos, aTexCoord;
Shader() { Shader() {
if (!create("texture_layer")) if (!create("texture_layer"))
@@ -92,6 +92,7 @@ public class TextureBucket extends RenderBucket {
uMV = getUniform("u_mv"); uMV = getUniform("u_mv");
uProj = getUniform("u_proj"); uProj = getUniform("u_proj");
uScale = getUniform("u_scale"); uScale = getUniform("u_scale");
uCoordScale = getUniform("u_coord_scale");
uTexSize = getUniform("u_div"); uTexSize = getUniform("u_div");
aPos = getAttrib("vertex"); aPos = getAttrib("vertex");
aTexCoord = getAttrib("tex_coord"); aTexCoord = getAttrib("tex_coord");
@@ -127,6 +128,7 @@ public class TextureBucket extends RenderBucket {
TextureBucket tb = (TextureBucket) b; TextureBucket tb = (TextureBucket) b;
gl.uniform1f(shader.uScale, tb.fixed ? 1 / scale : 1); gl.uniform1f(shader.uScale, tb.fixed ? 1 / scale : 1);
gl.uniform1f(shader.uCoordScale, COORD_SCALE);
v.proj.setAsUniform(shader.uProj); v.proj.setAsUniform(shader.uProj);
v.mvp.setAsUniform(shader.uMV); v.mvp.setAsUniform(shader.uMV);