diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
index b75e3c5a8..bd5f68fdd 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
@@ -514,13 +514,7 @@ public class ClientApi
// render prep and actual rendering into different threads/methods
// this is annoying since it's possible to start a render with only
// partially complete info, but there isn't a better option at the moment
- RenderParams renderParams =
- new RenderParams(
- renderPass,
- RENDER_STATE.partialTickTime,
- RENDER_STATE.mcProjectionMatrix, RENDER_STATE.mcModelViewMatrix,
- RENDER_STATE.clientLevelWrapper
- );
+ RenderParams renderParams = new RenderParams(renderPass, RENDER_STATE);
///endregion
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/rendering/DhRenderState.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/rendering/DhRenderState.java
index c7a340f20..2d6aed6c7 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/rendering/DhRenderState.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/rendering/DhRenderState.java
@@ -30,6 +30,16 @@ public class DhRenderState
public float partialTickTime = -1;
public IClientLevelWrapper clientLevelWrapper = null;
+ /**
+ * This will generally be true if the player is:
+ * - blinded
+ * - under lava/water
+ *
+ * In those cases some rendering logic may need to be changed
+ * to look correct.
+ */
+ public boolean vanillaFogEnabled = false;
+
//========//
@@ -65,13 +75,6 @@ public class DhRenderState
return errorReasons;
}
- public boolean canRender()
- {
- // separated variable to allow for easy checking with the debugger
- String errorReasons = this.unableToRenderBecause();
- return errorReasons.isEmpty();
- }
-
public void canRenderOrThrow() throws IllegalStateException
{
String errorReasons = this.unableToRenderBecause();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
index 6b5e16f92..7b08a6cff 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
@@ -270,7 +270,9 @@ public class LodRenderer
}
// fog
- if (Config.Client.Advanced.Graphics.Fog.enableDhFog.get())
+ if (Config.Client.Advanced.Graphics.Fog.enableDhFog.get()
+ // this is done to fix issues with: underwater fog, blindness effect, etc.
+ || renderParams.vanillaFogEnabled)
{
profiler.popPush("LOD Fog");
@@ -337,7 +339,9 @@ public class LodRenderer
this.renderLodPass(lodShaderProgram, renderBufferHandler, renderParams, /*opaquePass*/ false);
- if (Config.Client.Advanced.Graphics.Fog.enableDhFog.get())
+ if (Config.Client.Advanced.Graphics.Fog.enableDhFog.get()
+ // this is done to fix issues with: underwater fog, blindness effect, etc.
+ || renderParams.vanillaFogEnabled)
{
profiler.popPush("LOD Fog");
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderParams.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderParams.java
index ae38fbb20..de0cbadd7 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderParams.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderParams.java
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.core.render.renderer;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRenderPass;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
+import com.seibel.distanthorizons.core.api.internal.rendering.DhRenderState;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.jar.EPlatform;
import com.seibel.distanthorizons.core.level.IDhClientLevel;
@@ -39,6 +40,8 @@ public class RenderParams extends DhApiRenderParam
public RenderBufferHandler renderBufferHandler;
public GenericObjectRenderer genericRenderer;
public Vec3d exactCameraPosition;
+ /** @see DhRenderState#vanillaFogEnabled */
+ public boolean vanillaFogEnabled;
public boolean validationRun = false;
@@ -47,12 +50,23 @@ public class RenderParams extends DhApiRenderParam
//=============//
// constructor //
//=============//
+ //region
- public RenderParams(
+ public RenderParams(EDhApiRenderPass renderPass, DhRenderState renderState)
+ {
+ this(renderPass,
+ renderState.partialTickTime,
+ renderState.mcProjectionMatrix, renderState.mcModelViewMatrix,
+ renderState.clientLevelWrapper,
+ renderState.vanillaFogEnabled
+ );
+ }
+ private RenderParams(
EDhApiRenderPass renderPass,
float newPartialTicks,
Mat4f newMcProjectionMatrix, Mat4f newMcModelViewMatrix,
- IClientLevelWrapper clientLevelWrapper
+ IClientLevelWrapper clientLevelWrapper,
+ boolean vanillaFogEnabled
)
{
super(renderPass,
@@ -83,13 +97,18 @@ public class RenderParams extends DhApiRenderParam
this.exactCameraPosition = MC_RENDER.getCameraExactPosition();
}
+ this.vanillaFogEnabled = vanillaFogEnabled;
+
}
+ //endregion
+
//======================//
// parameter validation //
//======================//
+ //region
/**
* Should be called before rendering is done.
@@ -172,6 +191,8 @@ public class RenderParams extends DhApiRenderParam
return null;
}
+ //endregion
+
}