more fog fixes

This commit is contained in:
mcrcortex
2025-12-06 00:19:59 +10:00
parent 43ed8145ff
commit 7f49a84215
3 changed files with 10 additions and 8 deletions

View File

@@ -110,8 +110,8 @@ public class NormalRenderPipeline extends AbstractRenderPipeline {
float end = viewport.fogParameters.environmentalEnd(); float end = viewport.fogParameters.environmentalEnd();
if (Math.abs(end-start)>1) { if (Math.abs(end-start)>1) {
float invEndFogDelta = 1f / (end - start); float invEndFogDelta = 1f / (end - start);
float endDistance = Minecraft.getInstance().gameRenderer.getRenderDistance() * 1.5f; float endDistance = Minecraft.getInstance().gameRenderer.getRenderDistance()*2f;
glUniform4f(4, endDistance, invEndFogDelta, Math.abs(start) * invEndFogDelta, 0); glUniform4f(4, invEndFogDelta, -start * invEndFogDelta, Math.min(1,(endDistance-start)/end),0);
glUniform4f(5, viewport.fogParameters.red(), viewport.fogParameters.green(), viewport.fogParameters.blue(), viewport.fogParameters.alpha()); glUniform4f(5, viewport.fogParameters.red(), viewport.fogParameters.green(), viewport.fogParameters.blue(), viewport.fogParameters.alpha());
} else { } else {
glUniform4f(4, 0, 0, 0, 0); glUniform4f(4, 0, 0, 0, 0);

View File

@@ -4,6 +4,7 @@ import me.cortex.voxy.common.Logger;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.Model; import net.minecraft.client.model.Model;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.SubmitNodeStorage;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.EntityBlock;
@@ -72,13 +73,14 @@ public class BakedBlockEntityModel {
try { try {
/* /*
var rt = renderer.createRenderState(); var rt = renderer.createRenderState();
renderer.updateRenderState(entity, rt, 0.0f, new Vec3d(0,0,0), null); renderer.extractRenderState(entity, rt, 0.0f, new Vec3d(0,0,0), null);
//TODO: FIXME: FINISH //TODO: FIXME: FINISH
var cstate = new CameraRenderState(); var cstate = new CameraRenderState();
var queue = new OrderedRenderCommandQueueImpl(); var queue = new SubmitNodeStorage();
renderer.render(rt, new MatrixStack(), queue, cstate); renderer.submit(rt, new MatrixStack(), queue, cstate);
var qq = queue.getBatchingQueue(0); var qq = queue.order(0);
qq.
*/ */
//renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, rl -> new LayerConsumer(rl, new ReuseVertexConsumer().setDefaultMeta(getMetaFromLayer(rl)))).consumer, 0, 0, new Vec3d(0,0,0)); //renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, rl -> new LayerConsumer(rl, new ReuseVertexConsumer().setDefaultMeta(getMetaFromLayer(rl)))).consumer, 0, 0, new Vec3d(0,0,0));
} catch (Exception e) { } catch (Exception e) {

View File

@@ -44,7 +44,7 @@ void main() {
} }
#ifdef USE_ENV_FOG #ifdef USE_ENV_FOG
if (fogColour.a>0.0){ if (fogColour.a>0.0){
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 float fogLerp = clamp(fma(length(point.xyz),endParams.x,endParams.y),0,endParams.z);//512 is 32*16 which is the render distance in blocks
colour.rgb = mix(colour.rgb, fogColour.rgb, fogLerp*fogColour.a); colour.rgb = mix(colour.rgb, fogColour.rgb, fogLerp*fogColour.a);
} }
#endif #endif