clean up config menu, remove fake transparency

This commit is contained in:
James Seibel
2026-05-19 19:18:04 -05:00
parent b14701ef6b
commit c81dc83bb1
8 changed files with 1086 additions and 1160 deletions
@@ -21,25 +21,13 @@ package com.seibel.distanthorizons.api.enums.rendering;
/**
* DISABLED, <br>
* FAKE, <br>
* COMPLETE, <br>
*
* @since API 2.0.0
* @version 2024-4-6
* @version 2026-05-19
*/
public enum EDhApiTransparency
{
DISABLED(false, false),
FAKE(true, true),
COMPLETE(true, false);
public final boolean transparencyEnabled;
public final boolean fakeTransparencyEnabled;
EDhApiTransparency(boolean transparencyEnabled, boolean fakeTransparencyEnabled)
{
this.transparencyEnabled = transparencyEnabled;
this.fakeTransparencyEnabled = fakeTransparencyEnabled;
}
DISABLED,
COMPLETE;
}
@@ -91,11 +91,11 @@ public class DhApiGraphicsConfig implements IDhApiGraphicsConfig
@Override
public IDhApiConfigValue<EDhApiBlocksToAvoid> blocksToAvoid()
{ return new DhApiConfigValue<EDhApiBlocksToAvoid, EDhApiBlocksToAvoid>(Config.Client.Advanced.Graphics.Quality.blocksToIgnore); }
{ return new DhApiConfigValue<EDhApiBlocksToAvoid, EDhApiBlocksToAvoid>(Config.Client.Advanced.Graphics.Culling.blocksToIgnore); }
@Override
public IDhApiConfigValue<Boolean> tintWithAvoidedBlocks()
{ return new DhApiConfigValue<Boolean, Boolean>(Config.Client.Advanced.Graphics.Quality.tintWithAvoidedBlocks); }
{ return new DhApiConfigValue<Boolean, Boolean>(Config.Client.Advanced.Graphics.Culling.tintWithAvoidedBlocks); }
@Override
public IDhApiConfigValue<Integer> getBiomeBlending()
@@ -44,7 +44,6 @@ import java.util.List;
* This handles any configuration the user has access to.
*
* @author coolGi
*
* @see ConfigHandler
*/
@SuppressWarnings("ConcatenationWithEmptyString")
@@ -60,9 +59,6 @@ public class Config
{
public static ConfigEntry<Boolean> quickEnableRendering = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
+ "If true, Distant Horizons will render LODs beyond the vanilla render distance."
+ "")
.setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
.build();
@@ -70,12 +66,6 @@ public class Config
public static ConfigEntry<EDhApiQualityPreset> qualityPresetSetting = new ConfigEntry.Builder<EDhApiQualityPreset>()
.set(EDhApiQualityPreset.MEDIUM) // the default value is set via the listener when accessed
.comment(""
+ "Changing this setting will modify a number of different settings that will change the \n"
+ "visual fidelity of the rendered LODs.\n"
+ "\n"
+ "Higher settings will improve the graphical quality while increasing GPU and memory use.\n"
+ "")
.setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
.addListener(RenderQualityPresetConfigEventHandler.INSTANCE)
.build();
@@ -83,16 +73,6 @@ public class Config
public static ConfigEntry<EDhApiThreadPreset> threadPresetSetting = new ConfigEntry.Builder<EDhApiThreadPreset>()
.setChatCommandName("common.threadPreset")
.set(EDhApiThreadPreset.BALANCED) // the default value is set via the listener when accessed
.comment(""
+ "Changing this setting will modify a number of different settings that will change \n"
+ "the load that Distant Horizons is allowed to put on your CPU. \n"
+ "\n"
+ "Higher options will improve LOD generation and loading speed, \n"
+ "but will increase CPU load and may introduce stuttering.\n"
+ "\n"
+ "Note: This is a CPU relative setting. \n"
+ "It should put an equal amount of strain on a 2 core CPU as a 64 core CPU.\n"
+ "")
.setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
.addListener(ThreadPresetConfigEventHandler.INSTANCE)
.build();
@@ -194,14 +174,21 @@ public class Config
.setMinDefaultMax(32, 256, 4096)
.comment("" +
"The radius of the mod's render distance. (measured in chunks)\n" +
"\n" +
"Note: this is a best effort number. \n" +
"The actual render distance may be above or below this number \n" +
"depending on your other graphic settings. \n" +
"")
.build();
public static ConfigUISpacer qualityDropoffSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<EDhApiHorizontalQuality> horizontalQuality = new ConfigEntry.Builder<EDhApiHorizontalQuality>()
.set(EDhApiHorizontalQuality.MEDIUM)
.comment(""
+ "This indicates how quickly LODs decrease in quality the further away they are. \n"
+ "Higher settings will render higher quality fake chunks farther away, \n"
+ "This indicates how far apart drops in LOD quality are. \n"
+ "\n"
+ "Higher settings will increase the distance between drops \n"
+ "but will increase memory and GPU usage.")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
@@ -209,7 +196,7 @@ public class Config
public static ConfigEntry<EDhApiMaxHorizontalResolution> maxHorizontalResolution = new ConfigEntry.Builder<EDhApiMaxHorizontalResolution>()
.set(EDhApiMaxHorizontalResolution.BLOCK)
.comment(""
+ "What is the maximum detail LODs should be drawn at? \n"
+ "What is the maximum detail LODs can render at? \n"
+ "Higher settings will increase memory and GPU usage. \n"
+ "\n"
+ EDhApiMaxHorizontalResolution.CHUNK + ": render 1 LOD for each Chunk. \n"
@@ -218,8 +205,8 @@ public class Config
+ EDhApiMaxHorizontalResolution.TWO_BLOCKS + ": render 64 LODs for each Chunk. \n"
+ EDhApiMaxHorizontalResolution.BLOCK + ": render 256 LODs for each Chunk (width of one block). \n"
+ "\n"
+ "Lowest Quality: " + EDhApiMaxHorizontalResolution.CHUNK + "\n"
+ "Highest Quality: " + EDhApiMaxHorizontalResolution.BLOCK)
+ "Fastest: " + EDhApiMaxHorizontalResolution.CHUNK + "\n"
+ "Fanciest: " + EDhApiMaxHorizontalResolution.BLOCK)
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
@@ -232,44 +219,23 @@ public class Config
+ "will increase memory and GPU usage. \n"
+ "\n"
+ "Lowest Quality: " + EDhApiVerticalQuality.HEIGHT_MAP + "\n"
+ "Highest Quality: " + EDhApiVerticalQuality.EXTREME)
+ "Highest Quality: " + EDhApiVerticalQuality.PIXEL_ART)
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigUISpacer qualitySpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<EDhApiTransparency> transparency = new ConfigEntry.Builder<EDhApiTransparency>()
.set(EDhApiTransparency.COMPLETE)
.comment(""
+ "How should LOD transparency be handled. \n"
+ "\n"
+ EDhApiTransparency.COMPLETE + ": LODs will render transparent. \n"
+ EDhApiTransparency.FAKE + ": LODs will be opaque, but shaded to match the blocks underneath. \n"
+ EDhApiTransparency.DISABLED + ": LODs will be opaque. \n"
+ "")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<EDhApiBlocksToAvoid> blocksToIgnore = new ConfigEntry.Builder<EDhApiBlocksToAvoid>()
.set(EDhApiBlocksToAvoid.NON_COLLIDING)
.comment(""
+ "What blocks shouldn't be rendered as LODs? \n"
+ "\n"
+ EDhApiBlocksToAvoid.NONE + ": Represent all blocks in the LODs \n"
+ EDhApiBlocksToAvoid.NON_COLLIDING + ": Only represent solid blocks in the LODs (tall grass, torches, etc. won't count for a LOD's height) \n"
+ "")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<Boolean> tintWithAvoidedBlocks = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
+ "Should the blocks underneath avoided blocks gain the color of the avoided block? \n"
+ "\n"
+ "True: a red flower will tint the grass below it red. \n"
+ "False: skipped blocks will not change color of surface below them. "
+ "")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<EDhApiLodShading> lodShading = new ConfigEntry.Builder<EDhApiLodShading>()
.set(EDhApiLodShading.AUTO)
.comment(""
@@ -295,6 +261,8 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigUISpacer fadeSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> ditherDhFade = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
@@ -323,6 +291,20 @@ public class Config
+ "")
.build();
public static ConfigEntry<Integer> lodBiomeBlending = new ConfigEntry.Builder<Integer>()
.setMinDefaultMax(0, 3, 3) // going higher than 3 causes banding issues for blending across LOD borders and an exponential increase in load times
.comment(""
+ "This is the same as vanilla Biome Blending settings for Lod area. \n"
+ " Note: anything above '0' will slow down LOD loading time. \n"
+ "\n"
+ " '0' equals to Vanilla Biome Blending of '1x1' or 'OFF', \n"
+ " '1' equals to Vanilla Biome Blending of '3x3', \n"
+ " '2' equals to Vanilla Biome Blending of '5x5'...")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigUISpacer multiplierSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Float> brightnessMultiplier = new ConfigEntry.Builder<Float>()
.set(1.0f)
.comment(""
@@ -345,17 +327,6 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<Integer> lodBiomeBlending = new ConfigEntry.Builder<Integer>()
.setMinDefaultMax(0,3,3) // going higher than 3 causes banding issues for blending across LOD borders and an exponential increase in load times
.comment(""
+ "This is the same as vanilla Biome Blending settings for Lod area. \n"
+ " Note that anything other than '0' will greatly effect Lod building time. \n"
+ "\n"
+ " '0' equals to Vanilla Biome Blending of '1x1' or 'OFF', \n"
+ " '1' equals to Vanilla Biome Blending of '3x3', \n"
+ " '2' equals to Vanilla Biome Blending of '5x5'...")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
}
public static class GenericRendering
@@ -365,8 +336,8 @@ public class Config
public static ConfigEntry<Boolean> enableGenericRendering = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
+ "If true non terrain objects will be rendered in DH's terrain. \n"
+ "This includes beacon beams and clouds. \n"
+ "If true non terrain objects will be rendered by DH. \n"
+ "i.e. beacon beams and clouds. \n"
+ "")
.build();
@@ -380,9 +351,9 @@ public class Config
public static ConfigEntry<Integer> beaconRenderHeight = new ConfigEntry.Builder<Integer>()
.setMinDefaultMax(1, 6000, 6_000_000)
.comment(""
+ "Sets the maximum height at which beacons will render."
+ "This will only affect new beacons coming into LOD render distance."
+ "Beacons currently visible in LOD chunks will not be affected."
+ "Sets the maximum height beacons will render up to. \n"
+ "\n"
+ "Requires a world re-load to take affect. \n"
+ "")
.build();
@@ -410,9 +381,10 @@ public class Config
+ "\n"
+ "Example: \"minecraft:overworld,minecraft:the_end\"\n"
+ "\n"
+ "Changes will only be seen when the world is re-loaded.\n"
+ "Changes require a world re-load.\n"
+ "")
.build();
}
public static class Fog
@@ -672,6 +644,8 @@ public class Config
+ "")
.build();
public static ConfigUISpacer speedSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> enableCaveCulling = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
@@ -693,6 +667,8 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigUISpacer caveCullingSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> disableBeaconDistanceCulling = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
@@ -776,6 +752,29 @@ public class Config
+ "")
.build();
public static ConfigUISpacer blockSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<EDhApiBlocksToAvoid> blocksToIgnore = new ConfigEntry.Builder<EDhApiBlocksToAvoid>()
.set(EDhApiBlocksToAvoid.NON_COLLIDING)
.comment(""
+ "Defines what blocks should be rendered as LODs. \n"
+ "\n"
+ EDhApiBlocksToAvoid.NONE + ": Include all blocks in the LODs \n"
+ EDhApiBlocksToAvoid.NON_COLLIDING + ": Only render solid blocks in the LODs (tall grass, torches, etc. will be ignored) \n"
+ "")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<Boolean> tintWithAvoidedBlocks = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
+ "Should the blocks underneath avoided blocks gain the color of the avoided block? \n"
+ "\n"
+ "True: a red flower will tint the grass below it red. \n"
+ "False: skipped blocks will not change color of surface below them. "
+ "")
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
}
public static class Experimental
@@ -857,6 +856,7 @@ public class Config
+ "and will update to new nightly builds if the current jar is a nightly jar (IE the version number ends in '-dev')."
+ "")
.build();
}
public static class Multiplayer
@@ -904,6 +904,8 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigUISpacer debugRenderingSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> enableWhiteWorld = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment(""
@@ -928,6 +930,16 @@ public class Config
+ "")
.build();
public static ConfigEntry<Boolean> showOverlappingQuadErrors = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment(""
+ "If true overlapping quads will be rendered as bright red for easy identification. \n"
+ "If false the quads will be rendered normally. \n"
+ "")
.build();
public static ConfigUISpacer miscSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> enableDebugKeybindings = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment(""
@@ -938,14 +950,6 @@ public class Config
+ "")
.build();
public static ConfigEntry<Boolean> showOverlappingQuadErrors = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment(""
+ "If true overlapping quads will be rendered as bright red for easy identification. \n"
+ "If false the quads will be rendered normally. \n"
+ "")
.build();
public static ConfigEntry<Boolean> logBufferGarbageCollection = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment(""
@@ -954,6 +958,8 @@ public class Config
+ "")
.build();
public static ConfigUISpacer unsafeSpacer = new ConfigUISpacer.Builder().build();
// Note: This will reset on game restart, and should have a warning on the tooltip
public static ConfigEntry<Boolean> allowUnsafeValues = new ConfigEntry.Builder<Boolean>()
.set(false)
@@ -961,6 +967,8 @@ public class Config
.addListener(UnsafeValuesConfigListener.INSTANCE)
.build();
public static ConfigUISpacer categorySpacer = new ConfigUISpacer.Builder().build();
public static ConfigCategory debugWireframe = new ConfigCategory.Builder().set(DebugWireframe.class).build();
public static ConfigCategory openGl = new ConfigCategory.Builder().set(OpenGl.class).build();
public static ConfigCategory columnBuilderDebugging = new ConfigCategory.Builder().set(ColumnBuilderDebugging.class).build();
@@ -985,6 +993,8 @@ public class Config
+ "")
.build();
public static ConfigUISpacer wireframeOptionSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Boolean> showWorldGenQueue = new ConfigEntry.Builder<Boolean>()
.set(false)
.comment("Render queued world gen tasks?")
@@ -1078,6 +1088,8 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.INSTANT_INSTANCE)
.build();
public static ConfigUISpacer subLodSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<Integer> columnBuilderDebugXRow = new ConfigEntry.Builder<Integer>()
.set(-1)
.setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
@@ -1263,10 +1275,13 @@ public class Config
public static ConfigUiLinkedEntry linkableTest = new ConfigUiLinkedEntry(ExampleConfigScreen.linkableTest);
}
}
}
}
}
public static class Common
@@ -1327,6 +1342,8 @@ public class Config
+ "")
.build();
public static ConfigUISpacer genProgressSpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<EDhApiDistantGeneratorProgressDisplayLocation> showGenerationProgress = new ConfigEntry.Builder<EDhApiDistantGeneratorProgressDisplayLocation>()
.set(EDhApiDistantGeneratorProgressDisplayLocation.DISABLED)
.comment(""
@@ -1469,6 +1486,7 @@ public class Config
+ "\n"
+ "")
.build();
}
}
@@ -1594,6 +1612,8 @@ public class Config
+ "")
.build();
public static ConfigUISpacer warningSpacer = new ConfigUISpacer.Builder().build();
public static ConfigCategory warning = new ConfigCategory.Builder().set(Warning.class).build();
@@ -1677,6 +1697,7 @@ public class Config
.build();
}
}
}
@@ -1843,6 +1864,7 @@ public class Config
+ "For better performance when switching LOD detail levels, enabling [upsampleLowerDetailLodsToFillHoles] is recommended.\n"
+ "")
.build();
}
}
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiTransparency;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.render.ColumnRenderSource;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
@@ -67,8 +68,7 @@ public class ColumnBox
byte skyLightTop = skyLight;
byte skyLightBot = RenderDataPointUtil.doesDataPointExist(bottomData) ? RenderDataPointUtil.getLightSky(bottomData) : 0;
boolean transparencyEnabled = Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled;
boolean fakeOceanFloor = Config.Client.Advanced.Graphics.Quality.transparency.get().fakeTransparencyEnabled;
boolean transparencyEnabled = Config.Client.Advanced.Graphics.Quality.transparency.get() == EDhApiTransparency.COMPLETE;
boolean isTransparent = ColorUtil.getAlpha(color) < 255 && transparencyEnabled;
boolean overVoid = !RenderDataPointUtil.doesDataPointExist(bottomData);
@@ -93,24 +93,6 @@ public class ColumnBox
}
// fake ocean transparency
if (transparencyEnabled && fakeOceanFloor)
{
if (!isTransparent && isTopTransparent && RenderDataPointUtil.doesDataPointExist(topData))
{
skyLightTop = (byte) MathUtil.clamp(0, 15 - (RenderDataPointUtil.getYMax(topData) - minY), 15);
yHeight = (short) (RenderDataPointUtil.getYMax(topData) - minY - 1);
}
else if (isTransparent && !isBottomTransparent && RenderDataPointUtil.doesDataPointExist(bottomData))
{
minY = (short) (minY + yHeight - 1);
yHeight = 1;
}
maxY = (short) (minY + yHeight);
}
//==========================//
// add top and bottom faces //
@@ -279,7 +261,7 @@ public class ColumnBox
// determine face visibility/light //
//=================================//
boolean transparencyEnabled = Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled;
boolean transparencyEnabled = Config.Client.Advanced.Graphics.Quality.transparency.get() == EDhApiTransparency.COMPLETE;
boolean inputTransparent = ColorUtil.getAlpha(color) < 255 && transparencyEnabled;
short yMax = (short) (yMin + ySize);
@@ -193,8 +193,8 @@ public class FullDataToRenderDataTransformer
// config values //
//===============//
boolean ignoreNonCollidingBlocks = (Config.Client.Advanced.Graphics.Quality.blocksToIgnore.get() == EDhApiBlocksToAvoid.NON_COLLIDING);
boolean colorBelowWithAvoidedBlocks = Config.Client.Advanced.Graphics.Quality.tintWithAvoidedBlocks.get();
boolean ignoreNonCollidingBlocks = (Config.Client.Advanced.Graphics.Culling.blocksToIgnore.get() == EDhApiBlocksToAvoid.NON_COLLIDING);
boolean colorBelowWithAvoidedBlocks = Config.Client.Advanced.Graphics.Culling.tintWithAvoidedBlocks.get();
final ObjectOpenHashSet<IBlockStateWrapper> blockStatesToIgnore = WRAPPER_FACTORY.getRendererIgnoredBlocks(levelWrapper);
final ObjectOpenHashSet<IBlockStateWrapper> caveBlockStatesToIgnore = WRAPPER_FACTORY.getRendererIgnoredCaveBlocks(levelWrapper);
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.render.QuadTree;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiTransparency;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.dataObjects.render.ColumnRenderSource;
@@ -223,7 +224,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable
}
boolean enableTransparency = Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled;
boolean enableTransparency = Config.Client.Advanced.Graphics.Quality.transparency.get() == EDhApiTransparency.COMPLETE;
LodQuadBuilder lodQuadBuilder = new LodQuadBuilder(enableTransparency, this.clientLevel.getClientLevelWrapper());
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.render.renderer;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiTransparency;
import com.seibel.distanthorizons.api.methods.events.abstractEvents.*;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.LodBufferContainer;
@@ -253,7 +254,7 @@ public class LodRenderer
// combined pass transparent rendering
if (!deferTransparentRendering
&& Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled)
&& Config.Client.Advanced.Graphics.Quality.transparency.get() == EDhApiTransparency.COMPLETE)
{
profiler.popPush("LOD Transparent");
this.renderTerrain(this.terrainRenderer, renderBufferHandler, renderParams, /*opaquePass*/ false, profiler);
@@ -326,7 +327,7 @@ public class LodRenderer
// deferred rendering //
//====================//
if (Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled)
if (Config.Client.Advanced.Graphics.Quality.transparency.get() == EDhApiTransparency.COMPLETE)
{
profiler.popPush("LOD Transparent");
this.renderTerrain(this.terrainRenderer, renderBufferHandler, renderParams, /*opaquePass*/ false, profiler);
@@ -37,9 +37,9 @@
"distanthorizons.updater.title":
"Distant Horizons auto updater",
"distanthorizons.updater.text1":
"distanthorizons.updater.updateAvailable":
"§lNew update available!",
"distanthorizons.updater.text2":
"distanthorizons.updater.updateConfirmation":
"§fDo you want to update from %s§f to %s§f?",
"distanthorizons.updater.later":
"Not now",
@@ -67,7 +67,7 @@
"distanthorizons.config.client.quickEnableRendering":
"Enable Rendering",
"distanthorizons.config.client.quickEnableRendering.@tooltip":
"Determines if Distant Horizons Renders LODs.",
"If true, Distant Horizons will render LODs beyond the vanilla render distance.",
"distanthorizons.config.client.quickShowWorldGenProgress":
"Show LOD Gen/Import Progress",
@@ -81,7 +81,7 @@
"distanthorizons.config.client.threadPresetSetting":
"CPU Load",
"distanthorizons.config.client.threadPresetSetting.@tooltip":
"Modifies how many threads Distant Horizons' will use. \n\nIncreasing this setting will improve the Distant Generator speed and LOD loading speed, \nbut will also increase CPU/memory usage and may introduce stuttering. \n\nNote: This is a CPU relative setting. \nIt should put an equal amount of strain on a 2 core CPU as a 64 core CPU.",
"Modifies how many threads Distant Horizons' will use. \n\nIncreasing this setting will increase the Distant Generator's speed and LOD loading speed, \nbut will also increase CPU/memory usage and may introduce stuttering. \n\nNote: This is a CPU relative setting. \nIt should put an equal amount of strain on a 2 core CPU as a 64 core CPU.",
"distanthorizons.config.client.optionsButton":
"Show The Options Button",
@@ -114,15 +114,15 @@
"distanthorizons.config.client.advanced.graphics.quality.lodChunkRenderDistanceRadius":
"LOD Chunk Render Distance Radius",
"distanthorizons.config.client.advanced.graphics.quality.lodChunkRenderDistanceRadius.@tooltip":
"Distant Horizons' render distance, measured in chunks. \n\nNote: this is a best effort number. \nThe render distance may be above or below this number \ndepending on your other graphic settings.",
"Distant Horizons' render distance, measured in chunks. \n\nNote: this is a best effort number. \nThe actual render distance may be above or below this number \ndepending on your other graphic settings.",
"distanthorizons.config.client.advanced.graphics.quality.horizontalQuality":
"LOD Dropoff Distance",
"distanthorizons.config.client.advanced.graphics.quality.horizontalQuality.@tooltip":
"How far apart drops in quality are.\n\nHigher settings will increase the distance between drops\nbut will increase memory and GPU usage.",
"This indicates how far apart drops in LOD quality are.\n\nHigher settings will increase the distance between drops\nbut will increase memory and GPU usage.",
"distanthorizons.config.client.advanced.graphics.quality.maxHorizontalResolution":
"Max Horizontal Resolution",
"distanthorizons.config.client.advanced.graphics.quality.maxHorizontalResolution.@tooltip":
"The maximum detail LODs are rendered at.\n\n§6Fastest:§r Chunk\n§6Fanciest:§r Block",
"The maximum detail LODs can render at.\n\n§6Fastest:§r Chunk\n§6Fanciest:§r Block",
"distanthorizons.config.client.advanced.graphics.quality.verticalQuality":
"Vertical Quality",
"distanthorizons.config.client.advanced.graphics.quality.verticalQuality.@tooltip":
@@ -133,14 +133,6 @@
"How quickly LODs drop off in quality.\n\nLarger numbers will improve how distant terrain looks\nbut will increase memory and GPU usage.",
"distanthorizons.config.client.advanced.graphics.quality.transparency":
"Transparency",
"distanthorizons.config.client.advanced.graphics.quality.blocksToIgnore":
"Blocks To Ignore",
"distanthorizons.config.client.advanced.graphics.quality.blocksToIgnore.@tooltip":
"Defines the types of blocks to ignore when generating LODs.",
"distanthorizons.config.client.advanced.graphics.quality.tintWithAvoidedBlocks":
"Tint With Avoided Blocks",
"distanthorizons.config.client.advanced.graphics.quality.tintWithAvoidedBlocks.@tooltip":
"§4Note: makes snow, carpet, and trapdoors look really bad§r\nShould the blocks underneath avoided blocks gain the color of the avoided block?\n§6True:§r a red flower on grass will tint the grass below it red\n§6False:§r skipped blocks will not change color of surface below them",
"distanthorizons.config.client.advanced.graphics.quality.lodShading":
"LOD Shading",
"distanthorizons.config.client.advanced.graphics.quality.lodShading.@tooltip":
@@ -160,7 +152,7 @@
"distanthorizons.config.client.advanced.graphics.quality.dhFadeFarClipPlane":
"Fade Before Far Clip Plane",
"distanthorizons.config.client.advanced.graphics.quality.dhFadeFarClipPlane.@tooltip":
"Should DH fade out before reaching the far plane? \nThis is helpful to prevent DH clouds from cutting off in the distance.",
"Should DH fade out before reaching the far clip plane? \nThis is helpful to prevent DH clouds from cutting off in the distance.",
"distanthorizons.config.client.advanced.graphics.quality.brightnessMultiplier":
"Brightness Multiplier",
"distanthorizons.config.client.advanced.graphics.quality.brightnessMultiplier.@tooltip":
@@ -172,7 +164,7 @@
"distanthorizons.config.client.advanced.graphics.quality.lodBiomeBlending":
"Biome Blending",
"distanthorizons.config.client.advanced.graphics.quality.lodBiomeBlending.@tooltip":
"This is the same as vanilla Biome Blending settings for LOD area. \n\nNote that anything other than '0' will greatly effect Lod building time\nand increase triangle count. The cost on chunk generation speed is also \nquite large if set to too high.\n\n'0' equals to Vanilla Biome Blending of '1x1', \n'1' equals to Vanilla Biome Blending of '3x3', \n'2' equals to Vanilla Biome Blending of '5x5'... \n",
"This is the same as vanilla Biome Blending settings for LOD area. \n\nNote: anything above '0' will slow down LOD loading time.\n\n'0' equals to Vanilla Biome Blending of '1x1', \n'1' equals to Vanilla Biome Blending of '3x3', \n'2' equals to Vanilla Biome Blending of '5x5'... \n",
@@ -188,13 +180,13 @@
"distanthorizons.config.client.advanced.graphics.genericRendering.enableGenericRendering":
"Enable Generic Rendering",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableGenericRendering.@tooltip":
"If true non terrain objects will be rendered in DH's terrain. \nThis includes beacon beams and clouds.",
"If true non terrain objects will be rendered by DH. \ni.e. beacon beams and clouds.",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableBeaconRendering":
"Enable Beacon Rendering",
"distanthorizons.config.client.advanced.graphics.genericRendering.beaconRenderHeight":
"Beacon render height",
"distanthorizons.config.client.advanced.graphics.genericRendering.beaconRenderHeight.@tooltip":
"Sets the maximum height at which beacons will render. \nThis will only affect new beacons coming into LOD render distance. \nBeacons currently visible in LOD chunks will not be affected.",
"Sets the maximum height beacons will render up to. Requires a world re-load to take affect.",
"distanthorizons.config.client.advanced.graphics.genericRendering.expandDistantBeacons":
"Expand Distant Beacons",
"distanthorizons.config.client.advanced.graphics.genericRendering.expandDistantBeacons.@tooltip":
@@ -206,17 +198,9 @@
"distanthorizons.config.client.advanced.graphics.genericRendering.enableCloudRendering.@tooltip":
"If true LOD clouds will be rendered.",
"distanthorizons.config.client.advanced.graphics.genericRendering.dimensionEnabledCloudRenderingCsv":
"Enable Cloud Rendering",
"Cloud Enabled Dimension CSV List",
"distanthorizons.config.client.advanced.graphics.genericRendering.dimensionEnabledCloudRenderingCsv.@tooltip":
"A comma separated separated list of dimension resource locations where DH clouds will render. \n\nExample: \"minecraft:overworld,minecraft:the_end\" \n\nChanges will only be seen when the world is re-loaded.",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableUnexploredFogRendering":
"Enable Unexplored Fog Rendering",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableUnexploredFogRendering.@tooltip":
"If true unexplored/ungenerated LODs will be rendered as large dark gray boxes.",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableInstancedRendering":
"Enable Instanced Rendering",
"distanthorizons.config.client.advanced.graphics.genericRendering.enableInstancedRendering.@tooltip":
"Can be disabled to use much slower but more compatible direct rendering. \nDisabling this can be used to fix some crashes on Mac.",
"A comma separated separated list of dimension resource locations where DH clouds will render. \n\nExample: \"minecraft:overworld,minecraft:the_end\" \n\nChanges require a world re-load.",
@@ -376,6 +360,14 @@
"Water Surface Replacement",
"distanthorizons.config.client.advanced.graphics.culling.waterSurfaceBlockReplacementCsv.@tooltip":
"A comma separated list of block resource locations that will be removed \nwhen on top of water.",
"distanthorizons.config.client.advanced.graphics.culling.blocksToIgnore":
"Blocks To Ignore",
"distanthorizons.config.client.advanced.graphics.culling.blocksToIgnore.@tooltip":
"Defines what blocks should be rendered as LODs. \n\n§NONE:§r Include all blocks in the LODs\n§NON_COLLIDING:§r Only render solid blocks in the LODs (tall grass, torches, etc. will be ignored)",
"distanthorizons.config.client.advanced.graphics.culling.tintWithAvoidedBlocks":
"Tint With Avoided Blocks",
"distanthorizons.config.client.advanced.graphics.culling.tintWithAvoidedBlocks.@tooltip":
"§4Note: makes snow, carpet, and trapdoors look really bad§r\nShould the blocks underneath avoided blocks gain the color of the avoided block?\n§6True:§r a red flower on grass will tint the grass below it red\n§6False:§r skipped blocks will not change color of surface below them",
"distanthorizons.config.client.advanced.graphics.overrideVanillaGraphicsSettings":
"Override Vanilla Settings",
@@ -505,14 +497,6 @@
"OpenGL Error Handling Mode",
"distanthorizons.config.client.advanced.debugging.openGl.glErrorHandlingMode.@tooltip":
"Defines how OpenGL errors are handled. \n Requires rebooting Minecraft to apply. \nMay incorrectly catch OpenGL errors thrown by other mods.",
"distanthorizons.config.client.advanced.debugging.openGl.validateBufferIdsBeforeRendering":
"Validate Buffer IDs Before Rendering",
"distanthorizons.config.client.advanced.debugging.openGl.validateBufferIdsBeforeRendering.@tooltip":
"Massively reduces FPS. \nShould only be used if mysterious EXCEPTION_ACCESS_VIOLATION crashes are happening in DH's rendering code and you're attempting to troubleshoot it.",
"distanthorizons.config.client.advanced.debugging.openGl.glUploadMode":
"Uploade Mode",
"distanthorizons.config.client.advanced.debugging.openGl.glUploadMode.@tooltip":
"Only for debugging",
@@ -658,14 +642,6 @@
"Disable Unchanged Chunk Check",
"distanthorizons.config.common.lodBuilding.disableUnchangedChunkCheck.@tooltip":
"Disabling this check may fix issues where LODs aren't updated after\nblocks have been changed.\n",
"distanthorizons.config.common.lodBuilding.pullLightingForPregeneratedChunks":
"Pull Lighting For Pre-generated Chunks",
"distanthorizons.config.common.lodBuilding.pullLightingForPregeneratedChunks.@tooltip":
"If true LOD generation for pre-existing chunks will attempt to pull the lighting data \nsaved in Minecraft's Region files. \nIf false DH will pull in chunks without lighting and re-light them. \n\nSetting this to true will result in faster LOD generation \nfor already generated worlds, but is broken by most lighting mods. \n\nSet this to false if LODs are black.",
"distanthorizons.config.common.lodBuilding.assumePreExistingChunksAreFinished":
"Assume Pre-Existing Chunks Are Finished",
"distanthorizons.config.common.lodBuilding.assumePreExistingChunksAreFinished.@tooltip":
"Setting this to true may solve some issues when using DH with a pre-generated world.",
"distanthorizons.config.common.lodBuilding.dataCompression":
"Data Compression",
"distanthorizons.config.common.lodBuilding.dataCompression.@tooltip":
@@ -674,12 +650,6 @@
"Lossy World Compression",
"distanthorizons.config.common.lodBuilding.worldCompression.@tooltip":
"How should block data be compressed when creating LOD data? \nThis setting will only affect new or updated LOD data, \nany data already generated when this setting is changed will be \nunaffected until it is modified or re-loaded. \n\nMost Accurate: Merge Same Blocks \nHighest Compression: Visually Equal",
"distanthorizons.config.common.lodBuilding.recalculateChunkHeightmaps":
"Recalculate Chunk Heightmaps",
"distanthorizons.config.common.lodBuilding.recalculateChunkHeightmaps.@tooltip":
"True: Recalculate chunk height maps before chunks can be used by DH. This can fix problems with worlds created by external tools. \nFalse: Assume any height maps handled by Minecraft are correct. \n\nFastest: False\nMost Compatible: True",
"distanthorizons.config.common.lodBuilding.showMigrationChatWarning":
"Log Migration In Chat",
"distanthorizons.config.common.lodBuilding.experimental":
@@ -721,8 +691,6 @@
"distanthorizons.config.common.logging.logWorldGenEventToFile":
"World Gen Events - File",
"distanthorizons.config.common.logging.logWorldGenPerformanceToFile":
"World Gen Performance - File",
"distanthorizons.config.common.logging.logWorldGenChunkLoadEventToFile":
"World Gen Load Events - File",
"distanthorizons.config.common.logging.logRendererEventToFile":
@@ -754,10 +722,10 @@
"Show Slow World Gen Warnings",
"distanthorizons.config.common.logging.warning.showModCompatibilityWarningsOnStartup":
"Show Mod Compatibility Warnings",
"distanthorizons.config.common.logging.warning.showGarbageCollectorWarning":
"Show Garbage Collector Warning",
"distanthorizons.config.common.logging.warning.logGarbageCollectorWarning":
"Log Garbage Collector Warning",
"distanthorizons.config.common.logging.warning.showGarbageCollectorWarning":
"Show Garbage Collector Warning",
@@ -922,18 +890,9 @@
"distanthorizons.config.enum.EDhApiTransparency.DISABLED":
"Disabled",
"distanthorizons.config.enum.EDhApiTransparency.FAKE":
"Fake",
"distanthorizons.config.enum.EDhApiTransparency.COMPLETE":
"Complete",
"distanthorizons.config.enum.EDhApiFogDrawMode.USE_OPTIFINE_SETTING":
"Use modded settings",
"distanthorizons.config.enum.EDhApiFogDrawMode.FOG_ENABLED":
"Enabled",
"distanthorizons.config.enum.EDhApiFogDrawMode.FOG_DISABLED":
"Disabled",
"distanthorizons.config.enum.EDhApiFogColorMode.USE_WORLD_FOG_COLOR":
"Use world fog",
"distanthorizons.config.enum.EDhApiFogColorMode.USE_SKY_COLOR":
@@ -980,13 +939,6 @@
"distanthorizons.config.enum.EDhApiHeightFogDirection.ABOVE_AND_BELOW_SET_HEIGHT":
"Above And Below Set Height",
"distanthorizons.config.enum.EDhApiVanillaOverdraw.NEVER":
"Never",
"distanthorizons.config.enum.EDhApiVanillaOverdraw.DYNAMIC":
"Dynamic",
"distanthorizons.config.enum.EDhApiVanillaOverdraw.ALWAYS":
"Always",
"distanthorizons.config.enum.EDhApiDistantGeneratorMode.NONE":
"1. Existing Only",
"distanthorizons.config.enum.EDhApiDistantGeneratorMode.PRE_EXISTING_ONLY":
@@ -1070,13 +1022,6 @@
"distanthorizons.config.enum.EDhApiGLErrorHandlingMode.LOG_THROW":
"Log-Throw",
"distanthorizons.config.enum.EDhApiGlProfileMode.CORE":
"Core",
"distanthorizons.config.enum.EDhApiGlProfileMode.COMPAT":
"Compat",
"distanthorizons.config.enum.EDhApiGlProfileMode.ANY":
"Any",
"distanthorizons.config.enum.EDhApiLoggerLevel.ALL":
"1. All",
"distanthorizons.config.enum.EDhApiLoggerLevel.DEBUG":
@@ -1091,19 +1036,6 @@
"6. Disabled",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.AUTO":
"Auto",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.NONE":
"None",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.BUFFER_STORAGE":
"Buffer storage",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.SUB_DATA":
"Sub data",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.BUFFER_MAPPING":
"Buffer mapping",
"distanthorizons.config.enum.EDhApiGpuUploadMethod.DATA":
"Data",
"distanthorizons.config.enum.EDhApiLodShading.AUTO":
"Auto",
"distanthorizons.config.enum.EDhApiLodShading.ENABLED":