fix wrong render order, improve block item rendering

This commit is contained in:
Moritz Zwerger 2023-11-14 23:43:19 +01:00
parent 4bfa947be0
commit a4d173cd8a
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
5 changed files with 12 additions and 11 deletions

View File

@ -34,6 +34,6 @@ class RenderOrderTest {
val result: MutableList<Int> = mutableListOf()
order.iterateReverse { position, uv -> result += position; result += uv }
assertEquals(result, listOf(0, 9, 3, 6, 2, 7, 1, 8))
assertEquals(result, listOf(3, 6, 2, 7, 1, 8, 0, 9))
}
}

View File

@ -97,7 +97,6 @@ class GUIRenderer(
destinationRGB = BlendingFunctions.ONE_MINUS_SOURCE_ALPHA,
sourceAlpha = BlendingFunctions.ONE,
destinationAlpha = BlendingFunctions.ONE_MINUS_SOURCE_ALPHA,
faceCulling = false,
)
shader.use()
}

View File

@ -48,7 +48,7 @@ class BlockGUIConsumer(
val tint = (lightTint.toBits() shl 8) or 0xFF
gui.context.system.quadOrder.iterate { p, uv ->
gui.context.system.quadOrder.iterateReverse { p, uv ->
val vertexOffset = p * Vec3.length
val uvOffset = uv * Vec2.length
@ -56,10 +56,9 @@ class BlockGUIConsumer(
val out = matrix * xyz
val x = ((out.x) * size.x) + offset.x + 1.0f
val y = ((-out.y + 0.75f) * size.y) + offset.y
// TODO: depth
val x = ((out.x + 0.8f) * size.x) + offset.x + 1.0f
val y = ((-out.y + 0.81f) * size.y) + offset.y
// values fresh from my ass
consumer.addVertex(x, y, textureId, uvData[uvOffset], uvData[uvOffset + 1], tint, options)
}

View File

@ -28,11 +28,15 @@ data class ModelDisplay(
val scale: Vec3 = Vec3.ONE,
) {
val matrix = Mat4()
.translateAssign(translation)
.rotateRadAssign(rotation)
.scaleAssign(scale)
.translateAssign(translation)
.translateAssign(CENTER)
.rotateRadAssign(rotation)
.translateAssign(N_CENTER)
companion object {
val CENTER = Vec3(0.5f)
val N_CENTER = -CENTER
val DEFAULT = ModelDisplay()
fun deserialize(data: JsonObject): ModelDisplay {

View File

@ -36,10 +36,9 @@ class RenderOrder(
inline fun iterateReverse(vertex: (position: Int, uv: Int) -> Unit) {
if (size == 0) return
this.vertex(0, vertex)
var index = order.size - 1 - 1 // index, element alignment
while (index > 1) {
while (index >= 0) {
this.vertex(index, vertex)
index -= 2
}