mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 09:56:37 -04:00
fix wrong render order, improve block item rendering
This commit is contained in:
parent
4bfa947be0
commit
a4d173cd8a
@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user