mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 09:56:37 -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.ChunkMeshes
|
||||
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.textures.TextureUtil.getMesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
||||
@ -93,13 +92,7 @@ class FluidSectionMesher(
|
||||
return true
|
||||
}
|
||||
|
||||
return FaceCulling.canCull(state, FaceProperties(Vec2.EMPTY, Vec2(1.0f), model.transparency), 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]
|
||||
return FaceCulling.canCull(state, model.properties, direction, neighbour)
|
||||
}
|
||||
|
||||
val skip = booleanArrayOf(
|
||||
|
@ -14,6 +14,7 @@
|
||||
package de.bixilon.minosoft.gui.rendering.models.fluid
|
||||
|
||||
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.texture.Texture
|
||||
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
||||
@ -24,5 +25,8 @@ interface FluidModel {
|
||||
val flowing: Texture
|
||||
val transparency: TextureTransparencies
|
||||
|
||||
@Deprecated("dirty workaround")
|
||||
val properties: FaceProperties
|
||||
|
||||
fun load(context: RenderContext)
|
||||
}
|
||||
|
@ -13,22 +13,28 @@
|
||||
|
||||
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.minosoft.data.registries.identified.Namespaces.minecraft
|
||||
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.system.base.texture.TextureTransparencies
|
||||
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.util.vec.vec2.Vec2Util.EMPTY
|
||||
|
||||
class LavaFluidModel : FluidModel {
|
||||
override var still: 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) {
|
||||
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).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 {
|
||||
|
@ -13,26 +13,32 @@
|
||||
|
||||
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.minosoft.data.registries.identified.Namespaces.minecraft
|
||||
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.system.base.texture.TextureTransparencies
|
||||
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.tint.TintProvider
|
||||
import de.bixilon.minosoft.gui.rendering.tint.tints.fluid.WaterTintProvider
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY
|
||||
|
||||
class WaterFluidModel : FluidModel {
|
||||
override val tint: TintProvider = WaterTintProvider
|
||||
|
||||
override var still: 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) {
|
||||
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user