mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
fluid renderer: cache face properties
Reduces memory allocations, dirty hack
This commit is contained in:
parent
79300a0df3
commit
32263656bb
@ -35,7 +35,6 @@ import de.bixilon.minosoft.gui.rendering.RenderContext
|
|||||||
import de.bixilon.minosoft.gui.rendering.chunk.mesh.ChunkMesh
|
import de.bixilon.minosoft.gui.rendering.chunk.mesh.ChunkMesh
|
||||||
import de.bixilon.minosoft.gui.rendering.chunk.mesh.ChunkMeshes
|
import de.bixilon.minosoft.gui.rendering.chunk.mesh.ChunkMeshes
|
||||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.FaceCulling
|
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.FaceCulling
|
||||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.FaceProperties
|
|
||||||
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.textures.TextureUtil.getMesh
|
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.getMesh
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
||||||
@ -93,13 +92,7 @@ class FluidSectionMesher(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
return FaceCulling.canCull(state, FaceProperties(Vec2.EMPTY, Vec2(1.0f), model.transparency), direction, neighbour)
|
return FaceCulling.canCull(state, model.properties, direction, neighbour)
|
||||||
}
|
|
||||||
|
|
||||||
val topBlock = if (y == ProtocolDefinition.SECTION_MAX_Y) {
|
|
||||||
neighbours[Directions.O_UP]?.blocks?.let { it[x, 0, z] }
|
|
||||||
} else {
|
|
||||||
section.blocks[x, y + 1, z]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val skip = booleanArrayOf(
|
val skip = booleanArrayOf(
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.models.fluid
|
package de.bixilon.minosoft.gui.rendering.models.fluid
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderContext
|
import de.bixilon.minosoft.gui.rendering.RenderContext
|
||||||
|
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.FaceProperties
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
||||||
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.tint.TintProvider
|
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
||||||
@ -24,5 +25,8 @@ interface FluidModel {
|
|||||||
val flowing: Texture
|
val flowing: Texture
|
||||||
val transparency: TextureTransparencies
|
val transparency: TextureTransparencies
|
||||||
|
|
||||||
|
@Deprecated("dirty workaround")
|
||||||
|
val properties: FaceProperties
|
||||||
|
|
||||||
fun load(context: RenderContext)
|
fun load(context: RenderContext)
|
||||||
}
|
}
|
||||||
|
@ -13,22 +13,28 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering.models.fluid.fluids
|
package de.bixilon.minosoft.gui.rendering.models.fluid.fluids
|
||||||
|
|
||||||
|
import de.bixilon.kotlinglm.vec2.Vec2
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
|
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderContext
|
import de.bixilon.minosoft.gui.rendering.RenderContext
|
||||||
|
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.FaceProperties
|
||||||
import de.bixilon.minosoft.gui.rendering.models.fluid.FluidModel
|
import de.bixilon.minosoft.gui.rendering.models.fluid.FluidModel
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
||||||
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.textures.TextureUtil.texture
|
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY
|
||||||
|
|
||||||
class LavaFluidModel : FluidModel {
|
class LavaFluidModel : FluidModel {
|
||||||
override var still: Texture = unsafeNull()
|
override var still: Texture = unsafeNull()
|
||||||
override var flowing: Texture = unsafeNull()
|
override var flowing: Texture = unsafeNull()
|
||||||
override val transparency = TextureTransparencies.OPAQUE// TODO: from texture
|
override var transparency = TextureTransparencies.OPAQUE
|
||||||
|
override var properties: FaceProperties = unsafeNull()
|
||||||
|
|
||||||
override fun load(context: RenderContext) {
|
override fun load(context: RenderContext) {
|
||||||
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
||||||
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
||||||
|
transparency = still.transparency// TODO: flowing?
|
||||||
|
properties = FaceProperties(Vec2.EMPTY, Vec2(1.0f), transparency)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -13,26 +13,32 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering.models.fluid.fluids
|
package de.bixilon.minosoft.gui.rendering.models.fluid.fluids
|
||||||
|
|
||||||
|
import de.bixilon.kotlinglm.vec2.Vec2
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
|
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderContext
|
import de.bixilon.minosoft.gui.rendering.RenderContext
|
||||||
|
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.FaceProperties
|
||||||
import de.bixilon.minosoft.gui.rendering.models.fluid.FluidModel
|
import de.bixilon.minosoft.gui.rendering.models.fluid.FluidModel
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureTransparencies
|
||||||
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.textures.TextureUtil.texture
|
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture
|
||||||
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
||||||
import de.bixilon.minosoft.gui.rendering.tint.tints.fluid.WaterTintProvider
|
import de.bixilon.minosoft.gui.rendering.tint.tints.fluid.WaterTintProvider
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY
|
||||||
|
|
||||||
class WaterFluidModel : FluidModel {
|
class WaterFluidModel : FluidModel {
|
||||||
override val tint: TintProvider = WaterTintProvider
|
override val tint: TintProvider = WaterTintProvider
|
||||||
|
|
||||||
override var still: Texture = unsafeNull()
|
override var still: Texture = unsafeNull()
|
||||||
override var flowing: Texture = unsafeNull()
|
override var flowing: Texture = unsafeNull()
|
||||||
override val transparency = TextureTransparencies.TRANSLUCENT// TODO: from texture
|
override var transparency = TextureTransparencies.TRANSLUCENT
|
||||||
|
override var properties: FaceProperties = unsafeNull()
|
||||||
|
|
||||||
override fun load(context: RenderContext) {
|
override fun load(context: RenderContext) {
|
||||||
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
||||||
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
||||||
|
transparency = still.transparency// TODO: flowing?
|
||||||
|
properties = FaceProperties(Vec2.EMPTY, Vec2(1.0f), transparency)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user