Fix Sodium rendering 1.16
This commit is contained in:
+4
-3
@@ -96,10 +96,11 @@ public class MixinLevelRenderer
|
||||
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||
#endif
|
||||
{
|
||||
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
||||
// FIXME completely disables rendering when sodium is installed
|
||||
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
||||
{
|
||||
callback.cancel();
|
||||
}
|
||||
callback.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(method =
|
||||
|
||||
+55
-5
@@ -1,10 +1,12 @@
|
||||
package com.seibel.distanthorizons.fabric.mixins.mods.sodium;
|
||||
|
||||
#if POST_MC_1_17_1
|
||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor;
|
||||
import com.seibel.distanthorizons.fabric.wrappers.modAccessor.SodiumAccessor;
|
||||
import me.jellysquid.mods.sodium.client.gl.device.CommandList;
|
||||
import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer;
|
||||
import me.jellysquid.mods.sodium.client.render.chunk.ChunkCameraContext;
|
||||
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderList;
|
||||
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderMatrices;
|
||||
@@ -16,15 +18,21 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(RegionChunkRenderer.class)
|
||||
public class MixinSodiumChunkRenderer {
|
||||
@Mixin(SodiumWorldRenderer.class)
|
||||
public class MixinSodiumRenderer
|
||||
{
|
||||
@Unique SodiumAccessor accessor = null;
|
||||
|
||||
@Inject(remap = false, method = "render", at = @At(value = "INVOKE", target = "Lme/jellysquid/mods/sodium/client/render/chunk/ShaderChunkRenderer;begin(Lme/jellysquid/mods/sodium/client/render/chunk/passes/BlockRenderPass;)V", shift = At.Shift.AFTER))
|
||||
private void injectDHLoDRendering(ChunkRenderMatrices matrices, CommandList commandList, ChunkRenderList list, BlockRenderPass pass, ChunkCameraContext camera, CallbackInfo ci) {
|
||||
if (accessor == null) {
|
||||
private void injectDHLoDRendering(ChunkRenderMatrices matrices, CommandList commandList, ChunkRenderList list, BlockRenderPass pass, ChunkCameraContext camera, CallbackInfo ci)
|
||||
{
|
||||
if (accessor == null)
|
||||
{
|
||||
accessor = (SodiumAccessor)ModAccessorInjector.INSTANCE.get(ISodiumAccessor.class);
|
||||
}
|
||||
if (pass.equals(BlockRenderPass.SOLID)) {
|
||||
|
||||
if (pass.equals(BlockRenderPass.SOLID))
|
||||
{
|
||||
//TODO: use matrices.modelView() and matrices.projection() instead of
|
||||
// SodiumAccessor.mcModelViewMatrix,
|
||||
// SodiumAccessor.mcProjectionMatrix,
|
||||
@@ -34,4 +42,46 @@ public class MixinSodiumChunkRenderer {
|
||||
accessor.partialTicks);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#else
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||
import com.seibel.distanthorizons.core.config.Config;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor;
|
||||
import com.seibel.distanthorizons.fabric.wrappers.modAccessor.SodiumAccessor;
|
||||
import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(SodiumWorldRenderer.class)
|
||||
public class MixinSodiumRenderer
|
||||
{
|
||||
@Unique SodiumAccessor accessor = null;
|
||||
|
||||
@Inject(method="drawChunkLayer", remap = false, at = @At("HEAD"))
|
||||
private void drawChunkLayer(RenderType renderLayer, PoseStack matrixStack, double x, double y, double z, CallbackInfo callback)
|
||||
{
|
||||
if (this.accessor == null)
|
||||
{
|
||||
this.accessor = (SodiumAccessor) ModAccessorInjector.INSTANCE.get(ISodiumAccessor.class);
|
||||
}
|
||||
|
||||
if (renderLayer == RenderType.solid())
|
||||
{
|
||||
ClientApi.INSTANCE.renderLods(this.accessor.levelWrapper,
|
||||
this.accessor.mcModelViewMatrix,
|
||||
this.accessor.mcProjectionMatrix,
|
||||
this.accessor.partialTicks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -20,7 +20,7 @@
|
||||
"client.MixinMinecraft",
|
||||
"client.MixinTextureUtil",
|
||||
|
||||
"mods.sodium.MixinSodiumChunkRenderer"
|
||||
"mods.sodium.MixinSodiumRenderer"
|
||||
],
|
||||
"server": [],
|
||||
"injectors": {
|
||||
|
||||
Reference in New Issue
Block a user