add useCameraPositionForQualityDropOff config/api

This commit is contained in:
James Seibel
2026-06-02 18:05:16 -05:00
parent c28cf643b3
commit cbff0cd9e9
5 changed files with 45 additions and 4 deletions
@@ -85,6 +85,16 @@ public interface IDhApiGraphicsConfig extends IDhApiConfigGroup
/** Modifies the quadratic function fake chunks use for horizontal quality drop-off. */
IDhApiConfigValue<EDhApiHorizontalQuality> horizontalQuality();
/**
* If true DH will try to use the camera position when
* determining LOD quality drop-off. <br>
* If false DH will use the player's position.
* <br><br>
* Enabling helps free-cam mods render correctly. <br>
* Disabling helps multi-camera mods render correctly (ie Immersive Portals or camera mods).
*/
IDhApiConfigValue<Boolean> useCameraPositionForQualityDropOff();
IDhApiConfigValue<EDhApiTransparency> transparency();
/** Defines what blocks won't be rendered as LODs. */
@@ -85,6 +85,10 @@ public class DhApiGraphicsConfig implements IDhApiGraphicsConfig
public IDhApiConfigValue<EDhApiHorizontalQuality> horizontalQuality()
{ return new DhApiConfigValue<EDhApiHorizontalQuality, EDhApiHorizontalQuality>(Config.Client.Advanced.Graphics.Quality.horizontalQuality); }
@Override
public IDhApiConfigValue<Boolean> useCameraPositionForQualityDropOff()
{ return new DhApiConfigValue<Boolean, Boolean>(Config.Client.Advanced.Graphics.Quality.useCameraPositionForQualityDropOff); }
@Override
public IDhApiConfigValue<EDhApiTransparency> transparency()
{ return new DhApiConfigValue<EDhApiTransparency, EDhApiTransparency>(Config.Client.Advanced.Graphics.Quality.transparency); }
@@ -223,6 +223,18 @@ public class Config
.addListener(ReloadLodsConfigEventHandler.DELAYED_INSTANCE)
.build();
public static ConfigEntry<Boolean> useCameraPositionForQualityDropOff = new ConfigEntry.Builder<Boolean>()
.set(true)
.comment(""
+ "If true DH will try to use the camera position when \n"
+ "determining LOD quality drop-off. \n"
+ "If false DH will use the player's position. \n"
+ " \n"
+ "Enabling helps free-cam mods render correctly. \n"
+ "Disabling helps multi-camera mods render correctly (ie Immersive Portals or camera mods). \n"
+ "")
.build();
public static ConfigUISpacer qualitySpacer = new ConfigUISpacer.Builder().build();
public static ConfigEntry<EDhApiTransparency> transparency = new ConfigEntry.Builder<EDhApiTransparency>()
@@ -109,10 +109,21 @@ public class ClientLevelModule implements Closeable, IDataSourceUpdateListenerFu
this.ClientRenderStateRef.set(clientRenderState);
}
// use camera position instead of player pos so free cam mods work better
DhBlockPos2D quadTreeTickBlockPos;
if (Config.Client.Advanced.Graphics.Quality.useCameraPositionForQualityDropOff.get())
{
// use camera position allow free cam mods work better
DhVec3d cameraDoublePos = MC_RENDER.getCameraExactPosition();
DhBlockPos2D cameraBlockPos = new DhBlockPos2D((int)cameraDoublePos.x, (int)cameraDoublePos.z);
clientRenderState.quadtree.tryTick(cameraBlockPos);
quadTreeTickBlockPos = new DhBlockPos2D((int)cameraDoublePos.x, (int)cameraDoublePos.z);
}
else
{
// player position allows multi-cam mods to work better
quadTreeTickBlockPos = new DhBlockPos2D(MC_CLIENT.getPlayerBlockPos());
}
clientRenderState.quadtree.tryTick(quadTreeTickBlockPos);
}
@@ -127,6 +127,10 @@
"Vertical Quality",
"distanthorizons.config.client.advanced.graphics.quality.verticalQuality.@tooltip":
"How well LODs represent overhangs, caves, cliffsides, etc.\n\nHigher options will increase memory and GPU usage.",
"distanthorizons.config.client.advanced.graphics.quality.useCameraPositionForQualityDropOff":
"Use Camera Pos for Quality Drop-Off",
"distanthorizons.config.client.advanced.graphics.quality.useCameraPositionForQualityDropOff.@tooltip":
"If true DH will try to use the camera position when \ndetermining LOD quality drop-off. \nIf false DH will use the player's position. \n\nEnabling helps free-cam mods render correctly. \nDisabling helps multi-camera mods render correctly (ie Immersive Portals or camera mods).",
"distanthorizons.config.client.advanced.graphics.quality.horizontalScale":
"Horizontal Scale",
"distanthorizons.config.client.advanced.graphics.quality.horizontalScale.@tooltip":