Fix Iris shader animation time on 1.21
This commit is contained in:
@@ -41,6 +41,8 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
|
|
||||||
private final long startTime;
|
private final long startTime;
|
||||||
|
|
||||||
|
private long fakeFinishTimeNano;
|
||||||
|
|
||||||
public EntityRendererHandler(RenderSettings settings, RenderInfo renderInfo) {
|
public EntityRendererHandler(RenderSettings settings, RenderInfo renderInfo) {
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.renderInfo = renderInfo;
|
this.renderInfo = renderInfo;
|
||||||
@@ -71,6 +73,7 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void renderWorld(float partialTicks, long finishTimeNano) {
|
public void renderWorld(float partialTicks, long finishTimeNano) {
|
||||||
|
fakeFinishTimeNano = finishTimeNano;
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
PreRenderCallback.EVENT.invoker().preRender();
|
PreRenderCallback.EVENT.invoker().preRender();
|
||||||
//#else
|
//#else
|
||||||
@@ -142,6 +145,10 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
return this.renderInfo;
|
return this.renderInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getFakeFinishTimeNano() {
|
||||||
|
return fakeFinishTimeNano;
|
||||||
|
}
|
||||||
|
|
||||||
public interface IEntityRenderer {
|
public interface IEntityRenderer {
|
||||||
void replayModRender_setHandler(EntityRendererHandler handler);
|
void replayModRender_setHandler(EntityRendererHandler handler);
|
||||||
EntityRendererHandler replayModRender_getHandler();
|
EntityRendererHandler replayModRender_getHandler();
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
// 1.21+
|
||||||
@@ -14,6 +14,9 @@
|
|||||||
"Mixin_ChromaKeyColorSky",
|
"Mixin_ChromaKeyColorSky",
|
||||||
"Mixin_ChromaKeyDisableFog",
|
"Mixin_ChromaKeyDisableFog",
|
||||||
"Mixin_ChromaKeyForceSky",
|
"Mixin_ChromaKeyForceSky",
|
||||||
|
//#if MC>=12100
|
||||||
|
//$$ "Mixin_FakeSystemTimeUniforms_Iris",
|
||||||
|
//#endif
|
||||||
"Mixin_ForceChunkLoading",
|
"Mixin_ForceChunkLoading",
|
||||||
"Mixin_HideNameTags",
|
"Mixin_HideNameTags",
|
||||||
"Mixin_HideNameTags_LivingEntity",
|
"Mixin_HideNameTags_LivingEntity",
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.irisshaders.iris.uniforms.SystemTimeUniforms;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.render.GameRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Pseudo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
|
|
||||||
|
@Pseudo
|
||||||
|
@Mixin(value = SystemTimeUniforms.Timer.class, remap = false)
|
||||||
|
public class Mixin_FakeSystemTimeUniforms_Iris {
|
||||||
|
@ModifyVariable(method = "beginFrame", at = @At("HEAD"), argsOnly = true)
|
||||||
|
private long useReplayTimeDuringRender(long frameStartTimeNs) {
|
||||||
|
GameRenderer gameRenderer = MinecraftClient.getInstance().gameRenderer;
|
||||||
|
EntityRendererHandler entityRendererHandler =
|
||||||
|
((EntityRendererHandler.IEntityRenderer) gameRenderer).replayModRender_getHandler();
|
||||||
|
if (entityRendererHandler != null) {
|
||||||
|
frameStartTimeNs = entityRendererHandler.getFakeFinishTimeNano();
|
||||||
|
}
|
||||||
|
return frameStartTimeNs;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user