mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 18:05:51 -04:00
texture manager: rename dynamic and static
This commit is contained in:
parent
f7956d44f7
commit
0b078921f7
@ -34,7 +34,7 @@ class BakedFaceTest {
|
|||||||
|
|
||||||
private fun texture(): Texture {
|
private fun texture(): Texture {
|
||||||
val manager = BakedModelTestUtil.createTextureManager(texture)
|
val manager = BakedModelTestUtil.createTextureManager(texture)
|
||||||
return manager.staticTextures.create(texture.toResourceLocation())
|
return manager.static.create(texture.toResourceLocation())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun singleMesh(): ChunkMesh {
|
private fun singleMesh(): ChunkMesh {
|
||||||
|
@ -18,7 +18,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
|
|||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.array.FontTextureArray
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.array.FontTextureArray
|
||||||
|
|
||||||
class DummyTextureManager(val context: RenderContext) : TextureManager() {
|
class DummyTextureManager(val context: RenderContext) : TextureManager() {
|
||||||
override val dynamicTextures = DummyDynamicTextureArray(context)
|
override val dynamic = DummyDynamicTextureArray(context)
|
||||||
override val staticTextures = DummyStaticTextureArray(context)
|
override val static = DummyStaticTextureArray(context)
|
||||||
override val font: FontTextureArray = DummyFontTextureArray(context)
|
override val font: FontTextureArray = DummyFontTextureArray(context)
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ class RenderLoop(
|
|||||||
lastFrame = currentFrame
|
lastFrame = currentFrame
|
||||||
|
|
||||||
|
|
||||||
context.textures.staticTextures.animator.draw()
|
context.textures.static.animator.draw()
|
||||||
|
|
||||||
context.renderer.draw()
|
context.renderer.draw()
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ object RenderLoader {
|
|||||||
val initLatch = ParentLatch(1, renderLatch)
|
val initLatch = ParentLatch(1, renderLatch)
|
||||||
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Generating font, gathering textures and loading models (after ${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Generating font, gathering textures and loading models (after ${stopwatch.labTime()})..." }
|
||||||
initLatch.inc(); runAsync { tints.init(connection.assetsManager); initLatch.dec() }
|
initLatch.inc(); runAsync { tints.init(connection.assetsManager); initLatch.dec() }
|
||||||
textures.dynamicTextures.upload(initLatch)
|
textures.dynamic.upload(initLatch)
|
||||||
textures.initializeSkins(connection)
|
textures.initializeSkins(connection)
|
||||||
textures.loadDefaultTextures()
|
textures.loadDefaultTextures()
|
||||||
font = FontManager.create(this, initLatch)
|
font = FontManager.create(this, initLatch)
|
||||||
@ -96,11 +96,11 @@ object RenderLoader {
|
|||||||
|
|
||||||
// Post init stage
|
// Post init stage
|
||||||
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Loading textures (after ${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Loading textures (after ${stopwatch.labTime()})..." }
|
||||||
textures.staticTextures.load(renderLatch)
|
textures.static.load(renderLatch)
|
||||||
textures.font.load(renderLatch)
|
textures.font.load(renderLatch)
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Uploading textures (after ${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Uploading textures (after ${stopwatch.labTime()})..." }
|
||||||
textures.staticTextures.upload(renderLatch)
|
textures.static.upload(renderLatch)
|
||||||
textures.font.upload(renderLatch)
|
textures.font.upload(renderLatch)
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Baking models (after ${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING, LogLevels.VERBOSE) { "Baking models (after ${stopwatch.labTime()})..." }
|
||||||
@ -120,7 +120,7 @@ object RenderLoader {
|
|||||||
window::focused.observeRendering(this) { state = it.decide(RenderingStates.RUNNING, RenderingStates.SLOW) }
|
window::focused.observeRendering(this) { state = it.decide(RenderingStates.RUNNING, RenderingStates.SLOW) }
|
||||||
|
|
||||||
window::iconified.observeRendering(this) { state = it.decide(RenderingStates.PAUSED, RenderingStates.RUNNING) }
|
window::iconified.observeRendering(this) { state = it.decide(RenderingStates.PAUSED, RenderingStates.RUNNING) }
|
||||||
profile.animations::sprites.observe(this, true) { textures.staticTextures.animator.enabled = it }
|
profile.animations::sprites.observe(this, true) { textures.static.animator.enabled = it }
|
||||||
|
|
||||||
|
|
||||||
input.init()
|
input.init()
|
||||||
@ -136,8 +136,8 @@ object RenderLoader {
|
|||||||
|
|
||||||
window.postInit()
|
window.postInit()
|
||||||
|
|
||||||
textures.dynamicTextures.activate()
|
textures.dynamic.activate()
|
||||||
textures.staticTextures.activate()
|
textures.static.activate()
|
||||||
|
|
||||||
|
|
||||||
renderLatch.dec() // initial count from rendering
|
renderLatch.dec() // initial count from rendering
|
||||||
|
@ -59,12 +59,12 @@ class WorldBorderRenderer(
|
|||||||
shader.native.defines["MAX_DISTANCE"] = MAX_DISTANCE
|
shader.native.defines["MAX_DISTANCE"] = MAX_DISTANCE
|
||||||
shader.load()
|
shader.load()
|
||||||
|
|
||||||
texture = context.textures.staticTextures.create(TEXTURE)
|
texture = context.textures.static.create(TEXTURE)
|
||||||
context.camera.offset::offset.observe(this) { reload = true }
|
context.camera.offset::offset.observe(this) { reload = true }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun postInit(latch: AbstractLatch) {
|
override fun postInit(latch: AbstractLatch) {
|
||||||
context.textures.staticTextures.use(shader)
|
context.textures.static.use(shader)
|
||||||
shader.textureIndexLayer = texture.renderData.shaderTextureId
|
shader.textureIndexLayer = texture.renderData.shaderTextureId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,14 +43,14 @@ class DoubleChestRenderer(
|
|||||||
private val TEXTURE_5 = arrayOf(minecraft("left"), minecraft("right"))
|
private val TEXTURE_5 = arrayOf(minecraft("left"), minecraft("right"))
|
||||||
|
|
||||||
private fun register(loader: ModelLoader, name: ResourceLocation, texture: ResourceLocation) {
|
private fun register(loader: ModelLoader, name: ResourceLocation, texture: ResourceLocation) {
|
||||||
val static = loader.context.textures.staticTextures
|
val static = loader.context.textures.static
|
||||||
val override = mapOf(TEXTURE to static.create(texture))
|
val override = mapOf(TEXTURE to static.create(texture))
|
||||||
loader.skeletal.register(name, MODEL, override)
|
loader.skeletal.register(name, MODEL, override)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun register5(loader: ModelLoader, name: ResourceLocation, textures: Array<ResourceLocation>) {
|
private fun register5(loader: ModelLoader, name: ResourceLocation, textures: Array<ResourceLocation>) {
|
||||||
if (textures.size != 2) throw IllegalStateException("Textures must be left and right!")
|
if (textures.size != 2) throw IllegalStateException("Textures must be left and right!")
|
||||||
val static = loader.context.textures.staticTextures
|
val static = loader.context.textures.static
|
||||||
val override = mapOf(
|
val override = mapOf(
|
||||||
TEXTURE_5[0] to static.create(textures[0]),
|
TEXTURE_5[0] to static.create(textures[0]),
|
||||||
TEXTURE_5[1] to static.create(textures[1]),
|
TEXTURE_5[1] to static.create(textures[1]),
|
||||||
|
@ -41,7 +41,7 @@ class SingleChestRenderer(
|
|||||||
private val named = minecraft("chest")
|
private val named = minecraft("chest")
|
||||||
|
|
||||||
fun register(loader: ModelLoader, name: ResourceLocation, texture: ResourceLocation) {
|
fun register(loader: ModelLoader, name: ResourceLocation, texture: ResourceLocation) {
|
||||||
val texture = loader.context.textures.staticTextures.create(texture)
|
val texture = loader.context.textures.static.create(texture)
|
||||||
val model = if (loader.packFormat < 5) MODEL else MODEL_5
|
val model = if (loader.packFormat < 5) MODEL else MODEL_5
|
||||||
loader.skeletal.register(name, model, mapOf(named to texture))
|
loader.skeletal.register(name, model, mapOf(named to texture))
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ class ShulkerBoxRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun load(name: ResourceLocation, texture: ResourceLocation, loader: ModelLoader) {
|
private fun load(name: ResourceLocation, texture: ResourceLocation, loader: ModelLoader) {
|
||||||
val texture = loader.context.textures.staticTextures.create(texture)
|
val texture = loader.context.textures.static.create(texture)
|
||||||
loader.skeletal.register(name, TEMPLATE, override = mapOf(this.named to texture))
|
loader.skeletal.register(name, TEMPLATE, override = mapOf(this.named to texture))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ class FireOverlay(
|
|||||||
private val config = context.connection.profiles.rendering.overlay.fire
|
private val config = context.connection.profiles.rendering.overlay.fire
|
||||||
private val player = context.connection.player
|
private val player = context.connection.player
|
||||||
private val shader = context.shaders.genericTexture2dShader
|
private val shader = context.shaders.genericTexture2dShader
|
||||||
private var texture: Texture = context.textures.staticTextures.create("block/fire_1".toResourceLocation().texture())
|
private var texture: Texture = context.textures.static.create("block/fire_1".toResourceLocation().texture())
|
||||||
private val lava = context.connection.registries.fluid[LavaFluid]
|
private val lava = context.connection.registries.fluid[LavaFluid]
|
||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() {
|
get() {
|
||||||
|
@ -23,7 +23,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
|||||||
|
|
||||||
class PowderSnowOverlay(context: RenderContext) : SimpleOverlay(context) {
|
class PowderSnowOverlay(context: RenderContext) : SimpleOverlay(context) {
|
||||||
private val config = context.connection.profiles.rendering.overlay
|
private val config = context.connection.profiles.rendering.overlay
|
||||||
override val texture: Texture = context.textures.staticTextures.create(OVERLAY_TEXTURE)
|
override val texture: Texture = context.textures.static.create(OVERLAY_TEXTURE)
|
||||||
private val strength = FloatAverage(1L * 1000000000L, 0.0f)
|
private val strength = FloatAverage(1L * 1000000000L, 0.0f)
|
||||||
override var render: Boolean = false
|
override var render: Boolean = false
|
||||||
get() = config.powderSnow && field
|
get() = config.powderSnow && field
|
||||||
|
@ -23,7 +23,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
|||||||
|
|
||||||
class PumpkinOverlay(context: RenderContext) : FirstPersonOverlay(context) {
|
class PumpkinOverlay(context: RenderContext) : FirstPersonOverlay(context) {
|
||||||
private val config = context.connection.profiles.rendering.overlay
|
private val config = context.connection.profiles.rendering.overlay
|
||||||
override val texture: Texture = context.textures.staticTextures.create(OVERLAY_TEXTURE)
|
override val texture: Texture = context.textures.static.create(OVERLAY_TEXTURE)
|
||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() {
|
get() {
|
||||||
if (!config.pumpkin) {
|
if (!config.pumpkin) {
|
||||||
|
@ -24,7 +24,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
|||||||
|
|
||||||
class WaterOverlay(context: RenderContext) : SimpleOverlay(context) {
|
class WaterOverlay(context: RenderContext) : SimpleOverlay(context) {
|
||||||
private val player = context.connection.player
|
private val player = context.connection.player
|
||||||
override val texture: Texture = context.textures.staticTextures.create("minecraft:misc/underwater".toResourceLocation().texture())
|
override val texture: Texture = context.textures.static.create("minecraft:misc/underwater".toResourceLocation().texture())
|
||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() = player.gamemode != Gamemodes.SPECTATOR && player.physics.submersion.eye is WaterFluid
|
get() = player.gamemode != Gamemodes.SPECTATOR && player.physics.submersion.eye is WaterFluid
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
|||||||
|
|
||||||
class WorldBorderOverlay(context: RenderContext) : SimpleOverlay(context) {
|
class WorldBorderOverlay(context: RenderContext) : SimpleOverlay(context) {
|
||||||
private val config = context.connection.profiles.rendering.overlay
|
private val config = context.connection.profiles.rendering.overlay
|
||||||
override val texture: Texture = context.textures.staticTextures.create(OVERLAY_TEXTURE)
|
override val texture: Texture = context.textures.static.create(OVERLAY_TEXTURE)
|
||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() = config.worldBorder && context.connection.world.border.isOutside(context.connection.player.physics.position)
|
get() = config.worldBorder && context.connection.world.border.isOutside(context.connection.player.physics.position)
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ import java.util.*
|
|||||||
class WeatherOverlay(private val context: RenderContext) : Overlay {
|
class WeatherOverlay(private val context: RenderContext) : Overlay {
|
||||||
private val world = context.connection.world
|
private val world = context.connection.world
|
||||||
private val config = context.connection.profiles.rendering.overlay.weather
|
private val config = context.connection.profiles.rendering.overlay.weather
|
||||||
private val rain = context.textures.staticTextures.create(RAIN)
|
private val rain = context.textures.static.create(RAIN)
|
||||||
private val snow = context.textures.staticTextures.create(SNOW)
|
private val snow = context.textures.static.create(SNOW)
|
||||||
private val precipitation get() = context.connection.player.physics.positionInfo.biome?.precipitation
|
private val precipitation get() = context.connection.player.physics.positionInfo.biome?.precipitation
|
||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() = world.dimension.effects.weather && world.weather.raining && when (precipitation) { // ToDo: Check if exposed to the sky
|
get() = world.dimension.effects.weather && world.weather.raining && when (precipitation) { // ToDo: Check if exposed to the sky
|
||||||
@ -92,7 +92,7 @@ class WeatherOverlay(private val context: RenderContext) : Overlay {
|
|||||||
|
|
||||||
override fun postInit() {
|
override fun postInit() {
|
||||||
shader.use()
|
shader.use()
|
||||||
context.textures.staticTextures.use(shader)
|
context.textures.static.use(shader)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateShader() {
|
private fun updateShader() {
|
||||||
|
@ -67,7 +67,7 @@ class AtlasTextureManager(private val context: RenderContext) {
|
|||||||
|
|
||||||
fun load() {
|
fun load() {
|
||||||
for (texture in textures) {
|
for (texture in textures) {
|
||||||
context.textures.staticTextures += texture
|
context.textures.static += texture
|
||||||
}
|
}
|
||||||
this.cache.clear()
|
this.cache.clear()
|
||||||
this.textures.clear()
|
this.textures.clear()
|
||||||
|
@ -251,7 +251,7 @@ class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Layouted
|
|||||||
|
|
||||||
layout += LineSpacerElement(guiRenderer)
|
layout += LineSpacerElement(guiRenderer)
|
||||||
|
|
||||||
layout += AutoTextElement(guiRenderer, 20, properties = RIGHT) { "Dynamic textures ${context.textures.dynamicTextures.size.format()}/${context.textures.dynamicTextures.capacity.format()}" }
|
layout += AutoTextElement(guiRenderer, 20, properties = RIGHT) { "Dynamic textures ${context.textures.dynamic.size.format()}/${context.textures.dynamic.capacity.format()}" }
|
||||||
|
|
||||||
layout += LineSpacerElement(guiRenderer)
|
layout += LineSpacerElement(guiRenderer)
|
||||||
|
|
||||||
|
@ -44,14 +44,14 @@ data class BlockModel(
|
|||||||
|
|
||||||
fun createTexture(name: String, textures: TextureManager): Texture? {
|
fun createTexture(name: String, textures: TextureManager): Texture? {
|
||||||
if (!name.startsWith("#")) {
|
if (!name.startsWith("#")) {
|
||||||
return textures.staticTextures.create(name.toResourceLocation())
|
return textures.static.create(name.toResourceLocation())
|
||||||
}
|
}
|
||||||
val texture = this.textures?.get(name.substring(1))
|
val texture = this.textures?.get(name.substring(1))
|
||||||
if (texture == null || texture !is ResourceLocation) {
|
if (texture == null || texture !is ResourceLocation) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return textures.staticTextures.create(texture)
|
return textures.static.create(texture)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getOrNullTexture(name: String, textures: TextureManager): Texture? {
|
fun getOrNullTexture(name: String, textures: TextureManager): Texture? {
|
||||||
|
@ -27,8 +27,8 @@ class LavaFluidModel : FluidModel {
|
|||||||
override val transparency = TextureTransparencies.OPAQUE// TODO: from texture
|
override val transparency = TextureTransparencies.OPAQUE// TODO: from texture
|
||||||
|
|
||||||
override fun load(context: RenderContext) {
|
override fun load(context: RenderContext) {
|
||||||
still = context.textures.staticTextures.create(context.models.block.fixTexturePath(STILL).texture())
|
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
||||||
flowing = context.textures.staticTextures.create(context.models.block.fixTexturePath(FLOWING).texture())
|
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -31,8 +31,8 @@ class WaterFluidModel : FluidModel {
|
|||||||
override val transparency = TextureTransparencies.TRANSLUCENT// TODO: from texture
|
override val transparency = TextureTransparencies.TRANSLUCENT// TODO: from texture
|
||||||
|
|
||||||
override fun load(context: RenderContext) {
|
override fun load(context: RenderContext) {
|
||||||
still = context.textures.staticTextures.create(context.models.block.fixTexturePath(STILL).texture())
|
still = context.textures.static.create(context.models.block.fixTexturePath(STILL).texture())
|
||||||
flowing = context.textures.staticTextures.create(context.models.block.fixTexturePath(FLOWING).texture())
|
flowing = context.textures.static.create(context.models.block.fixTexturePath(FLOWING).texture())
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -32,7 +32,7 @@ class ItemModel(
|
|||||||
if (this.textures == null) return null
|
if (this.textures == null) return null
|
||||||
val texture = this.textures["layer0", "particle"]?.toResourceLocation()?.texture() ?: return null
|
val texture = this.textures["layer0", "particle"]?.toResourceLocation()?.texture() ?: return null
|
||||||
|
|
||||||
return ItemModelPrototype(textures.staticTextures.create(texture))
|
return ItemModelPrototype(textures.static.create(texture))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -119,7 +119,7 @@ class ParticleRenderer(
|
|||||||
translucentMesh.load()
|
translucentMesh.load()
|
||||||
for (particle in connection.registries.particleType) {
|
for (particle in connection.registries.particleType) {
|
||||||
for (resourceLocation in particle.textures) {
|
for (resourceLocation in particle.textures) {
|
||||||
context.textures.staticTextures.create(resourceLocation)
|
context.textures.static.create(resourceLocation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.file.FileTe
|
|||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
|
|
||||||
abstract class SimpleTextureParticle(connection: PlayConnection, position: Vec3d, velocity: Vec3d, data: ParticleData? = null) : TextureParticle(connection, position, velocity, data) {
|
abstract class SimpleTextureParticle(connection: PlayConnection, position: Vec3d, velocity: Vec3d, data: ParticleData? = null) : TextureParticle(connection, position, velocity, data) {
|
||||||
override var texture = this.data.type.textures.getOrNull(0)?.let { connection.rendering?.context?.textures?.staticTextures?.get(it) }
|
override var texture = this.data.type.textures.getOrNull(0)?.let { connection.rendering?.context?.textures?.static?.get(it) }
|
||||||
var spriteDisabled = false
|
var spriteDisabled = false
|
||||||
|
|
||||||
|
|
||||||
@ -39,13 +39,13 @@ abstract class SimpleTextureParticle(connection: PlayConnection, position: Vec3d
|
|||||||
if (texture?.nullCast<FileTexture>()?.resourceLocation == nextTextureResourceLocation) {
|
if (texture?.nullCast<FileTexture>()?.resourceLocation == nextTextureResourceLocation) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
texture = connection.rendering?.context?.textures?.staticTextures?.get(nextTextureResourceLocation)
|
texture = connection.rendering?.context?.textures?.static?.get(nextTextureResourceLocation)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setRandomSprite() {
|
fun setRandomSprite() {
|
||||||
val textures = data.type.textures
|
val textures = data.type.textures
|
||||||
if (textures.isEmpty()) return
|
if (textures.isEmpty()) return
|
||||||
texture = connection.rendering?.context?.textures?.staticTextures?.get(textures.random())
|
texture = connection.rendering?.context?.textures?.static?.get(textures.random())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun tick() {
|
override fun tick() {
|
||||||
|
@ -24,7 +24,7 @@ interface TextureShader : AbstractShader {
|
|||||||
return uniform(name, textureManager) { native, name, value: TextureManager ->
|
return uniform(name, textureManager) { native, name, value: TextureManager ->
|
||||||
value.use(native, name)
|
value.use(native, name)
|
||||||
if (animated) {
|
if (animated) {
|
||||||
textureManager.staticTextures.animator.use(native)
|
textureManager.static.animator.use(native)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ data class SkeletalModel(
|
|||||||
if (name in skip) continue
|
if (name in skip) continue
|
||||||
val file = name.texture()
|
val file = name.texture()
|
||||||
if (file in skip) continue
|
if (file in skip) continue
|
||||||
val texture = context.textures.staticTextures.create(file)
|
val texture = context.textures.static.create(file)
|
||||||
this.loadedTextures[name] = SkeletalTextureInstance(properties, texture)
|
this.loadedTextures[name] = SkeletalTextureInstance(properties, texture)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ class SkyboxRenderer(
|
|||||||
override fun init() {
|
override fun init() {
|
||||||
for (properties in DefaultDimensionEffects) {
|
for (properties in DefaultDimensionEffects) {
|
||||||
val texture = properties.fixedTexture ?: continue
|
val texture = properties.fixedTexture ?: continue
|
||||||
textureCache[texture] = sky.context.textures.staticTextures.create(texture)
|
textureCache[texture] = sky.context.textures.static.create(texture)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ class SkyboxRenderer(
|
|||||||
|
|
||||||
colorMesh.load()
|
colorMesh.load()
|
||||||
textureMesh.load()
|
textureMesh.load()
|
||||||
sky.context.textures.staticTextures.use(textureShader)
|
sky.context.textures.static.use(textureShader)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateColorShader() {
|
private fun updateColorShader() {
|
||||||
|
@ -29,7 +29,7 @@ import java.util.*
|
|||||||
class MoonRenderer(
|
class MoonRenderer(
|
||||||
sky: SkyRenderer,
|
sky: SkyRenderer,
|
||||||
) : PlanetRenderer(sky) {
|
) : PlanetRenderer(sky) {
|
||||||
override val texture = sky.context.textures.staticTextures.create(MOON_PHASES)
|
override val texture = sky.context.textures.static.create(MOON_PHASES)
|
||||||
private var phase = MoonPhases.FULL_MOON
|
private var phase = MoonPhases.FULL_MOON
|
||||||
|
|
||||||
private fun updateUV(phases: MoonPhases) {
|
private fun updateUV(phases: MoonPhases) {
|
||||||
|
@ -27,7 +27,7 @@ import kotlin.math.pow
|
|||||||
class SunRenderer(
|
class SunRenderer(
|
||||||
sky: SkyRenderer,
|
sky: SkyRenderer,
|
||||||
) : PlanetRenderer(sky) {
|
) : PlanetRenderer(sky) {
|
||||||
override val texture = sky.context.textures.staticTextures.create(SUN)
|
override val texture = sky.context.textures.static.create(SUN)
|
||||||
|
|
||||||
public override fun calculateAngle(): Float {
|
public override fun calculateAngle(): Float {
|
||||||
val time = sky.context.connection.world.time
|
val time = sky.context.connection.world.time
|
||||||
|
@ -84,7 +84,7 @@ interface NativeShader {
|
|||||||
companion object {
|
companion object {
|
||||||
val DEFAULT_DEFINES: Map<String, (context: RenderContext) -> Any?> = mapOf(
|
val DEFAULT_DEFINES: Map<String, (context: RenderContext) -> Any?> = mapOf(
|
||||||
"ANIMATED_TEXTURE_COUNT" to {
|
"ANIMATED_TEXTURE_COUNT" to {
|
||||||
max(it.textures.staticTextures.animator.size, 1)
|
max(it.textures.static.animator.size, 1)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture
|
|||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
|
|
||||||
abstract class TextureManager {
|
abstract class TextureManager {
|
||||||
abstract val staticTextures: StaticTextureArray
|
abstract val static: StaticTextureArray
|
||||||
abstract val dynamicTextures: DynamicTextureArray
|
abstract val dynamic: DynamicTextureArray
|
||||||
abstract val font: FontTextureArray
|
abstract val font: FontTextureArray
|
||||||
|
|
||||||
lateinit var debugTexture: Texture
|
lateinit var debugTexture: Texture
|
||||||
@ -44,8 +44,8 @@ abstract class TextureManager {
|
|||||||
if (this::debugTexture.isInitialized) {
|
if (this::debugTexture.isInitialized) {
|
||||||
throw IllegalStateException("Already initialized!")
|
throw IllegalStateException("Already initialized!")
|
||||||
}
|
}
|
||||||
debugTexture = staticTextures.create(RenderConstants.DEBUG_TEXTURE_RESOURCE_LOCATION)
|
debugTexture = static.create(RenderConstants.DEBUG_TEXTURE_RESOURCE_LOCATION)
|
||||||
whiteTexture = CodeTexturePart(texture = staticTextures.create(minosoft("white").texture(), mipmaps = false), uvStart = Vec2(0.0f, 0.0f), uvEnd = Vec2(0.001f, 0.001f), size = Vec2i(16, 16))
|
whiteTexture = CodeTexturePart(texture = static.create(minosoft("white").texture(), mipmaps = false), uvStart = Vec2(0.0f, 0.0f), uvEnd = Vec2(0.001f, 0.001f), size = Vec2i(16, 16))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initializeSkins(connection: PlayConnection) {
|
fun initializeSkins(connection: PlayConnection) {
|
||||||
@ -54,12 +54,12 @@ abstract class TextureManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun use(shader: NativeShader, name: String = ShaderUniforms.TEXTURES) {
|
fun use(shader: NativeShader, name: String = ShaderUniforms.TEXTURES) {
|
||||||
staticTextures.use(shader, name)
|
static.use(shader, name)
|
||||||
dynamicTextures.use(shader, name)
|
dynamic.use(shader, name)
|
||||||
font.use(shader, name)
|
font.use(shader, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reload() {
|
fun reload() {
|
||||||
dynamicTextures.reload()
|
dynamic.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class SkinManager(private val textureManager: TextureManager) {
|
|||||||
private var skin: PlayerSkin? = null
|
private var skin: PlayerSkin? = null
|
||||||
|
|
||||||
fun initialize(account: Account, assets: AssetsManager) {
|
fun initialize(account: Account, assets: AssetsManager) {
|
||||||
default = DefaultSkinProvider(this.textureManager.dynamicTextures, assets)
|
default = DefaultSkinProvider(this.textureManager.dynamic, assets)
|
||||||
default.initialize()
|
default.initialize()
|
||||||
skin = getSkin(account.uuid, account.properties, fetch = true, async = false)
|
skin = getSkin(account.uuid, account.properties, fetch = true, async = false)
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ class SkinManager(private val textureManager: TextureManager) {
|
|||||||
|
|
||||||
private fun getSkin(uuid: UUID, properties: PlayerProperties?, async: Boolean = true): PlayerSkin? {
|
private fun getSkin(uuid: UUID, properties: PlayerProperties?, async: Boolean = true): PlayerSkin? {
|
||||||
val texture = properties?.textures?.skin ?: return default[uuid]
|
val texture = properties?.textures?.skin ?: return default[uuid]
|
||||||
return PlayerSkin(textureManager.dynamicTextures.push(texture.getHash(), async) { texture.read().readSkin() }, default[uuid]?.texture, texture.metadata.model)
|
return PlayerSkin(textureManager.dynamic.push(texture.getHash(), async) { texture.read().readSkin() }, default[uuid]?.texture, texture.metadata.model)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSkin(player: PlayerEntity, properties: PlayerProperties? = null, fetch: Boolean = true, async: Boolean = true): PlayerSkin? {
|
fun getSkin(player: PlayerEntity, properties: PlayerProperties? = null, fetch: Boolean = true, async: Boolean = true): PlayerSkin? {
|
||||||
|
@ -20,7 +20,7 @@ import de.bixilon.minosoft.gui.rendering.system.opengl.texture.dynamic.OpenGLDyn
|
|||||||
|
|
||||||
class OpenGLTextureManager(val context: RenderContext) : TextureManager() {
|
class OpenGLTextureManager(val context: RenderContext) : TextureManager() {
|
||||||
private val mipmaps = context.connection.profiles.rendering.textures.mipmaps
|
private val mipmaps = context.connection.profiles.rendering.textures.mipmaps
|
||||||
override val staticTextures = OpenGLTextureArray(context, true, mipmaps)
|
override val static = OpenGLTextureArray(context, true, mipmaps)
|
||||||
override val dynamicTextures = OpenGLDynamicTextureArray(context, context.system.unsafeCast(), resolution = 64, mipmaps = mipmaps)
|
override val dynamic = OpenGLDynamicTextureArray(context, context.system.unsafeCast(), resolution = 64, mipmaps = mipmaps)
|
||||||
override val font = OpenGLFontTextureArray(context)
|
override val font = OpenGLFontTextureArray(context)
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ class OpenGLDynamicTextureArray(
|
|||||||
glBindTexture(GL_TEXTURE_2D_ARRAY, handle)
|
glBindTexture(GL_TEXTURE_2D_ARRAY, handle)
|
||||||
|
|
||||||
unsafeUpload(index, texture)
|
unsafeUpload(index, texture)
|
||||||
context.textures.staticTextures.activate() // TODO: why?
|
context.textures.static.activate() // TODO: why?
|
||||||
texture.state = DynamicTextureState.LOADED
|
texture.state = DynamicTextureState.LOADED
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ class OpenGLDynamicTextureArray(
|
|||||||
unsafeUse(shader)
|
unsafeUse(shader)
|
||||||
}
|
}
|
||||||
|
|
||||||
context.textures.staticTextures.activate() // TODO: why?
|
context.textures.static.activate() // TODO: why?
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user