diff --git a/assets/tiling.frag b/assets/tiling.frag index 2b2359052..64bd0243b 100644 --- a/assets/tiling.frag +++ b/assets/tiling.frag @@ -25,7 +25,7 @@ uniform ivec2 tilesInAtlas = ivec2(256, 256); uniform ivec2 atlasTexSize = ivec2(4096, 4096); ivec2 tileSizeInPx = atlasTexSize / tilesInAtlas; -uniform vec4 colourFilter = vec4(1, 1, 1, 1); +uniform vec4 colourFilter = vec4(1, 1, 1, 1); // used by WALL to darken it uniform ivec2 cameraTranslation = ivec2(0, 0); diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 5c58a8878..64866efeb 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -694,7 +694,14 @@ object Terrarum : Screen { get() = Gdx.input.x inline val mouseScreenY: Int get() = Gdx.input.y - + /** Bigger than 1.0 */ + inline val updateRate: Double + get() = 1.0 / Gdx.graphics.deltaTime + val updateRateStr: String + get() = String.format("%.2f", updateRate) + /** Smaller than 1.0 */ + val renderRate = 1.0 / TARGET_INTERNAL_FPS + val renderRateStr = TARGET_INTERNAL_FPS.toString() /** * Usage: diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt index 421090f90..8458a378f 100644 --- a/src/net/torvald/terrarum/TitleScreen.kt +++ b/src/net/torvald/terrarum/TitleScreen.kt @@ -14,7 +14,6 @@ import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ai.ActorAI -import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.Ingame @@ -191,7 +190,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen { private val introUncoverTime: Second = 0.3f private var introUncoverDeltaCounter = 0f private var updateDeltaCounter = 0.0 - protected val updateRate = 1.0 / Terrarum.TARGET_INTERNAL_FPS + protected val renderRate = Terrarum.renderRate override fun render(delta: Float) { if (!loadDone) { @@ -201,9 +200,9 @@ class TitleScreen(val batch: SpriteBatch) : Screen { // async update updateDeltaCounter += delta var updateTries = 0 - while (updateDeltaCounter >= updateRate) { + while (updateDeltaCounter >= renderRate) { updateScreen(delta) - updateDeltaCounter -= updateRate + updateDeltaCounter -= renderRate updateTries++ if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index d73e55a7f..6a0cc4ae0 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -8,7 +8,6 @@ import net.torvald.dataclass.CircularArray import net.torvald.terrarum.blockproperties.BlockPropUtil import net.torvald.terrarum.blockstats.BlockStats import net.torvald.terrarum.concurrent.ThreadParallel -import net.torvald.terrarum.console.* import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver import net.torvald.terrarum.gamecontroller.IngameController @@ -28,7 +27,6 @@ import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.modulebasegame.console.AVTracker import net.torvald.terrarum.modulebasegame.console.ActorsList import net.torvald.terrarum.console.Authenticator -import net.torvald.terrarum.console.SetGlobalLightOverride import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension @@ -81,8 +79,8 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { } fun getCanonicalTitle() = AppLoader.GAME_NAME + - " — F: ${Gdx.graphics.framesPerSecond} (${Terrarum.TARGET_INTERNAL_FPS})" + - " — M: J${Terrarum.memJavaHeap}M / N${Terrarum.memNativeHeap}M / X${Terrarum.memXmx}M" + " — F: ${Gdx.graphics.framesPerSecond} (Δt${Terrarum.updateRateStr} / RT${Terrarum.renderRateStr})" + + " — M: J${Terrarum.memJavaHeap}M / N${Terrarum.memNativeHeap}M / X${Terrarum.memXmx}M" } @@ -420,7 +418,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { } protected var updateDeltaCounter = 0.0 - protected val updateRate = 1.0 / Terrarum.TARGET_INTERNAL_FPS + protected val renderRate = Terrarum.renderRate private var firstTimeRun = true @@ -430,9 +428,9 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { private class ThreadIngameUpdate(val ingame: Ingame): Runnable { override fun run() { var updateTries = 0 - while (ingame.updateDeltaCounter >= ingame.updateRate) { + while (ingame.updateDeltaCounter >= ingame.renderRate) { ingame.updateGame(Terrarum.deltaTime) - ingame.updateDeltaCounter -= ingame.updateRate + ingame.updateDeltaCounter -= ingame.renderRate updateTries++ if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { @@ -486,12 +484,12 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { } else { var updateTries = 0 - while (updateDeltaCounter >= updateRate) { + while (updateDeltaCounter >= renderRate) { //updateGame(delta) Terrarum.debugTimers["Ingame.update"] = measureNanoTime { updateGame(delta) } - updateDeltaCounter -= updateRate + updateDeltaCounter -= renderRate updateTries++ if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt index 281bb0b84..fd78cb0c3 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt @@ -733,9 +733,8 @@ internal object BlocksDrawer { shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height) shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat()) shader.setUniformi("cameraTranslation", WorldCamera.x fmod TILE_SIZE, WorldCamera.y fmod TILE_SIZE) - shader.setUniformi("tileSizeInPx", TILE_SIZE) - shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas - shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas + /*shader hard-code*/shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas + /*shader hard-code*/shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas tilesQuad.render(shader, GL20.GL_TRIANGLES) shader.end()