From c4c760bfb33a5cc7627c246f6800dc1ecc212d8c Mon Sep 17 00:00:00 2001 From: David Quintana Date: Tue, 7 Jan 2020 23:51:44 +0100 Subject: [PATCH] Fix QuadTransformer normal processing. --- .../client/model/QuadTransformer.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/model/QuadTransformer.java b/src/main/java/net/minecraftforge/client/model/QuadTransformer.java index 16f44f27b9..f28105df4b 100644 --- a/src/main/java/net/minecraftforge/client/model/QuadTransformer.java +++ b/src/main/java/net/minecraftforge/client/model/QuadTransformer.java @@ -70,17 +70,18 @@ public class QuadTransformer int normalIn = getAtByteOffset(inData,offset); if (normalIn != 0) { - float x = (((normalIn) >> 24) & 0xFF) / 255.0f; - float y = (((normalIn << 8) >> 24) & 0xFF) / 255.0f; - float z = (((normalIn << 16) >> 24) & 0xFF) / 255.0f; + + float x = ((byte)((normalIn) >> 24)) / 127.0f; + float y = ((byte)((normalIn << 8) >> 24)) / 127.0f; + float z = ((byte)((normalIn << 16) >> 24)) / 127.0f; Vector3f pos = new Vector3f(x, y, z); transform.transformNormal(pos); pos.func_229194_d_(); - int normalOut = (((int) (x / 255.0) & 0xFF) << 24) | - (((int) (y / 255.0) & 0xFF) << 16) | - (((int) (z / 255.0) & 0xFF) << 8) | + int normalOut = ((((byte)(x / 127.0f)) & 0xFF) << 24) | + ((((byte)(y / 127.0f)) & 0xFF) << 16) | + ((((byte)(z / 127.0f)) & 0xFF) << 8) | (normalIn & 0xFF); putAtByteOffset(outData, offset, normalOut); @@ -108,7 +109,10 @@ public class QuadTransformer int shift = (offset % 4) * 8; if (shift == 0) + { outData[index] = value; + return; + } int lsbMask = 0xFFFFFFFF >>> (32-shift); int msbMask = 0xFFFFFFFF << shift;