Use GameRenderer.render instead of renderWorld, improves compat

In particular, Iris updates its frame counter and timer in the outer method, so
if we only call the inner one, then its shadows and sky will not update
properly.
Since the render method also renders the GUI, we set the current screen to null
and cancel the HUD during rendering. MC also clears the depth before rendering
the HUD, which we don't want because it breaks the depth map export, so we
cancel that as well.

This also allows Vanilla post-processing (aka Super Secret Settings, aka Vanilla
Shaders) as well as entity outlines to function properly cause those are applied
in that method as well.
Should have done this a long time ago but better late than never.

Closes #321
This commit is contained in:
Jonas Herzig
2021-06-29 12:39:06 +02:00
parent ed99e240ec
commit 3f2456ba65
5 changed files with 75 additions and 6 deletions

View File

@@ -19,6 +19,7 @@ org.apache.maven.artifact.versioning.ComparableVersion net.minecraftforge.fml.co
org.lwjgl.glfw.GLFW com.replaymod.core.versions.GLFW
net.minecraft.client.MainWindow com.replaymod.core.versions.Window
net.minecraft.client.audio.SimpleSound net.minecraft.client.audio.PositionedSoundRecord
net.minecraft.client.gui.IngameGui net.minecraft.client.gui.GuiIngame
net.minecraft.resources.FolderPack getInputStream() getInputStreamByName()
net.minecraft.client.gui.GuiYesNoCallback confirmResult() confirmClicked()
@@ -183,7 +184,6 @@ net.minecraft.client.gui.screen.Screen removed() onGuiClosed()
net.minecraft.client.gui.screen.Screen renderBackground() drawDefaultBackground()
net.minecraft.client.gui.screen.Screen renderDirtBackground() drawBackground()
net.minecraft.client.gui.hud.ChatHud net.minecraft.client.gui.GuiNewChat
net.minecraft.client.gui.hud.InGameHud net.minecraft.client.gui.GuiIngame
net.minecraft.client.GameSettings net.minecraft.client.settings.GameSettings
net.minecraft.client.GameSettings debugEnabled showDebugInfo
net.minecraft.client.GameSettings viewDistance renderDistanceChunks