Merge branch 'minecraft-lod-mod-frustum.culling'

This commit is contained in:
James Seibel
2024-02-05 21:38:46 -06:00
parent b878faac96
commit 42bcc28d3e
4 changed files with 30 additions and 5 deletions
@@ -77,7 +77,11 @@ public class McObjectConverter
#endif
}
/** 4x4 float matrix converter */
/**
* 4x4 float matrix converter
* TODO this should be moved into Mat4f's constructor
*/
@Deprecated
public static Mat4f Convert(Matrix4f mcMatrix)
{
FloatBuffer buffer = FloatBuffer.allocate(16);
@@ -21,6 +21,7 @@ package com.seibel.distanthorizons.common.wrappers.minecraft;
import java.awt.Color;
import java.lang.invoke.MethodHandles;
import java.nio.FloatBuffer;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -40,8 +41,9 @@ import com.seibel.distanthorizons.core.render.DhApiRenderProxy;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
#if MC_VER < MC_1_19_4
import com.mojang.math.Vector3f;
import org.joml.Vector3f;
#else
import org.joml.Matrix4f;
import org.joml.Vector3f;
#endif
#if MC_VER >= MC_1_20_2
@@ -78,6 +80,7 @@ import net.minecraft.world.level.material.FogType;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import org.apache.logging.log4j.Logger;
import org.joml.Matrix4f;
/**
@@ -116,8 +119,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
public Vec3f getLookAtVector()
{
Camera camera = MC.gameRenderer.getMainCamera();
Vector3f cameraDir = camera.getLookVector();
return new Vec3f(cameraDir.x(), cameraDir.y(), cameraDir.z());
return new Vec3f(camera.getLookVector().x(), camera.getLookVector().y(), camera.getLookVector().z());
}
@Override
@@ -148,6 +150,23 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
return new Vec3d(projectedView.x, projectedView.y, projectedView.z);
}
@Override
public Mat4f getWorldViewMatrix()
{
Camera camera = MC.gameRenderer.getMainCamera();
Vector3f cameraVec3 = new Vector3f(
(float)camera.getPosition().x,
(float)camera.getPosition().y,
(float)camera.getPosition().z);
cameraVec3 = cameraVec3.negate();
Matrix4f matWorldView = new Matrix4f()
.rotateX((float)Math.toRadians(camera.getXRot()))
.rotateY((float)Math.toRadians(camera.getYRot() + 180f))
.translate(cameraVec3);
return McObjectConverter.Convert(matWorldView);
}
@Override
public Mat4f getDefaultProjectionMatrix(float partialTicks)
{
@@ -47,7 +47,9 @@ import net.fabricmc.fabric.api.event.player.UseBlockCallback;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.TitleScreen;
#if MC_VER < MC_1_19_4
import java.nio.FloatBuffer;
#endif
import java.util.HashSet;
import net.minecraft.client.multiplayer.ClientLevel;