diff --git a/assets/locales/en/terrarum.json b/assets/locales/en/terrarum.json index ba021f3dd..6967c092d 100644 --- a/assets/locales/en/terrarum.json +++ b/assets/locales/en/terrarum.json @@ -8,6 +8,7 @@ "COPYRIGHT_GNU_GPL_3": "Distributed under GNU GPL 3", "GAME_ACTION_MOVE_VERB" : "Move", "GAME_ACTION_ZOOM" : "Zoom", + "GAME_ACTION_ZOOM_OUT" : "Zoom out", "MENU_IO_AUTOSAVE": "Autosave", "MENU_IO_CLEAR": "Clear", "MENU_IO_IMPORT": "Import", diff --git a/src/com/badlogic/gdx/graphics/g2d/UnpackedColourSpriteBatch.java b/src/com/badlogic/gdx/graphics/g2d/UnpackedColourSpriteBatch.java index ccb388f90..f88fa5089 100644 --- a/src/com/badlogic/gdx/graphics/g2d/UnpackedColourSpriteBatch.java +++ b/src/com/badlogic/gdx/graphics/g2d/UnpackedColourSpriteBatch.java @@ -35,7 +35,11 @@ import net.torvald.gdx.graphics.Cvec; import java.nio.Buffer; /** Draws batched quads using indices. - * Created by minjaesong on 2023-09-14. + * + * This version of SpriteBatch assigns full non-packed float32 colour attribute to the vertices, as well as extra + * float32 "colour" attribute under the name 'a_generic' (accessible via 'vec4 v_generic'). + * + * Created by minjaesong on 2023-09-14. * @see Batch * @author mzechner * @author Nathan Sweet @@ -71,7 +75,6 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { private final Color color = new Color(1, 1, 1, 1); private final Cvec generic = new Cvec(0); - float colorPacked = Color.WHITE_FLOAT_BITS; /** Number of render calls since the last {@link #begin()}. **/ public int renderCalls = 0; @@ -94,6 +97,8 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { this(size, null); } + private static int VERTEX_ATTR_SIZE = 48; + /** Constructs a new SpriteBatch. Sets the projection matrix to an orthographic projection with y-axis point upwards, x-axis * point to the right and the origin being in the bottom left corner of the screen. The projection will be pixel perfect with * respect to the current screen resolution. @@ -103,7 +108,7 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { * @param size The max number of sprites in a single batch. Max of 8191. * @param defaultShader The default shader to use. This is not owned by the SpriteBatch and must be disposed separately. */ public UnpackedColourSpriteBatch (int size, ShaderProgram defaultShader) { - super(size, defaultShader); + super(size, (defaultShader == null) ? createDefaultShader() : defaultShader); // 32767 is max vertex index, so 32767 / 4 vertices per sprite = 8191 sprites max. if (size > 8191) throw new IllegalArgumentException("Can't have more than 8191 sprites per batch: " + size); @@ -118,7 +123,7 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { projectionMatrix.setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); - vertices = new float[size * 48]; + vertices = new float[size * VERTEX_ATTR_SIZE]; int len = size * 6; short[] indices = new short[len]; @@ -214,13 +219,11 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { @Override public void setColor (Color tint) { color.set(tint); - colorPacked = tint.toFloatBits(); } @Override public void setColor (float r, float g, float b, float a) { color.set(r, g, b, a); - colorPacked = color.toFloatBits(); } @Override @@ -243,13 +246,73 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { @Override public void setPackedColor (float packedColor) { - Color.abgr8888ToColor(color, packedColor); - this.colorPacked = packedColor; + throw new UnsupportedOperationException(); } @Override public float getPackedColor () { - return colorPacked; + throw new UnsupportedOperationException(); + } + + private void appendVertices(float x1, float y1, float u1, float v1, + float x2, float y2, float u2, float v2, + float x3, float y3, float u3, float v3, + float x4, float y4, float u4, float v4) { + + int idx = this.idx; + vertices[idx] = x1; + vertices[idx + 1] = y1; + vertices[idx + 2] = color.r; + vertices[idx + 3] = color.g; + vertices[idx + 4] = color.b; + vertices[idx + 5] = color.a; + vertices[idx + 6] = u1; + vertices[idx + 7] = v1; + vertices[idx + 8] = generic.r; + vertices[idx + 9] = generic.g; + vertices[idx + 10] = generic.b; + vertices[idx + 11] = generic.a; + + vertices[idx + 12] = x2; + vertices[idx + 13] = y2; + vertices[idx + 14] = color.r; + vertices[idx + 15] = color.g; + vertices[idx + 16] = color.b; + vertices[idx + 17] = color.a; + vertices[idx + 18] = u2; + vertices[idx + 19] = v2; + vertices[idx + 20] = generic.r; + vertices[idx + 21] = generic.g; + vertices[idx + 22] = generic.b; + vertices[idx + 23] = generic.a; + + vertices[idx + 24] = x3; + vertices[idx + 25] = y3; + vertices[idx + 26] = color.r; + vertices[idx + 27] = color.g; + vertices[idx + 28] = color.b; + vertices[idx + 29] = color.a; + vertices[idx + 30] = u3; + vertices[idx + 31] = v3; + vertices[idx + 32] = generic.r; + vertices[idx + 33] = generic.g; + vertices[idx + 34] = generic.b; + vertices[idx + 35] = generic.a; + + vertices[idx + 36] = x4; + vertices[idx + 37] = y4; + vertices[idx + 38] = color.r; + vertices[idx + 39] = color.g; + vertices[idx + 40] = color.b; + vertices[idx + 41] = color.a; + vertices[idx + 42] = u4; + vertices[idx + 43] = v4; + vertices[idx + 44] = generic.r; + vertices[idx + 45] = generic.g; + vertices[idx + 46] = generic.b; + vertices[idx + 47] = generic.a; + this.idx = idx + 48; + } @Override @@ -355,59 +418,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { v2 = tmp; } - int idx = this.idx; - vertices[idx] = x1; - vertices[idx + 1] = y1; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x2; - vertices[idx + 13] = y2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = x3; - vertices[idx + 25] = y3; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = x4; - vertices[idx + 37] = y4; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x1, y1, u, v, + x2, y2, u, v2, + x3, y3, u2, v2, + x4, y4, u2, v); } @Override @@ -441,59 +455,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { v2 = tmp; } - int idx = this.idx; - vertices[idx] = x; - vertices[idx + 1] = y; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x; - vertices[idx + 13] = fy2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = fx2; - vertices[idx + 25] = fy2; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = fx2; - vertices[idx + 37] = y; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x, y, u, v, + x, fy2, u, v2, + fx2, fy2, u2, v2, + fx2, y, u2, v2); } @Override @@ -514,59 +479,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { final float fx2 = x + srcWidth; final float fy2 = y + srcHeight; - int idx = this.idx; - vertices[idx] = x; - vertices[idx + 1] = y; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x; - vertices[idx + 13] = fy2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = fx2; - vertices[idx + 25] = fy2; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = fx2; - vertices[idx + 37] = y; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x, y, u, v, + x, fy2, u, v2, + fx2, fy2, u2, v2, + fx2, y, u2, v); } @Override @@ -583,59 +499,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { final float fx2 = x + width; final float fy2 = y + height; - int idx = this.idx; - vertices[idx] = x; - vertices[idx + 1] = y; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x; - vertices[idx + 13] = fy2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = fx2; - vertices[idx + 25] = fy2; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = fx2; - vertices[idx + 37] = y; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x, y, u, v, + x, fy2, u, v2, + fx2, fy2, u2, v2, + fx2, y, u2, v); } @Override @@ -661,59 +528,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { final float u2 = 1; final float v2 = 0; - int idx = this.idx; - vertices[idx] = x; - vertices[idx + 1] = y; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x; - vertices[idx + 13] = fy2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = fx2; - vertices[idx + 25] = fy2; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = fx2; - vertices[idx + 37] = y; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x, y, u, v, + x, fy2, u, v2, + fx2, fy2, u2, v2, + fx2, y, u2, v); } @Override @@ -770,59 +588,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { final float u2 = region.u2; final float v2 = region.v; - int idx = this.idx; - vertices[idx] = x; - vertices[idx + 1] = y; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x; - vertices[idx + 13] = fy2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = fx2; - vertices[idx + 25] = fy2; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = fx2; - vertices[idx + 37] = y; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x, y, u, v, + x, fy2, u, v2, + fx2, fy2, u2, v2, + fx2, y, u2, v); } @Override @@ -917,59 +686,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { final float u2 = region.u2; final float v2 = region.v; - int idx = this.idx; - vertices[idx] = x1; - vertices[idx + 1] = y1; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x2; - vertices[idx + 13] = y2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = x3; - vertices[idx + 25] = y3; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = x4; - vertices[idx + 37] = y4; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x1, y1, u, v, + x2, y2, u, v2, + x3, y3, u2, v2, + x4, y4, u2, v); } @Override @@ -1080,59 +800,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { v4 = region.v2; } - int idx = this.idx; - vertices[idx] = x1; - vertices[idx + 1] = y1; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u1; - vertices[idx + 7] = v1; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x2; - vertices[idx + 13] = y2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u2; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = x3; - vertices[idx + 25] = y3; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u3; - vertices[idx + 31] = v3; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = x4; - vertices[idx + 37] = y4; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u4; - vertices[idx + 43] = v4; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x1, y1, u1, v1, + x2, y2, u2, v2, + x3, y3, u3, v3, + x4, y4, u4, v4); } @Override @@ -1163,59 +834,10 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { float u2 = region.u2; float v2 = region.v; - int idx = this.idx; - vertices[idx] = x1; - vertices[idx + 1] = y1; - vertices[idx + 2] = color.r; - vertices[idx + 3] = color.g; - vertices[idx + 4] = color.b; - vertices[idx + 5] = color.a; - vertices[idx + 6] = u; - vertices[idx + 7] = v; - vertices[idx + 8] = generic.r; - vertices[idx + 9] = generic.g; - vertices[idx + 10] = generic.b; - vertices[idx + 11] = generic.a; - - vertices[idx + 12] = x2; - vertices[idx + 13] = y2; - vertices[idx + 14] = color.r; - vertices[idx + 15] = color.g; - vertices[idx + 16] = color.b; - vertices[idx + 17] = color.a; - vertices[idx + 18] = u; - vertices[idx + 19] = v2; - vertices[idx + 20] = generic.r; - vertices[idx + 21] = generic.g; - vertices[idx + 22] = generic.b; - vertices[idx + 23] = generic.a; - - vertices[idx + 24] = x3; - vertices[idx + 25] = y3; - vertices[idx + 26] = color.r; - vertices[idx + 27] = color.g; - vertices[idx + 28] = color.b; - vertices[idx + 29] = color.a; - vertices[idx + 30] = u2; - vertices[idx + 31] = v2; - vertices[idx + 32] = generic.r; - vertices[idx + 33] = generic.g; - vertices[idx + 34] = generic.b; - vertices[idx + 35] = generic.a; - - vertices[idx + 36] = x4; - vertices[idx + 37] = y4; - vertices[idx + 38] = color.r; - vertices[idx + 39] = color.g; - vertices[idx + 40] = color.b; - vertices[idx + 41] = color.a; - vertices[idx + 42] = u2; - vertices[idx + 43] = v; - vertices[idx + 44] = generic.r; - vertices[idx + 45] = generic.g; - vertices[idx + 46] = generic.b; - vertices[idx + 47] = generic.a; - this.idx = idx + 48; + appendVertices(x1, y1, u, v, + x2, y2, u, v2, + x3, y3, u2, v2, + x4, y4, u2, v); } @Override @@ -1224,7 +846,7 @@ public class UnpackedColourSpriteBatch extends SpriteBatch { renderCalls++; totalRenderCalls++; - int spritesInBatch = idx / 48; + int spritesInBatch = idx / VERTEX_ATTR_SIZE; if (spritesInBatch > maxSpritesInBatch) maxSpritesInBatch = spritesInBatch; int count = spritesInBatch * 6; diff --git a/src/shaders/postproc_dither.frag b/src/shaders/postproc_dither.frag index 3cc26d3f5..9f593c65c 100644 --- a/src/shaders/postproc_dither.frag +++ b/src/shaders/postproc_dither.frag @@ -23,7 +23,7 @@ in vec2 v_texCoords; uniform sampler2D u_texture; uniform sampler2D u_pattern; uniform ivec2 rnd = ivec2(0,0); -const mat4 swizzler = mat4( +uniform mat4 swizzler = mat4( 1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, @@ -37,7 +37,6 @@ vec4 invQuant = vec4(1.0 / quant); out vec4 fragColor; const vec2 boolean = vec2(0.0, 1.0); -const vec4 matrixNormaliser = vec4(0.5 / 256.0); const vec2 patternsize = vec2(1.0/512.0, 1.0/512.0); @@ -47,7 +46,7 @@ vec4 nearestColour(vec4 inColor) { } vec4 getDitherredDot(vec4 inColor) { - vec4 bayerThreshold = swizzler * vec4(matrixNormaliser + texture(u_pattern, (gl_FragCoord.xy + rnd) * patternsize)); + vec4 bayerThreshold = swizzler * vec4(texture(u_pattern, (gl_FragCoord.xy + rnd) * patternsize)); return nearestColour(fma(bayerThreshold, invQuant, inColor)); }