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() val result: MutableList<Int> = mutableListOf()
order.iterateReverse { position, uv -> result += position; result += uv } 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, destinationRGB = BlendingFunctions.ONE_MINUS_SOURCE_ALPHA,
sourceAlpha = BlendingFunctions.ONE, sourceAlpha = BlendingFunctions.ONE,
destinationAlpha = BlendingFunctions.ONE_MINUS_SOURCE_ALPHA, destinationAlpha = BlendingFunctions.ONE_MINUS_SOURCE_ALPHA,
faceCulling = false,
) )
shader.use() shader.use()
} }

View File

@ -48,7 +48,7 @@ class BlockGUIConsumer(
val tint = (lightTint.toBits() shl 8) or 0xFF 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 vertexOffset = p * Vec3.length
val uvOffset = uv * Vec2.length val uvOffset = uv * Vec2.length
@ -56,10 +56,9 @@ class BlockGUIConsumer(
val out = matrix * xyz val out = matrix * xyz
val x = ((out.x) * size.x) + offset.x + 1.0f val x = ((out.x + 0.8f) * size.x) + offset.x + 1.0f
val y = ((-out.y + 0.75f) * size.y) + offset.y val y = ((-out.y + 0.81f) * size.y) + offset.y
// values fresh from my ass
// TODO: depth
consumer.addVertex(x, y, textureId, uvData[uvOffset], uvData[uvOffset + 1], tint, options) 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 scale: Vec3 = Vec3.ONE,
) { ) {
val matrix = Mat4() val matrix = Mat4()
.translateAssign(translation)
.rotateRadAssign(rotation)
.scaleAssign(scale) .scaleAssign(scale)
.translateAssign(translation)
.translateAssign(CENTER)
.rotateRadAssign(rotation)
.translateAssign(N_CENTER)
companion object { companion object {
val CENTER = Vec3(0.5f)
val N_CENTER = -CENTER
val DEFAULT = ModelDisplay() val DEFAULT = ModelDisplay()
fun deserialize(data: JsonObject): ModelDisplay { fun deserialize(data: JsonObject): ModelDisplay {

View File

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