mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 19:05:02 -04:00
mesh: replace Float.fromButs calls with generalized call
This commit is contained in:
parent
877778bfb8
commit
c80580274e
@ -18,6 +18,7 @@ import de.bixilon.kotlinglm.vec2.Vec2
|
||||
import de.bixilon.kotlinglm.vec2.Vec2t
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.ShaderIdentifiable
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||
@ -69,8 +70,8 @@ class GUIMesh(
|
||||
data.add(outPosition.y)
|
||||
data.add(uv.x)
|
||||
data.add(uv.y)
|
||||
data.add(Float.fromBits(texture.shaderId))
|
||||
data.add(Float.fromBits(color))
|
||||
data.add(texture.shaderId.buffer())
|
||||
data.add(color.buffer())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.direction.Directions
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.models.properties.AbstractFaceProperties
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture
|
||||
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.getMesh
|
||||
@ -48,8 +49,8 @@ class BakedFace(
|
||||
color.b *= (tint and 0xFF) / RGBColor.COLOR_FLOAT_DIVIDER
|
||||
}
|
||||
|
||||
val textureShaderId = Float.fromBits(texture.renderData.shaderTextureId)
|
||||
val tintLight = Float.fromBits(color.rgb or (light shl 24))
|
||||
val textureShaderId = texture.renderData.shaderTextureId.buffer()
|
||||
val tintLight = (color.rgb or (light shl 24)).buffer()
|
||||
for ((index, textureIndex) in meshToUse.order) {
|
||||
val indexOffset = index * 3
|
||||
meshToUse.addVertex(positions[indexOffset + 0] + position[0], positions[indexOffset + 1] + position[1], positions[indexOffset + 2] + position[2], uv[textureIndex], texture, textureShaderId, tintLight)
|
||||
|
@ -18,6 +18,7 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kotlinglm.vec3.Vec3d
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
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.texture.texture.AbstractTexture
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
@ -39,9 +40,9 @@ class ParticleMesh(renderWindow: RenderWindow, data: DirectArrayFloatList) : Mes
|
||||
data.add(position.z.toFloat())
|
||||
data.addAll(minTransformedUV)
|
||||
data.addAll(maxTransformedUV)
|
||||
data.add(Float.fromBits(texture.renderData.shaderTextureId))
|
||||
data.add(texture.renderData.shaderTextureId.buffer())
|
||||
data.add(scale)
|
||||
data.add(Float.fromBits(tintColor.rgba))
|
||||
data.add(tintColor.rgba.buffer())
|
||||
}
|
||||
|
||||
|
||||
|
@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.skeletal
|
||||
import de.bixilon.kotlinglm.vec2.Vec2
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.ShaderTexture
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||
@ -29,9 +30,9 @@ class SkeletalMesh(renderWindow: RenderWindow, initialCacheSize: Int) : Mesh(ren
|
||||
data.add(position[2])
|
||||
data.add(transformedUV.x)
|
||||
data.add(transformedUV.y)
|
||||
data.add(Float.fromBits(transform))
|
||||
data.add(Float.fromBits(texture.shaderId))
|
||||
data.add(Float.fromBits(flags))
|
||||
data.add(transform.buffer())
|
||||
data.add(texture.shaderId.buffer())
|
||||
data.add(flags.buffer())
|
||||
}
|
||||
|
||||
@Deprecated("Pretty rendering specific")
|
||||
|
@ -23,6 +23,7 @@ import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement.C
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.SkeletalMesh
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.model.SkeletalModel
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.model.outliner.SkeletalOutliner
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.ShaderTexture
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.rotateAssign
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
@ -105,9 +106,9 @@ class BakedSkeletalModel(
|
||||
}
|
||||
|
||||
val texture = textures[face.texture]!!
|
||||
val transform = Float.fromBits(outlinerId)
|
||||
val textureShaderId = Float.fromBits(texture.shaderId)
|
||||
val floatFlags = Float.fromBits(flags)
|
||||
val transform = outlinerId.buffer()
|
||||
val textureShaderId = texture.shaderId.buffer()
|
||||
val floatFlags = flags.buffer()
|
||||
for ((index, textureIndex) in mesh.order) {
|
||||
val indexPosition = positions[index].array
|
||||
val transformedUV = texture.transformUV(texturePositions[textureIndex])
|
||||
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 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.system.base
|
||||
|
||||
object MeshUtil {
|
||||
inline fun Int.buffer() = Float.fromBits(this)
|
||||
}
|
@ -17,6 +17,7 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
|
||||
|
||||
open class GenericColorMesh(renderWindow: RenderWindow, primitiveType: PrimitiveTypes = renderWindow.renderSystem.preferredPrimitiveType) : Mesh(renderWindow, GenericColorMeshStruct, primitiveType) {
|
||||
@ -25,7 +26,7 @@ open class GenericColorMesh(renderWindow: RenderWindow, primitiveType: Primitive
|
||||
data.add(position.x)
|
||||
data.add(position.y)
|
||||
data.add(position.z)
|
||||
data.add(Float.fromBits((color ?: ChatColors.WHITE).rgba))
|
||||
data.add((color ?: ChatColors.WHITE).rgba.buffer())
|
||||
}
|
||||
|
||||
fun addVertex(position: Vec3, color: Float) {
|
||||
|
@ -21,6 +21,7 @@ import de.bixilon.minosoft.data.registries.VoxelShape
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY
|
||||
|
||||
open class LineMesh(renderWindow: RenderWindow) : GenericColorMesh(renderWindow) {
|
||||
@ -46,7 +47,7 @@ open class LineMesh(renderWindow: RenderWindow) : GenericColorMesh(renderWindow)
|
||||
val invertedNormal1 = normal1 * -1
|
||||
val invertedNormal2 = normal2 * -1
|
||||
|
||||
val floatColor = Float.fromBits(color.rgba)
|
||||
val floatColor = color.rgba.buffer()
|
||||
|
||||
drawLineQuad(start, end, normal1, normal2, directionWidth, floatColor)
|
||||
drawLineQuad(start, end, invertedNormal2, normal1, directionWidth, floatColor)
|
||||
|
@ -18,6 +18,7 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.text.formatting.color.Colors
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
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.texture.texture.AbstractTexture
|
||||
|
||||
@ -29,8 +30,8 @@ open class SimpleTextureMesh(renderWindow: RenderWindow, primitiveType: Primitiv
|
||||
data.add(position.z)
|
||||
data.add(uv.x)
|
||||
data.add(uv.y)
|
||||
data.add(Float.fromBits(texture.renderData.shaderTextureId))
|
||||
data.add(Float.fromBits(tintColor?.rgba ?: Colors.WHITE))
|
||||
data.add(texture.renderData.shaderTextureId.buffer())
|
||||
data.add((tintColor?.rgba ?: Colors.WHITE).buffer())
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.world.border
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
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.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||
@ -23,33 +24,33 @@ class WorldBorderMesh(renderWindow: RenderWindow) : Mesh(renderWindow, WorldBord
|
||||
|
||||
init {
|
||||
data.addAll(floatArrayOf(
|
||||
-1.0f, +1.0f, -1.0f, Float.fromBits(1),
|
||||
+1.0f, -1.0f, -1.0f, Float.fromBits(0),
|
||||
-1.0f, -1.0f, -1.0f, Float.fromBits(3),
|
||||
+1.0f, -1.0f, -1.0f, Float.fromBits(0),
|
||||
-1.0f, +1.0f, -1.0f, Float.fromBits(1),
|
||||
+1.0f, +1.0f, -1.0f, Float.fromBits(2),
|
||||
-1.0f, +1.0f, -1.0f, 1.buffer(),
|
||||
+1.0f, -1.0f, -1.0f, 0.buffer(),
|
||||
-1.0f, -1.0f, -1.0f, 3.buffer(),
|
||||
+1.0f, -1.0f, -1.0f, 0.buffer(),
|
||||
-1.0f, +1.0f, -1.0f, 1.buffer(),
|
||||
+1.0f, +1.0f, -1.0f, 2.buffer(),
|
||||
|
||||
-1.0f, -1.0f, +1.0f, Float.fromBits(3),
|
||||
-1.0f, +1.0f, -1.0f, Float.fromBits(2),
|
||||
-1.0f, -1.0f, -1.0f, Float.fromBits(0),
|
||||
-1.0f, +1.0f, -1.0f, Float.fromBits(2),
|
||||
-1.0f, -1.0f, +1.0f, Float.fromBits(3),
|
||||
-1.0f, +1.0f, +1.0f, Float.fromBits(1),
|
||||
-1.0f, -1.0f, +1.0f, 3.buffer(),
|
||||
-1.0f, +1.0f, -1.0f, 2.buffer(),
|
||||
-1.0f, -1.0f, -1.0f, 0.buffer(),
|
||||
-1.0f, +1.0f, -1.0f, 2.buffer(),
|
||||
-1.0f, -1.0f, +1.0f, 3.buffer(),
|
||||
-1.0f, +1.0f, +1.0f, 1.buffer(),
|
||||
|
||||
+1.0f, -1.0f, -1.0f, Float.fromBits(3),
|
||||
+1.0f, +1.0f, +1.0f, Float.fromBits(2),
|
||||
+1.0f, -1.0f, +1.0f, Float.fromBits(0),
|
||||
+1.0f, +1.0f, +1.0f, Float.fromBits(2),
|
||||
+1.0f, -1.0f, -1.0f, Float.fromBits(3),
|
||||
+1.0f, +1.0f, -1.0f, Float.fromBits(1),
|
||||
+1.0f, -1.0f, -1.0f, 3.buffer(),
|
||||
+1.0f, +1.0f, +1.0f, 2.buffer(),
|
||||
+1.0f, -1.0f, +1.0f, 0.buffer(),
|
||||
+1.0f, +1.0f, +1.0f, 2.buffer(),
|
||||
+1.0f, -1.0f, -1.0f, 3.buffer(),
|
||||
+1.0f, +1.0f, -1.0f, 1.buffer(),
|
||||
|
||||
-1.0f, -1.0f, +1.0f, Float.fromBits(0),
|
||||
+1.0f, +1.0f, +1.0f, Float.fromBits(1),
|
||||
-1.0f, +1.0f, +1.0f, Float.fromBits(2),
|
||||
+1.0f, +1.0f, +1.0f, Float.fromBits(1),
|
||||
-1.0f, -1.0f, +1.0f, Float.fromBits(0),
|
||||
+1.0f, -1.0f, +1.0f, Float.fromBits(3),
|
||||
-1.0f, -1.0f, +1.0f, 0.buffer(),
|
||||
+1.0f, +1.0f, +1.0f, 1.buffer(),
|
||||
-1.0f, +1.0f, +1.0f, 2.buffer(),
|
||||
+1.0f, +1.0f, +1.0f, 1.buffer(),
|
||||
-1.0f, -1.0f, +1.0f, 0.buffer(),
|
||||
+1.0f, -1.0f, +1.0f, 3.buffer(),
|
||||
))
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.world.mesh
|
||||
import de.bixilon.kotlinglm.vec2.Vec2
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.MeshUtil.buffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||
@ -31,8 +32,8 @@ class SingleWorldMesh(renderWindow: RenderWindow, initialCacheSize: Int, onDeman
|
||||
data.add(position[2])
|
||||
data.add(transformedUV.x)
|
||||
data.add(transformedUV.y)
|
||||
data.add(Float.fromBits(texture.renderData.shaderTextureId))
|
||||
data.add(Float.fromBits(tintColor or (light shl 24)))
|
||||
data.add(texture.renderData.shaderTextureId.buffer())
|
||||
data.add((tintColor or (light shl 24)).buffer())
|
||||
}
|
||||
|
||||
fun addVertex(x: Float, y: Float, z: Float, uv: Vec2, texture: AbstractTexture, shaderTextureId: Float, tintLight: Float) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user