mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -04:00
make current render order legacy
This commit is contained in:
parent
d4a701583e
commit
af561c1232
@ -18,10 +18,10 @@ import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
|||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderOrder
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderOrder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderTexture
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderTexture
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshOrder
|
||||||
|
|
||||||
open class DummyGUIVertexConsumer : GUIVertexConsumer {
|
open class DummyGUIVertexConsumer : GUIVertexConsumer {
|
||||||
override val order: RenderOrder get() = OpenGLRenderSystem.QUAD_ORDER
|
override val order: RenderOrder get() = MeshOrder.QUAD
|
||||||
var char = 0
|
var char = 0
|
||||||
|
|
||||||
override fun addCache(cache: GUIMeshCache) {
|
override fun addCache(cache: GUIMeshCache) {
|
||||||
|
@ -21,6 +21,7 @@ import de.bixilon.minosoft.gui.rendering.models.block.state.baked.Shades
|
|||||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
|
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshOrder
|
||||||
import de.bixilon.minosoft.test.IT.OBJENESIS
|
import de.bixilon.minosoft.test.IT.OBJENESIS
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.collections.floats.FragmentedArrayFloatList
|
import de.bixilon.minosoft.util.collections.floats.FragmentedArrayFloatList
|
||||||
@ -39,7 +40,7 @@ class BakedFaceTest {
|
|||||||
private fun singleMesh(): SingleChunkMesh {
|
private fun singleMesh(): SingleChunkMesh {
|
||||||
val mesh = OBJENESIS.newInstance(SingleChunkMesh::class.java)
|
val mesh = OBJENESIS.newInstance(SingleChunkMesh::class.java)
|
||||||
mesh::quadType.forceSet(PrimitiveTypes.QUAD)
|
mesh::quadType.forceSet(PrimitiveTypes.QUAD)
|
||||||
mesh::order.forceSet(SingleChunkMesh.QUAD_ORDER)
|
mesh::order.forceSet(MeshOrder.QUAD)
|
||||||
|
|
||||||
mesh.data = FragmentedArrayFloatList(1000) // TODO: kutil 1.24
|
mesh.data = FragmentedArrayFloatList(1000) // TODO: kutil 1.24
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ import de.bixilon.minosoft.gui.rendering.system.dummy.buffer.uniform.DummyFloatU
|
|||||||
import de.bixilon.minosoft.gui.rendering.system.dummy.buffer.uniform.DummyIntUniformBuffer
|
import de.bixilon.minosoft.gui.rendering.system.dummy.buffer.uniform.DummyIntUniformBuffer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.dummy.shader.DummyNativeShader
|
import de.bixilon.minosoft.gui.rendering.system.dummy.shader.DummyNativeShader
|
||||||
import de.bixilon.minosoft.gui.rendering.system.dummy.texture.DummyTextureManager
|
import de.bixilon.minosoft.gui.rendering.system.dummy.texture.DummyTextureManager
|
||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshOrder
|
||||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
import java.nio.FloatBuffer
|
import java.nio.FloatBuffer
|
||||||
@ -80,7 +80,8 @@ class DummyRenderSystem(
|
|||||||
override var clearColor: RGBColor = Colors.TRANSPARENT
|
override var clearColor: RGBColor = Colors.TRANSPARENT
|
||||||
override var quadType: PrimitiveTypes = PrimitiveTypes.QUAD
|
override var quadType: PrimitiveTypes = PrimitiveTypes.QUAD
|
||||||
|
|
||||||
override var quadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) OpenGLRenderSystem.QUAD_ORDER else OpenGLRenderSystem.TRIANGLE_ORDER
|
override var quadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) MeshOrder.QUAD else MeshOrder.TRIANGLE
|
||||||
|
override var legacyQuadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) MeshOrder.LEGACY_QUAD else MeshOrder.LEGACY_TRIANGLE
|
||||||
|
|
||||||
override fun readPixels(start: Vec2i, end: Vec2i, type: PixelTypes): ByteBuffer {
|
override fun readPixels(start: Vec2i, end: Vec2i, type: PixelTypes): ByteBuffer {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
|
@ -17,8 +17,6 @@ import de.bixilon.kotlinglm.vec2.Vec2
|
|||||||
import de.bixilon.kotlinglm.vec3.Vec3
|
import de.bixilon.kotlinglm.vec3.Vec3
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderContext
|
import de.bixilon.minosoft.gui.rendering.RenderContext
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderOrder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
|
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||||
@ -26,7 +24,7 @@ import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
|||||||
class SingleChunkMesh(context: RenderContext, initialCacheSize: Int, onDemand: Boolean = false) : Mesh(context, WorldMeshStruct, initialCacheSize = initialCacheSize, onDemand = onDemand), Comparable<SingleChunkMesh> {
|
class SingleChunkMesh(context: RenderContext, initialCacheSize: Int, onDemand: Boolean = false) : Mesh(context, WorldMeshStruct, initialCacheSize = initialCacheSize, onDemand = onDemand), Comparable<SingleChunkMesh> {
|
||||||
var distance: Float = 0.0f // Used for sorting
|
var distance: Float = 0.0f // Used for sorting
|
||||||
|
|
||||||
override val order = if (quadType == PrimitiveTypes.QUAD) QUAD_ORDER else TRIANGLE_ORDER
|
override val order = context.system.quadOrder
|
||||||
|
|
||||||
fun addVertex(position: FloatArray, uv: Vec2, texture: Texture, tintColor: Int, light: Int) {
|
fun addVertex(position: FloatArray, uv: Vec2, texture: Texture, tintColor: Int, light: Int) {
|
||||||
data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX)
|
data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX)
|
||||||
@ -61,21 +59,4 @@ class SingleChunkMesh(context: RenderContext, initialCacheSize: Int, onDemand: B
|
|||||||
) {
|
) {
|
||||||
companion object : MeshStruct(WorldMeshStruct::class)
|
companion object : MeshStruct(WorldMeshStruct::class)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
val TRIANGLE_ORDER = RenderOrder(intArrayOf(
|
|
||||||
0, 0,
|
|
||||||
3, 3,
|
|
||||||
2, 2,
|
|
||||||
2, 2,
|
|
||||||
1, 1,
|
|
||||||
0, 0,
|
|
||||||
))
|
|
||||||
val QUAD_ORDER = RenderOrder(intArrayOf(
|
|
||||||
0, 0,
|
|
||||||
3, 3,
|
|
||||||
2, 2,
|
|
||||||
1, 1,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ abstract class Element(val guiRenderer: GUIRenderer, initialCacheSize: Int = 100
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Warning: Should not be directly accessed!")
|
@Deprecated("Warning: Should not be directly accessed!")
|
||||||
open val cache = GUIMeshCache(guiRenderer.halfSize, context.system.quadOrder, context, initialCacheSize)
|
open val cache = GUIMeshCache(guiRenderer.halfSize, context.system.legacyQuadOrder, context, initialCacheSize)
|
||||||
|
|
||||||
private var previousMaxSize = Vec2.EMPTY
|
private var previousMaxSize = Vec2.EMPTY
|
||||||
|
|
||||||
|
@ -102,7 +102,9 @@ interface RenderSystem {
|
|||||||
var clearColor: RGBColor
|
var clearColor: RGBColor
|
||||||
|
|
||||||
var quadType: PrimitiveTypes
|
var quadType: PrimitiveTypes
|
||||||
|
|
||||||
var quadOrder: RenderOrder
|
var quadOrder: RenderOrder
|
||||||
|
@Deprecated("legacy") var legacyQuadOrder: RenderOrder
|
||||||
|
|
||||||
fun readPixels(start: Vec2i, end: Vec2i, type: PixelTypes): ByteBuffer
|
fun readPixels(start: Vec2i, end: Vec2i, type: PixelTypes): ByteBuffer
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.uniform.IntOpenGLU
|
|||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.vertex.FloatOpenGLVertexBuffer
|
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.vertex.FloatOpenGLVertexBuffer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.texture.OpenGLTextureManager
|
import de.bixilon.minosoft.gui.rendering.system.opengl.texture.OpenGLTextureManager
|
||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.vendor.*
|
import de.bixilon.minosoft.gui.rendering.system.opengl.vendor.*
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshOrder
|
||||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||||
import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen
|
import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen
|
||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
@ -69,7 +70,8 @@ class OpenGLRenderSystem(
|
|||||||
} else {
|
} else {
|
||||||
PrimitiveTypes.TRIANGLE
|
PrimitiveTypes.TRIANGLE
|
||||||
}
|
}
|
||||||
override var quadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) QUAD_ORDER else TRIANGLE_ORDER
|
override var quadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) MeshOrder.QUAD else MeshOrder.TRIANGLE
|
||||||
|
override var legacyQuadOrder: RenderOrder = if (quadType == PrimitiveTypes.QUAD) MeshOrder.LEGACY_QUAD else MeshOrder.LEGACY_TRIANGLE
|
||||||
var boundVao = -1
|
var boundVao = -1
|
||||||
var boundBuffer = -1
|
var boundBuffer = -1
|
||||||
var uniformBufferBindingIndex = 0
|
var uniformBufferBindingIndex = 0
|
||||||
@ -328,21 +330,6 @@ class OpenGLRenderSystem(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val TRIANGLE_ORDER = RenderOrder(intArrayOf(
|
|
||||||
// TOOD: they are all rotated 90° wrong, fix this for triangle and quad order
|
|
||||||
0, 1,
|
|
||||||
3, 2,
|
|
||||||
2, 3,
|
|
||||||
2, 3,
|
|
||||||
1, 0,
|
|
||||||
0, 1,
|
|
||||||
))
|
|
||||||
val QUAD_ORDER = RenderOrder(intArrayOf(
|
|
||||||
0, 1,
|
|
||||||
3, 2,
|
|
||||||
2, 3,
|
|
||||||
1, 0,
|
|
||||||
))
|
|
||||||
|
|
||||||
private val RenderingCapabilities.gl: Int
|
private val RenderingCapabilities.gl: Int
|
||||||
get() {
|
get() {
|
||||||
|
@ -31,7 +31,7 @@ abstract class Mesh(
|
|||||||
data: FragmentedArrayFloatList? = null,
|
data: FragmentedArrayFloatList? = null,
|
||||||
val onDemand: Boolean = false,
|
val onDemand: Boolean = false,
|
||||||
) : AbstractVertexConsumer {
|
) : AbstractVertexConsumer {
|
||||||
override val order = context.system.quadOrder
|
override val order = context.system.legacyQuadOrder
|
||||||
private var _data: FragmentedArrayFloatList? = data ?: if (onDemand) null else FragmentedArrayFloatList(initialCacheSize)
|
private var _data: FragmentedArrayFloatList? = data ?: if (onDemand) null else FragmentedArrayFloatList(initialCacheSize)
|
||||||
var data: FragmentedArrayFloatList
|
var data: FragmentedArrayFloatList
|
||||||
get() {
|
get() {
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.bixilon.minosoft.gui.rendering.util.mesh
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderOrder
|
||||||
|
|
||||||
|
// TODO: Replace mesh order with index buffer
|
||||||
|
object MeshOrder {
|
||||||
|
@Deprecated("legacy")
|
||||||
|
val LEGACY_QUAD = RenderOrder(intArrayOf(
|
||||||
|
0, 1,
|
||||||
|
3, 2,
|
||||||
|
2, 3,
|
||||||
|
1, 0,
|
||||||
|
))
|
||||||
|
|
||||||
|
@Deprecated("legacy")
|
||||||
|
val LEGACY_TRIANGLE = RenderOrder(intArrayOf(
|
||||||
|
// TOOD: they are all rotated 90° wrong, fix this for triangle and quad order
|
||||||
|
0, 1,
|
||||||
|
3, 2,
|
||||||
|
2, 3,
|
||||||
|
2, 3,
|
||||||
|
1, 0,
|
||||||
|
0, 1,
|
||||||
|
))
|
||||||
|
|
||||||
|
val TRIANGLE = RenderOrder(intArrayOf(
|
||||||
|
0, 0,
|
||||||
|
3, 3,
|
||||||
|
2, 2,
|
||||||
|
2, 2,
|
||||||
|
1, 1,
|
||||||
|
0, 0,
|
||||||
|
))
|
||||||
|
val QUAD = RenderOrder(intArrayOf(
|
||||||
|
0, 0,
|
||||||
|
3, 3,
|
||||||
|
2, 2,
|
||||||
|
1, 1,
|
||||||
|
))
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user