diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index a48955622..0e0320fa9 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -444,13 +444,6 @@ public class Config + "") .build(); - public static ConfigEntry enableUnexploredFogRendering = new ConfigEntry.Builder() - .set(true) - .comment("" - + "If true unexplored/ungenerated LODs will be rendered as large dark gray boxes. \n" - + "") - .build(); - public static ConfigEntry enableInstancedRendering = new ConfigEntry.Builder() .set(true) .comment("" diff --git a/core/src/main/java/com/seibel/distanthorizons/core/enums/EUnexploredTerrainType.java b/core/src/main/java/com/seibel/distanthorizons/core/enums/EUnexploredTerrainType.java deleted file mode 100644 index bc2c30517..000000000 --- a/core/src/main/java/com/seibel/distanthorizons/core/enums/EUnexploredTerrainType.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of the Distant Horizons mod - * licensed under the GNU LGPL v3 License. - * - * Copyright (C) 2020 James Seibel - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.seibel.distanthorizons.core.enums; - -/** - * OCEAN,
- * FOG_WALL,
- */ -public enum EUnexploredTerrainType -{ - OCEAN, - FOG_WALL -} diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java index 5cbe6ca1a..7811351ad 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java @@ -26,8 +26,6 @@ import com.seibel.distanthorizons.api.objects.data.DhApiChunk; import com.seibel.distanthorizons.api.objects.data.IDhApiFullDataSource; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.enums.EUnexploredTerrainType; -import com.seibel.distanthorizons.core.file.AbstractDataSourceHandler; import com.seibel.distanthorizons.core.generation.tasks.IWorldGenTaskTracker; import com.seibel.distanthorizons.core.generation.tasks.InProgressWorldGenTaskGroup; import com.seibel.distanthorizons.core.generation.tasks.WorldGenResult; @@ -659,21 +657,10 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb @Override public void debugRender(DebugRenderer renderer) { - // determine the height the wireframe should render at - final int maxY; - if (Config.Client.Advanced.Graphics.GenericRendering.enableUnexploredFogRendering.get() - && this.level.getUnexploredTerrainType() == EUnexploredTerrainType.FOG_WALL) - { - // if unexplored fog is enabled, make sure the wireframe can be seen over it - maxY = this.level.getMaxY(); - } - else - { - // if unexplored fog is disabled or is an ocean, show the wireframe a bit lower - // since most worlds don't render all the way up to the max height - int levelHeightRange = (this.level.getMaxY() - this.level.getMinY()); - maxY = this.level.getMaxY() - (levelHeightRange / 2); - } + // show the wireframe a bit lower than world max height, + // since most worlds don't render all the way up to the max height + int levelHeightRange = (this.level.getMaxY() - this.level.getMinY()); + int maxY = this.level.getMaxY() - (levelHeightRange / 2); // blue - queued diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java index bd13ec67c..9b92da70a 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java @@ -28,7 +28,6 @@ import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox; import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; -import com.seibel.distanthorizons.core.enums.EUnexploredTerrainType; import com.seibel.distanthorizons.core.file.fullDatafile.DelayedFullDataSourceSaveCache; import com.seibel.distanthorizons.core.generation.DhLightingEngine; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -88,7 +87,6 @@ public abstract class AbstractDhLevel implements IDhLevel protected CloudRenderHandler cloudRenderHandler; private IDhApiRenderableBoxGroup unexploredFogRenderableBoxGroup; - private EUnexploredTerrainType unexploredTerrainType = null; @@ -378,133 +376,6 @@ public abstract class AbstractDhLevel implements IDhLevel - //====================// - // unexplored terrain // - //====================// - - // TODO potentially merge how this and getGenericRenderer() are handled - // synchronized to prevent issues with two threads getting the same un-initalized group at the same time - public synchronized IDhApiRenderableBoxGroup getUnexploredTerrainRenderableBoxGroup() - { - // lazy setup to prevent issues on server levels and - // prevent order issues with the genericRenderer - if (this.unexploredFogRenderableBoxGroup == null) - { - // ocean looks better without SSAO - boolean enableSsao = (this.getUnexploredTerrainType() == EUnexploredTerrainType.FOG_WALL); - - this.unexploredFogRenderableBoxGroup = GenericRenderObjectFactory.INSTANCE.createAbsolutePositionedGroup(ModInfo.NAME+":UnexploredFog", new ArrayList<>(512)); - this.unexploredFogRenderableBoxGroup.setBlockLight(LodUtil.MIN_MC_LIGHT); - this.unexploredFogRenderableBoxGroup.setSkyLight(LodUtil.MAX_MC_LIGHT); - this.unexploredFogRenderableBoxGroup.setSsaoEnabled(enableSsao); - this.unexploredFogRenderableBoxGroup.setShading(DhApiRenderableBoxGroupShading.getDefaultShaded()); - this.unexploredFogRenderableBoxGroup.setPreRenderFunc((DhApiRenderParam param) -> - { - boolean renderingEnabled = Config.Client.Advanced.Graphics.GenericRendering.enableUnexploredFogRendering.get(); - this.unexploredFogRenderableBoxGroup.setActive(renderingEnabled); - }); - - GenericObjectRenderer genericRenderer = this.getGenericRenderer(); - if (genericRenderer != null) - { - genericRenderer.add(this.unexploredFogRenderableBoxGroup); - } - } - - return this.unexploredFogRenderableBoxGroup; - } - - @Override - public EUnexploredTerrainType getUnexploredTerrainType() - { - // use cached value to prevent repeat string/levelWrapper operations - if (this.unexploredTerrainType != null) - { - return this.unexploredTerrainType; - } - - // determine if we should use an infinite ocean or a fog wall - boolean hasCeiling = this.getLevelWrapper().hasCeiling(); - String dimensionName = this.getLevelWrapper().getDimensionName().toLowerCase(); - boolean dimensionHasOcean = - !hasCeiling - && !dimensionName.contains("the_end") - && !dimensionName.contains("nether"); - - this.unexploredTerrainType = dimensionHasOcean ? EUnexploredTerrainType.OCEAN : EUnexploredTerrainType.FOG_WALL; - return this.unexploredTerrainType; - } - - /** - * @param levelWrapper is passed in due to how levelWrapper caching is poorly handled in most - * {@link IDhLevel}'s. If that's ever fixed we can just use the local {@link IClientLevelWrapper} - * getter instead. - */ - @Override - public DhApiRenderableBox createUnexploredTerrainRenderableBox(long pos, IClientLevelWrapper levelWrapper) - { - EUnexploredTerrainType terrainType = this.getUnexploredTerrainType(); - if (terrainType == EUnexploredTerrainType.OCEAN) - { - return createUnexploredOceanRenderableBox(pos, levelWrapper); - } - else - { - return createUnexploredFogWallRenderableBox(pos, levelWrapper); - } - } - private static DhApiRenderableBox createUnexploredOceanRenderableBox(long pos, IClientLevelWrapper levelWrapper) - { - // width - float fogWidthInBlocks = (float) DhSectionPos.getBlockWidth(pos); - - int seaLevel = levelWrapper.getSeaLevel(); - - Color waterColor = ColorUtil.toColorObjRGB(levelWrapper.getWaterBlockColor()); - - - return new DhApiRenderableBox( - // min pos - new DhApiVec3d(DhSectionPos.getMinCornerBlockX(pos), - levelWrapper.getMinHeight(), - DhSectionPos.getMinCornerBlockZ(pos)), - // max pos - new DhApiVec3d(DhSectionPos.getMinCornerBlockX(pos) + fogWidthInBlocks, - seaLevel, - DhSectionPos.getMinCornerBlockZ(pos) + fogWidthInBlocks), - waterColor, EDhApiBlockMaterial.UNKNOWN); - - } - private static DhApiRenderableBox createUnexploredFogWallRenderableBox(long pos, IClientLevelWrapper levelWrapper) - { - // width - float fogWidthInBlocks = (float) DhSectionPos.getBlockWidth(pos); - - // pseudo random height (should be consistent for a given position) - int fogHeightRange = (int) ((levelWrapper.getMaxHeight() - levelWrapper.getMinHeight()) * 0.25); - int halfFogHeightRange = fogHeightRange / 2; - float randomHeightModifier = (float) (DhSectionPos.hashCode(pos) % halfFogHeightRange) - fogHeightRange; - - // pseudo random color (should be consistent for a given position) - int randomColorModifier = (DhSectionPos.hashCode(pos) % 30) - 15; - int randomGrayColorValue = 180 + randomColorModifier; - randomGrayColorValue = MathUtil.clamp(1, randomGrayColorValue, 256); // clamp to prevent accidental out-of-range colors - - - return new DhApiRenderableBox( - // min pos - new DhApiVec3d(DhSectionPos.getMinCornerBlockX(pos), - levelWrapper.getMinHeight(), - DhSectionPos.getMinCornerBlockZ(pos)), - // max pos - new DhApiVec3d(DhSectionPos.getMinCornerBlockX(pos) + fogWidthInBlocks, - levelWrapper.getMaxHeight() + randomHeightModifier, - DhSectionPos.getMinCornerBlockZ(pos) + fogWidthInBlocks), - new Color(randomGrayColorValue, randomGrayColorValue, randomGrayColorValue), EDhApiBlockMaterial.UNKNOWN); - } - - - //================// // base overrides // //================// diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/IDhLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/IDhLevel.java index ed3e41524..16346b09a 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/IDhLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/IDhLevel.java @@ -22,7 +22,6 @@ package com.seibel.distanthorizons.core.level; import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup; import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; -import com.seibel.distanthorizons.core.enums.EUnexploredTerrainType; import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2; import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider; import com.seibel.distanthorizons.core.file.structure.ISaveStructure; @@ -69,15 +68,6 @@ public interface IDhLevel extends AutoCloseable, GeneratedFullDataSourceProvider @Nullable BeaconBeamRepo getBeaconBeamRepo(); - /** @return null on server-only levels */ - @Nullable - IDhApiRenderableBoxGroup getUnexploredTerrainRenderableBoxGroup(); - - /** should only be used for client levels */ - DhApiRenderableBox createUnexploredTerrainRenderableBox(long pos, IClientLevelWrapper levelWrapper); - - EUnexploredTerrainType getUnexploredTerrainType(); - FullDataSourceProviderV2 getFullDataProvider(); ISaveStructure getSaveStructure(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java index eaa321afc..7f574dbf2 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java @@ -84,8 +84,6 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable private final Cache cachedRenderSourceByPos; private final AtomicInteger uploadTaskCountRef; - private final DhApiRenderableBox unexploredFogRenderableBox; - /** * contains the list of beacons currently being rendered in this section * if this list is modified the {@link LodRenderSection#beaconRenderHandler} should be updated to match. @@ -161,9 +159,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable this.beaconRenderHandler = this.quadTree.beaconRenderHandler; this.beaconBeamRepo = this.level.getBeaconBeamRepo(); - - this.unexploredFogRenderableBox = this.level.createUnexploredTerrainRenderableBox(this.pos, this.levelWrapper); - + DebugRenderer.register(this, Config.Client.Advanced.Debugging.DebugWireframe.showRenderSectionStatus); } @@ -218,14 +214,6 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable this.getAndBuildRenderDataRunnable = () -> { - // reset the fog - this.stopRenderingUnexploredFog(); - if (!this.getFullDataSourceExists()) - { - // no render data is present, fill the area with "fog" - this.startRenderingUnexploredFog(); - } - this.getAndRefreshRenderingBeacons(); this.getAndUploadRenderDataToGpuAsync() .thenRun(() -> @@ -450,7 +438,6 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable public void onRenderingDisabled() { this.stopRenderingBeacons(); - this.stopRenderingUnexploredFog(); if (Config.Client.Advanced.Debugging.DebugWireframe.showRenderSectionStatus.get()) { @@ -645,34 +632,6 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable - //================// - // unexplored fog // - //================// - - private void startRenderingUnexploredFog() - { - IDhApiRenderableBoxGroup boxGroup = this.level.getUnexploredTerrainRenderableBoxGroup(); - if (boxGroup != null) // box group will be null for server levels, that shouldn't be a problem here, but just in case - { - boxGroup.add(this.unexploredFogRenderableBox); - boxGroup.triggerBoxChange(); - } - } - - private void stopRenderingUnexploredFog() - { - IDhApiRenderableBoxGroup boxGroup = this.level.getUnexploredTerrainRenderableBoxGroup(); - if (boxGroup != null) // box group will be null for server levels, that shouldn't be a problem here, but just in case - { - if (boxGroup.remove(this.unexploredFogRenderableBox)) - { - boxGroup.triggerBoxChange(); - } - } - } - - - //==============// // base methods // //==============// @@ -723,7 +682,6 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable this.stopRenderingBeacons(); - this.stopRenderingUnexploredFog(); if (this.renderBuffer != null) {