From 9575429296d2941599107a8a2297cf8664193266 Mon Sep 17 00:00:00 2001 From: Morippi Date: Wed, 24 Aug 2022 13:35:51 +0200 Subject: [PATCH] Fixed transparency and added some boolean to disable it --- .../a7/datatype/column/render/ColumnBox.java | 23 +++++++++++++++---- .../lod/core/objects/opengl/LodBox.java | 2 +- src/main/resources/shaders/flat_shaded.frag | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/seibel/lod/core/a7/datatype/column/render/ColumnBox.java b/src/main/java/com/seibel/lod/core/a7/datatype/column/render/ColumnBox.java index fb5e32c5e..3d24228d4 100644 --- a/src/main/java/com/seibel/lod/core/a7/datatype/column/render/ColumnBox.java +++ b/src/main/java/com/seibel/lod/core/a7/datatype/column/render/ColumnBox.java @@ -41,9 +41,23 @@ public class ColumnBox byte skyLightBot = DataPointUtil.doesItExist(botData) ? DataPointUtil.getLightSky(botData) : 0; boolean isTransparent = ColorUtil.getAlpha(color)<255; - boolean isTopTransparent = DataPointUtil.getAlpha(topData)<255; - boolean isBotTransparent = DataPointUtil.getAlpha(botData)<255; + boolean transparencyEnabled = true; + boolean fakeOceanFloor = true; + boolean isTopTransparent = DataPointUtil.getAlpha(topData)<255 && transparencyEnabled; + boolean isBotTransparent = DataPointUtil.getAlpha(botData)<255 && transparencyEnabled; + + if(fakeOceanFloor && transparencyEnabled) + { + if(!isTransparent && isTopTransparent) + { + ySize += DataPointUtil.getHeight(botData) - (y + ySize) - 1; + } + else if(isTransparent && !isBotTransparent) + { + y += ySize - 1; + } + } // Up direction case boolean skipTop = DataPointUtil.doesItExist(topData) && ( @@ -168,14 +182,13 @@ public class ColumnBox short previousDepth = -1; byte nextSkyLight = upSkyLight; boolean isTransparent = ColorUtil.getAlpha(color) < 255; - // TODO transparency ocean floor fix - // boolean isOpaque = ((colorMap[0] >> 24) & 0xFF) == 255; for (i = 0; i < dataPoint.size() && DataPointUtil.doesItExist(adjData.get(i)) && !DataPointUtil.isVoid(adjData.get(i)); i++) { long adjPoint = adjData.get(i); boolean isAdjTransparent = DataPointUtil.getAlpha(adjPoint) < 255; - // TODO transparency ocean floor fix + + /**TODO disable this when disabling transparency */ if (!isTransparent && isAdjTransparent) continue; diff --git a/src/main/java/com/seibel/lod/core/objects/opengl/LodBox.java b/src/main/java/com/seibel/lod/core/objects/opengl/LodBox.java index c2e8f3717..da0c397d3 100644 --- a/src/main/java/com/seibel/lod/core/objects/opengl/LodBox.java +++ b/src/main/java/com/seibel/lod/core/objects/opengl/LodBox.java @@ -40,7 +40,7 @@ public class LodBox short maxZ = (short) (z + zSize); byte skyLightTop = skyLight; byte skyLightBot = DataPointUtil.doesItExist(botData) ? DataPointUtil.getLightSky(botData) : 0; - + // Up direction case boolean skipTop = DataPointUtil.doesItExist(topData) && DataPointUtil.getDepth(topData) == maxY;// && // DataPointUtil.getAlpha(singleAdjDataPoint) diff --git a/src/main/resources/shaders/flat_shaded.frag b/src/main/resources/shaders/flat_shaded.frag index e371abe19..c74b2324a 100644 --- a/src/main/resources/shaders/flat_shaded.frag +++ b/src/main/resources/shaders/flat_shaded.frag @@ -70,7 +70,7 @@ void main() } //fragColor = vec4(0.7,0.6,0.5,1.0); - fragColor = vec4(returnColor.rgb,1.0); + fragColor = returnColor; } float linearFog(float x, float fogStart, float fogLength, float fogMin, float fogRange) {