Skip to content

Commit 954d814

Browse files
committed
fix transformation matrix
1 parent 2969f70 commit 954d814

File tree

1 file changed

+14
-3
lines changed
  • modules/ui/src/main/kotlin/org/polyfrost/oneconfig/api/ui/v1/internal

1 file changed

+14
-3
lines changed

modules/ui/src/main/kotlin/org/polyfrost/oneconfig/api/ui/v1/internal/GLRendererImpl.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
package org.polyfrost.oneconfig.api.ui.v1.internal
44

55
import dev.deftu.omnicore.api.client.render.GlCapabilities
6+
import dev.deftu.omnicore.api.client.render.OmniResolution
67
import dev.deftu.omnicore.api.client.render.OmniTextRenderer
78
import dev.deftu.omnicore.api.client.render.stack.OmniPoseStack
89
import dev.deftu.omnicore.api.color.OmniColor
9-
import dev.deftu.omnicore.api.math.OmniMatrix3f
10+
import dev.deftu.omnicore.api.math.OmniMatrix4f
1011
import dev.deftu.omnicore.internal.client.render.shader.ShaderInternals
1112
import org.apache.logging.log4j.LogManager
1213
import org.lwjgl.BufferUtils
@@ -641,11 +642,21 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
641642
count += 1
642643
}
643644

645+
private fun FloatArray.getScaledMat4(): OmniMatrix4f {
646+
// asm: scale to MC instance coordinates and mutate to a 4x4 matrix
647+
val sf = pixelRatio / OmniResolution.scaleFactor.toFloat()
648+
return OmniMatrix4f.from(floatArrayOf(
649+
this[0] * sf, this[1] * sf, 0f, 0f,
650+
this[3] * sf, this[4] * sf, 0f, 0f,
651+
0f, 0f, 1f, 0f,
652+
this[6] * sf, this[7] * sf, 0f, 1f
653+
))
654+
}
655+
644656
override fun text(font: Font, x: Float, y: Float, text: String, color: Color, fontSize: Float) {
645657
if (font === UIManager.INSTANCE.mcFont) {
646658
val ctx = UIManager.INSTANCE.renderingContext
647-
// todo hi deftu https://github.com/Deftu/OmniCore/issues/57
648-
ctx.pose.push(OmniPoseStack.Entry(ctx.pose.current.positionMatrix, OmniMatrix3f.from(transform)))
659+
ctx.pose.push(OmniPoseStack.Entry(transform.getScaledMat4(), ctx.pose.current.normalMatrix))
649660
// asm: can be optimized by https://github.com/Deftu/OmniCore/issues/58
650661
OmniTextRenderer.render(ctx.pose, text, x, y, OmniColor.argb(color.argb), false)
651662
ctx.pose.pop()

0 commit comments

Comments
 (0)