From 12b9ec3c06569fc1347d20489cac63fd744e332f Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 23 Feb 2020 03:35:50 +0900 Subject: [PATCH] another attempt --- src/net/torvald/gdx/graphics/UnsafeCvecArray.kt | 2 ++ .../terrarum/worlddrawer/LightmapRendererNew.kt | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/net/torvald/gdx/graphics/UnsafeCvecArray.kt b/src/net/torvald/gdx/graphics/UnsafeCvecArray.kt index fa11de090..bea65cffb 100644 --- a/src/net/torvald/gdx/graphics/UnsafeCvecArray.kt +++ b/src/net/torvald/gdx/graphics/UnsafeCvecArray.kt @@ -29,6 +29,8 @@ internal class UnsafeCvecArray(val width: Int, val height: Int) { fun setB(x: Int, y: Int, value: Float) { array.setFloat(toAddr(x, y) + 8, value) } fun setA(x: Int, y: Int, value: Float) { array.setFloat(toAddr(x, y) + 12, value) } + fun addA(x: Int, y: Int, value: Float) { array.setFloat(toAddr(x, y) + 12, getA(x, y) + value) } + /** * @param channel 0 for R, 1 for G, 2 for B, 3 for A */ diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt index 5c60773a9..4729c195c 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt @@ -256,12 +256,11 @@ object LightmapRenderer { lightsourceMap.add(LandUtil.getBlockAddr(world, x, y) to lightlevel) } - val lx = x.convX(); val ly = y.convY() - - lightmap.setR(lx, ly, lightlevel.r) - lightmap.setG(lx, ly, lightlevel.g) - lightmap.setB(lx, ly, lightlevel.b) - lightmap.setA(lx, ly, lightlevel.a) + //val lx = x.convX(); val ly = y.convY() + //lightmap.setR(lx, ly, lightlevel.r) + //lightmap.setG(lx, ly, lightlevel.g) + //lightmap.setB(lx, ly, lightlevel.b) + //lightmap.setA(lx, ly, lightlevel.a) } } @@ -321,6 +320,8 @@ object LightmapRenderer { // * Spread-every-cell idea might work as skippable cells are predictable, and they're related // to the pos of lightsources // * No-op masks cause some ambient ray to disappear when they're on the screen edge + // * Naive optimisation (mark-and-iterate) attempt was a disaster + // per-channel operation for bit more aggressive optimisation