Add fading to Forge and Neo, fix fading rain, fix old MC compiling

This commit is contained in:
James Seibel
2024-10-03 07:36:11 -05:00
parent e8288a0df9
commit 986e474657
3 changed files with 61 additions and 6 deletions
@@ -253,7 +253,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
modelViewMatrix,
projectionMatrix,
#if MC_VER < MC_1_21_1
renderContext.tickDelta()
renderContext.tickDelta(),
#else
renderContext.tickCounter().getGameTimeDeltaTicks(),
#endif
@@ -262,7 +262,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
});
// TODO add to forge and neo
WorldRenderEvents.LAST.register((renderContext) ->
WorldRenderEvents.AFTER_TRANSLUCENT.register((renderContext) ->
{
Mat4f projectionMatrix = McObjectConverter.Convert(renderContext.projectionMatrix());
@@ -277,7 +277,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
modelViewMatrix,
projectionMatrix,
#if MC_VER < MC_1_21_1
renderContext.tickDelta()
renderContext.tickDelta(),
#else
renderContext.tickCounter().getGameTimeDeltaTicks(),
#endif
@@ -141,17 +141,48 @@ public class MixinLevelRenderer
#endif
float frameTime;
#if MC_VER < MC_1_21_1
frameTime = Minecraft.getInstance().getFrameTime();
#else
frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
#endif
// only render before solid blocks
if (renderType.equals(RenderType.solid()))
{
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, Minecraft.getInstance().getFrameTime());
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
}
else if (renderType.equals(RenderType.translucent()))
{
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, Minecraft.getInstance().getFrameTime());
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
}
// render fade
// fade rendering needs to happen AFTER_ENTITIES and AFTER_TRANSLUCENT respectively (fabric names)
// however since this method intjects at the beginning of the rendertype,
// we need to trigger for the renderType after those passes are done
if (renderType.equals(RenderType.cutout()))
{
ClientApi.INSTANCE.renderFadeOpaque(
mcModelViewMatrix,
mcProjectionMatrix,
frameTime,
ClientLevelWrapper.getWrapper(this.level)
);
}
else if (renderType.equals(RenderType.tripwire()))
{
ClientApi.INSTANCE.renderFade(
mcModelViewMatrix,
mcProjectionMatrix,
frameTime,
ClientLevelWrapper.getWrapper(this.level)
);
}
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
{
callback.cancel();
@@ -126,7 +126,8 @@ public class MixinLevelRenderer
frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
#endif
// only render before solid blocks
// render LODs
if (renderType.equals(RenderType.solid()))
{
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
@@ -136,6 +137,29 @@ public class MixinLevelRenderer
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
}
// render fade
// fade rendering needs to happen AFTER_ENTITIES and AFTER_TRANSLUCENT respectively (fabric names)
// however since this method intjects at the beginning of the rendertype,
// we need to trigger for the renderType after those passes are done
if (renderType.equals(RenderType.cutout()))
{
ClientApi.INSTANCE.renderFadeOpaque(
mcModelViewMatrix,
mcProjectionMatrix,
frameTime,
ClientLevelWrapper.getWrapper(this.level)
);
}
else if (renderType.equals(RenderType.tripwire()))
{
ClientApi.INSTANCE.renderFade(
mcModelViewMatrix,
mcProjectionMatrix,
frameTime,
ClientLevelWrapper.getWrapper(this.level)
);
}
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
{
callback.cancel();