From 397573bc08720ac5180a406fd56dab5d3368ee68 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Sun, 22 Aug 2021 16:46:55 +0200 Subject: [PATCH] removed lodChunkRadiusMultiplier from proxy, config and renderer --- .../com/seibel/lod/handlers/LodConfig.java | 23 ++++--------------- .../com/seibel/lod/proxy/ClientProxy.java | 14 +++++------ .../com/seibel/lod/render/LodRenderer.java | 11 ++++----- .../java/com/seibel/lod/util/DetailUtil.java | 4 +--- 4 files changed, 16 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/seibel/lod/handlers/LodConfig.java b/src/main/java/com/seibel/lod/handlers/LodConfig.java index f77b1d387..1e78d838f 100644 --- a/src/main/java/com/seibel/lod/handlers/LodConfig.java +++ b/src/main/java/com/seibel/lod/handlers/LodConfig.java @@ -66,17 +66,11 @@ public class LodConfig public ForgeConfigSpec.EnumValue shadingMode; - /** - * this is multiplied by the default view distance - * to determine how far out to generate/render LODs - */ - public ForgeConfigSpec.IntValue lodChunkRadiusMultiplier; - public ForgeConfigSpec.EnumValue lodDistanceCalculatorType; public ForgeConfigSpec.IntValue lodQuality; - public ForgeConfigSpec.IntValue lodChunkRenderDistane; + public ForgeConfigSpec.IntValue lodChunkRenderDistance; public ForgeConfigSpec.DoubleValue brightnessMultiplier; @@ -148,15 +142,6 @@ public class LodConfig + " " + LodDetail.FULL.toString() + ": render 256 LODs for each Chunk. \n") .defineEnum("lodGenerationQuality", LodDetail.DOUBLE); - - lodChunkRadiusMultiplier = builder - .comment("\n\n" - + " This is multiplied by the default view distance \n" - + " to determine how far out to generate/render LODs. \n" - + " A value of 2 means that there is 1 render distance worth \n" - + " of LODs in each cardinal direction. \n") - .defineInRange("lodChunkRadiusMultiplier", 8, 2, 16); - lodDistanceCalculatorType = builder .comment("\n\n" + " " + DistanceCalculatorType.LINEAR + " \n" @@ -173,12 +158,12 @@ public class LodConfig .comment("\n\n" + " this value is multiplied by 128 and determine \n" + " how much the quality decrease over distance \n") - .defineInRange("lodChunkRadiusMultiplier", 1, 1, 4); + .defineInRange("lodQuality", 1, 1, 4); - lodChunkRenderDistane = builder + lodChunkRenderDistance = builder .comment("\n\n" + " This is the render distance of the mod \n") - .defineInRange("lodChunkRadiusMultiplier", 128, 32, 128); + .defineInRange("lodChunkRenderDistane", 128, 32, 128); distanceGenerationMode = builder .comment("\n\n" diff --git a/src/main/java/com/seibel/lod/proxy/ClientProxy.java b/src/main/java/com/seibel/lod/proxy/ClientProxy.java index 54ca2e9df..85c61a3ad 100644 --- a/src/main/java/com/seibel/lod/proxy/ClientProxy.java +++ b/src/main/java/com/seibel/lod/proxy/ClientProxy.java @@ -67,7 +67,7 @@ public class ClientProxy /** This is used to determine if the LODs should be regenerated */ public static int previousChunkRenderDistance = 0; /** This is used to determine if the LODs should be regenerated */ - public static int previousLodMultiplierDistance = 0; + public static int previousLodRenderDistance = 0; /** can be set if we want to recalculate variables related * to the LOD view distance */ @@ -124,7 +124,7 @@ public class ClientProxy // these can't be set until after the buffers are built (in renderer.drawLODs) // otherwise the buffers may be set to the wrong size, or not changed at all previousChunkRenderDistance = mc.options.renderDistance; - previousLodMultiplierDistance = LodConfig.CLIENT.lodChunkRadiusMultiplier.get(); + previousLodRenderDistance = LodConfig.CLIENT.lodChunkRenderDistance.get(); } @@ -142,9 +142,8 @@ public class ClientProxy LodConfig.CLIENT.maxDrawDetail.set(LodDetail.FULL); LodConfig.CLIENT.maxGenerationDetail.set(LodDetail.FULL); - - LodConfig.CLIENT.lodChunkRadiusMultiplier.set(16); - LodConfig.CLIENT.fogDistance.set(FogDistance.NEAR); + + LodConfig.CLIENT.fogDistance.set(FogDistance.FAR); LodConfig.CLIENT.fogDrawOverride.set(FogDrawOverride.ALWAYS_DRAW_FOG_FANCY); LodConfig.CLIENT.shadingMode.set(ShadingMode.DARKEN_SIDES); // LodConfig.CLIENT.brightnessMultiplier.set(1.0); @@ -152,7 +151,7 @@ public class ClientProxy LodConfig.CLIENT.distanceGenerationMode.set(DistanceGenerationMode.FEATURES); LodConfig.CLIENT.allowUnstableFeatureGeneration.set(false); - LodConfig.CLIENT.lodChunkRenderDistane.set(96); + LodConfig.CLIENT.lodChunkRenderDistance.set(96); LodConfig.CLIENT.lodDistanceCalculatorType.set(DistanceCalculatorType.QUADRATIC); LodConfig.CLIENT.lodQuality.set(1); LodConfig.CLIENT.allowUnstableFeatureGeneration.set(false); @@ -256,8 +255,7 @@ public class ClientProxy private void viewDistanceChangedEvent() { // calculate how wide the dimension(s) should be in regions - //int chunksWide = (mc.options.renderDistance * 2) * LodConfig.CLIENT.lodChunkRadiusMultiplier.get(); - int chunksWide = 8 * 2 * LodConfig.CLIENT.lodChunkRadiusMultiplier.get() + 1; + int chunksWide = LodConfig.CLIENT.lodChunkRenderDistance.get() * 2 + 1; int newWidth = (int) Math.ceil(chunksWide / (float) LodUtil.REGION_WIDTH_IN_CHUNKS); newWidth = (newWidth % 2 == 0) ? (newWidth += 1) : (newWidth += 2); // make sure we have a odd number of regions diff --git a/src/main/java/com/seibel/lod/render/LodRenderer.java b/src/main/java/com/seibel/lod/render/LodRenderer.java index 1e8186e5e..8432841dc 100644 --- a/src/main/java/com/seibel/lod/render/LodRenderer.java +++ b/src/main/java/com/seibel/lod/render/LodRenderer.java @@ -203,7 +203,7 @@ public class LodRenderer if ((int) player.getX() / LodUtil.CHUNK_WIDTH != prevChunkX || (int) player.getZ() / LodUtil.CHUNK_WIDTH != prevChunkZ || ClientProxy.previousChunkRenderDistance != mc.options.renderDistance || - ClientProxy.previousLodMultiplierDistance != LodConfig.CLIENT.lodChunkRadiusMultiplier.get() || + ClientProxy.previousLodRenderDistance != LodConfig.CLIENT.lodChunkRenderDistance.get() || prevFogDistance != LodConfig.CLIENT.fogDistance.get()) { // yes @@ -229,11 +229,10 @@ public class LodRenderer // determine how far the game's render distance is currently set //farPlaneBlockDistance = mc.options.renderDistance * LodUtil.CHUNK_WIDTH; - farPlaneBlockDistance = LodConfig.CLIENT.lodChunkRenderDistane.get() * LodUtil.CHUNK_WIDTH; + farPlaneBlockDistance = LodConfig.CLIENT.lodChunkRenderDistance.get() * LodUtil.CHUNK_WIDTH; // set how how far the LODs will go - //int numbChunksWide = mc.options.renderDistance * 2 * LodConfig.CLIENT.lodChunkRadiusMultiplier.get(); - int numbChunksWide =LodConfig.CLIENT.lodChunkRenderDistane.get() * 2; + int numbChunksWide =LodConfig.CLIENT.lodChunkRenderDistance.get() * 2; // determine which LODs should not be rendered close to the player HashSet chunkPosToSkip = getNearbyLodChunkPosToSkip(lodDim, player.blockPosition()); @@ -574,8 +573,8 @@ public class LodRenderer // it is possible to see the near clip plane, but // you have to be flying quickly in spectator mode through ungenerated // terrain, so I don't think it is much of an issue. - LodConfig.CLIENT.lodChunkRadiusMultiplier.get(), - this.farPlaneBlockDistance * LodConfig.CLIENT.lodChunkRadiusMultiplier.get() * 2); + LodConfig.CLIENT.lodChunkRenderDistance.get() / mc.options.renderDistance, + mc.options.renderDistance * LodUtil.CHUNK_WIDTH * 2); // add the screen space distortions projectionMatrix.multiply(matrixStack.last().pose()); diff --git a/src/main/java/com/seibel/lod/util/DetailUtil.java b/src/main/java/com/seibel/lod/util/DetailUtil.java index 8657b69ab..6070ac0d8 100644 --- a/src/main/java/com/seibel/lod/util/DetailUtil.java +++ b/src/main/java/com/seibel/lod/util/DetailUtil.java @@ -1,8 +1,6 @@ package com.seibel.lod.util; -import com.seibel.lod.enums.DistanceCalculatorType; import com.seibel.lod.enums.DistanceGenerationMode; -import com.seibel.lod.enums.LodQuality; import com.seibel.lod.handlers.LodConfig; public class DetailUtil @@ -10,7 +8,7 @@ public class DetailUtil private static double genMultiplier = 1.5; private static final int maxDetail = LodUtil.REGION_DETAIL_LEVEL + 1; private static final int minDistance = 0; - private static final int maxDistance = LodConfig.CLIENT.lodChunkRenderDistane.get() * 16; + private static final int maxDistance = LodConfig.CLIENT.lodChunkRenderDistance.get() * 16; private static DistanceGenerationMode[] distancesGenerators = { DistanceGenerationMode.SURFACE, DistanceGenerationMode.SURFACE,