Massivly improved fog rendering
This commit is contained in:
@@ -11,6 +11,7 @@ import me.cortex.voxy.client.core.rendering.hierachical.HierarchicalOcclusionTra
|
|||||||
import me.cortex.voxy.client.core.rendering.hierachical.NodeCleaner;
|
import me.cortex.voxy.client.core.rendering.hierachical.NodeCleaner;
|
||||||
import me.cortex.voxy.client.core.rendering.post.FullscreenBlit;
|
import me.cortex.voxy.client.core.rendering.post.FullscreenBlit;
|
||||||
import me.cortex.voxy.client.core.rendering.util.DepthFramebuffer;
|
import me.cortex.voxy.client.core.rendering.util.DepthFramebuffer;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
import org.lwjgl.system.MemoryStack;
|
import org.lwjgl.system.MemoryStack;
|
||||||
|
|
||||||
@@ -102,7 +103,8 @@ public class NormalRenderPipeline extends AbstractRenderPipeline {
|
|||||||
float start = viewport.fogParameters.environmentalStart();
|
float start = viewport.fogParameters.environmentalStart();
|
||||||
float end = viewport.fogParameters.environmentalEnd();
|
float end = viewport.fogParameters.environmentalEnd();
|
||||||
float invEndFogDelta = 1f/(end-start);
|
float invEndFogDelta = 1f/(end-start);
|
||||||
glUniform3f(4, viewport.fogParameters.environmentalEnd(), invEndFogDelta, start*invEndFogDelta);
|
float endDistance = Math.min(MinecraftClient.getInstance().gameRenderer.getViewDistanceBlocks()*2, viewport.fogParameters.environmentalEnd());
|
||||||
|
glUniform3f(4, endDistance, invEndFogDelta, Math.abs(start)*invEndFogDelta);
|
||||||
glUniform3f(5, viewport.fogParameters.red(), viewport.fogParameters.green(), viewport.fogParameters.blue());
|
glUniform3f(5, viewport.fogParameters.red(), viewport.fogParameters.green(), viewport.fogParameters.blue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void main() {
|
|||||||
}
|
}
|
||||||
#ifdef USE_ENV_FOG
|
#ifdef USE_ENV_FOG
|
||||||
{
|
{
|
||||||
float fogLerp = max(fma(min(length(point.xyz), endParams.x),endParams.y,endParams.z),0);//512 is 32*16 which is the render distance in blocks
|
float fogLerp = clamp(fma(min(length(point.xyz), endParams.x),endParams.y,endParams.z),0,1);//512 is 32*16 which is the render distance in blocks
|
||||||
colour.rgb = mix(colour.rgb, fogColour, fogLerp);
|
colour.rgb = mix(colour.rgb, fogColour, fogLerp);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user