From 75eccdc798373f8a3894cc43dfef8de1916e1fe5 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sun, 29 Oct 2023 17:51:02 +0100 Subject: [PATCH] skeletal shade normal: improve encoding on precision loss --- .../minosoft/gui/rendering/skeletal/mesh/SkeletalMeshUtil.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/mesh/SkeletalMeshUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/mesh/SkeletalMeshUtil.kt index f927123dc..90033971a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/mesh/SkeletalMeshUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/mesh/SkeletalMeshUtil.kt @@ -21,13 +21,13 @@ object SkeletalMeshUtil { private fun encodeY(part: Float): Int { if (part <= -1.0f) return 0 if (part >= 1.0f) return 0x0F - if (part < 0.0f) return ((part + 1.0f) * 8.0f).toInt() and 0x0F + if (part < 0.0f) return ((part + 1.0f) * 8.0f).toInt() return 8 + (part * 7.0f).toInt() } fun encodeNormal(normal: Vec3): Int { val x = (abs(normal.x) * 15.0f).toInt() - val y = encodeY(normal.y) + val y = encodeY(normal.y + 0.001f) and 0x0F val z = (abs(normal.z) * 15.0f).toInt() return (y shl 8) or (z shl 4) or (x)