diff --git a/assets/aaaxmul.frag b/assets/aaaxmul.frag new file mode 100644 index 000000000..6a67d5b99 --- /dev/null +++ b/assets/aaaxmul.frag @@ -0,0 +1,17 @@ +#version 120 +#ifdef GL_ES + precision mediump float; +#endif + +varying vec4 v_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; // world texture, has alpha value that is meaningful + +uniform sampler2D tex1; // lightmap texture + +void main() { + vec4 colorTex0 = texture2D(u_texture, v_texCoords); // world texture + vec4 colorTex1 = texture2D(tex1, v_texCoords); // lightmap (RGBA) + + gl_FragColor = colorTex0 * vec4(colorTex1.aaa, 1.0); +} diff --git a/assets/rgbxmul.frag b/assets/rgbxmul.frag new file mode 100644 index 000000000..39b28b186 --- /dev/null +++ b/assets/rgbxmul.frag @@ -0,0 +1,17 @@ +#version 120 +#ifdef GL_ES + precision mediump float; +#endif + +varying vec4 v_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; // world texture, has alpha value that is meaningful + +uniform sampler2D tex1; // lightmap texture + +void main() { + vec4 colorTex0 = texture2D(u_texture, v_texCoords); // world texture + vec4 colorTex1 = texture2D(tex1, v_texCoords); // lightmap (RGBA) + + gl_FragColor = colorTex0 * vec4(colorTex1.rgb, 1.0); +} diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 974061645..536a6f2c1 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -192,11 +192,16 @@ object Terrarum : Screen { lateinit var shaderRGBOnly: ShaderProgram lateinit var shaderAtoGrey: ShaderProgram lateinit var shader18Bit: ShaderProgram + lateinit var shaderMulRGBX: ShaderProgram + lateinit var shaderMulAAAX: ShaderProgram lateinit var textureWhiteSquare: Texture + lateinit var testTexture: Texture + + /** Actually just a mesh of four vertices, two triangles -- not a literal glQuad */ lateinit var fullscreenQuad: Mesh; private set private var fullscreenQuadInit = false @@ -308,6 +313,9 @@ object Terrarum : Screen { assetManager = AssetManager() + testTexture = Texture(Gdx.files.internal("./assets/test_texture.tga")) + + println("[Terrarum] GL_VERSION = $GL_VERSION") println("[Terrarum] GL_MAX_TEXTURE_SIZE = $GL_MAX_TEXTURE_SIZE") println("[Terrarum] GL info:\n${Gdx.graphics.glVersion.debugVersionString}") // debug info @@ -368,6 +376,10 @@ object Terrarum : Screen { shaderRGBOnly = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/rgbonly.frag")) shaderAtoGrey = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/aonly.frag")) + shaderMulRGBX = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/rgbxmul.frag")) + shaderMulAAAX = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/aaaxmul.frag")) + + shader18Bit = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/18BitColour.frag")) diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt index ac4fa94e6..62922fee4 100644 --- a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt +++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt @@ -26,7 +26,7 @@ class EntryPoint : ModuleEntryPoint() { // load customised item loader // ///////////////////////////////// - println("[ItemCodex] recording item ID ") + println("[ModuleBaseGame.EntryPoint] recording item ID ") // blocks.csvs are loaded by ModMgr beforehand // block items (blocks and walls are the same thing basically) diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index 9aed0b7f8..19b3b9815 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -527,7 +527,10 @@ class Ingame(batch: SpriteBatch) : IngameInstance(batch) { else { var updateTries = 0 while (updateDeltaCounter >= updateRate) { - updateGame(delta) + + //updateGame(delta) + measureRuntime({ updateGame(delta) }, prependMsg = "Update Game: ") + updateDeltaCounter -= updateRate updateTries++ @@ -540,7 +543,15 @@ class Ingame(batch: SpriteBatch) : IngameInstance(batch) { /** RENDER CODE GOES HERE */ - renderGame(batch) + //renderGame(batch) + measureRuntime({ renderGame(batch) }, prependMsg = "Render Game: ") + } + + private fun measureRuntime(function: (() -> Unit), out: PrintStream = System.err, prependMsg: String = "", appendMsg: String = "") { + val startTime = System.nanoTime() + function.invoke() + val endTime = System.nanoTime() + println("$prependMsg${endTime - startTime} ns$appendMsg") } protected fun updateGame(delta: Float) { diff --git a/work_files/Terrarum_update_and_render_performance_test.xlsx b/work_files/Terrarum_update_and_render_performance_test.xlsx new file mode 100644 index 000000000..58f286004 Binary files /dev/null and b/work_files/Terrarum_update_and_render_performance_test.xlsx differ