Update to 1.21.7
This commit is contained in:
@@ -24,8 +24,10 @@ import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
||||
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
//#if MC>=12105
|
||||
//#if MC<12106
|
||||
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
||||
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
||||
//#endif
|
||||
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
||||
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
||||
//#endif
|
||||
@@ -121,9 +123,17 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
ByteBuffer buffer = ByteBufferPool.allocate(getFrameWidth() * getFrameHeight() * 4);
|
||||
//#if MC>=12105
|
||||
//$$ GpuDevice device = RenderSystem.getDevice();
|
||||
//#if MC>=12106
|
||||
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, getFrameWidth() * getFrameHeight() * 4)) {
|
||||
//#else
|
||||
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STATIC_READ, getFrameWidth() * getFrameHeight() * 4)) {
|
||||
//#endif
|
||||
//$$ device.createCommandEncoder().copyTextureToBuffer(frameBuffer().getColorAttachment(), gpuBuffer, 0, () -> {}, 0);
|
||||
//$$ try (GpuBuffer.ReadView view = device.createCommandEncoder().readBuffer(gpuBuffer)) {
|
||||
//#if MC>=12106
|
||||
//$$ try (GpuBuffer.MappedView view = device.createCommandEncoder().mapBuffer(gpuBuffer, true, false)) {
|
||||
//#else
|
||||
//$$ try (GpuBuffer.ReadView view = device.createCommandEncoder().readBuffer(gpuBuffer)) {
|
||||
//#endif
|
||||
//$$ buffer.put(view.data());
|
||||
//$$ }
|
||||
//$$ }
|
||||
|
||||
@@ -14,8 +14,10 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
//#if MC>=12105
|
||||
//#if MC<12106
|
||||
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
||||
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
||||
//#endif
|
||||
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
||||
//$$ import com.mojang.blaze3d.systems.CommandEncoder;
|
||||
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
||||
@@ -38,7 +40,10 @@ public abstract class PboOpenGlFrameCapturer<F extends Frame, D extends Enum<D>
|
||||
withDepth = renderInfo.getRenderSettings().isDepthMap();
|
||||
data = type.getEnumConstants();
|
||||
int bufferSize = framePixels * (4 /* bgra */ + (withDepth ? 4 /* float */ : 0)) * data.length;
|
||||
//#if MC>=12105
|
||||
//#if MC>=12106
|
||||
//$$ pbo = RenderSystem.getDevice().createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, bufferSize);
|
||||
//$$ otherPBO = RenderSystem.getDevice().createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, bufferSize);
|
||||
//#elseif MC>=12105
|
||||
//$$ pbo = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
||||
//$$ otherPBO = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
||||
//#else
|
||||
@@ -97,7 +102,11 @@ public abstract class PboOpenGlFrameCapturer<F extends Frame, D extends Enum<D>
|
||||
if (framesDone > 1) {
|
||||
// Read pbo to memory
|
||||
//#if MC>=12105
|
||||
//#if MC>=12106
|
||||
//$$ try (GpuBuffer.MappedView view = RenderSystem.getDevice().createCommandEncoder().mapBuffer(pbo, true, false)) {
|
||||
//#else
|
||||
//$$ try (GpuBuffer.ReadView view = RenderSystem.getDevice().createCommandEncoder().readBuffer(pbo)) {
|
||||
//#endif
|
||||
//$$ channels = new HashMap<>();
|
||||
//$$ channels.put(Channel.BRGA, readFromPbo(view.data(), 4, true));
|
||||
//$$ if (withDepth) {
|
||||
|
||||
@@ -88,12 +88,21 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
||||
GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||
Screen orgScreen = mc.currentScreen;
|
||||
boolean orgPauseOnLostFocus = mc.options.pauseOnLostFocus;
|
||||
//#if MC>=12106
|
||||
//$$ boolean orgRenderHand = mc.gameRenderer.isRenderingPanorama();
|
||||
//#else
|
||||
boolean orgRenderHand = gameRenderer.getRenderHand();
|
||||
//#endif
|
||||
try {
|
||||
mc.currentScreen = null; // do not want to render the current screen (that'd just be the progress gui)
|
||||
mc.options.pauseOnLostFocus = false; // do not want the pause menu to open if the window is unfocused
|
||||
if (omnidirectional) {
|
||||
gameRenderer.setRenderHand(false); // makes no sense, we wouldn't even know where to put it
|
||||
// makes no sense, we wouldn't even know where to put it
|
||||
//#if MC>=12106
|
||||
//$$ mc.gameRenderer.setRenderingPanorama(false);
|
||||
//#else
|
||||
gameRenderer.setRenderHand(false);
|
||||
//#endif
|
||||
}
|
||||
|
||||
//#if MC>=12100
|
||||
@@ -111,7 +120,11 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
||||
} finally {
|
||||
mc.currentScreen = orgScreen;
|
||||
mc.options.pauseOnLostFocus = orgPauseOnLostFocus;
|
||||
//#if MC>=12106
|
||||
//$$ mc.gameRenderer.setRenderingPanorama(orgRenderHand);
|
||||
//#else
|
||||
gameRenderer.setRenderHand(orgRenderHand);
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,30 @@ import net.minecraft.client.render.GameRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
//#if MC>=12106
|
||||
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
||||
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||
//$$ import net.minecraft.client.util.Pool;
|
||||
//#endif
|
||||
|
||||
@Mixin(GameRenderer.class)
|
||||
public interface GameRendererAccessor {
|
||||
//#if MC<12106
|
||||
@Accessor
|
||||
boolean getRenderHand();
|
||||
@Accessor
|
||||
void setRenderHand(boolean value);
|
||||
//#endif
|
||||
|
||||
//#if MC>=12106
|
||||
//$$ @Accessor
|
||||
//$$ Pool getPool();
|
||||
//$$ @Accessor
|
||||
//$$ GuiRenderer getGuiRenderer();
|
||||
//$$ @Accessor
|
||||
//$$ GuiRenderState getGuiState();
|
||||
//$$ @Accessor
|
||||
//$$ FogRenderer getFogRenderer();
|
||||
//#endif
|
||||
}
|
||||
|
||||
@@ -21,6 +21,12 @@ import java.util.concurrent.locks.Condition;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
//#if MC>=12106
|
||||
//$$ import net.minecraft.client.render.chunk.AbstractChunkRenderData;
|
||||
//$$ import org.spongepowered.asm.mixin.Mutable;
|
||||
//$$ import java.util.concurrent.Executor;
|
||||
//#endif
|
||||
|
||||
//#if MC>=12105
|
||||
//$$ import org.spongepowered.asm.mixin.Mutable;
|
||||
//$$ import java.util.AbstractQueue;
|
||||
@@ -60,6 +66,13 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo
|
||||
//$$ runnable.run();
|
||||
//$$ anything = true;
|
||||
//$$ }
|
||||
//#if MC>=12106
|
||||
//$$ AbstractChunkRenderData entry;
|
||||
//$$ while ((entry = this.renderQueue.poll()) != null) {
|
||||
//$$ entry.close();
|
||||
//$$ anything = true;
|
||||
//$$ }
|
||||
//#endif
|
||||
//$$ return anything;
|
||||
//$$ }
|
||||
//#else
|
||||
@@ -105,7 +118,42 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo
|
||||
}
|
||||
}
|
||||
|
||||
//#if MC>=12105
|
||||
//#if MC>=12106
|
||||
//$$ @Shadow @Final @Mutable
|
||||
//$$ Executor uploadExecutor;
|
||||
//$$ @Shadow @Final @Mutable Queue<AbstractChunkRenderData> renderQueue;
|
||||
//$$ @Inject(method = "<init>", at = @At("RETURN"))
|
||||
//$$ private void notifyMainThreadOfNewUpload(CallbackInfo ci) {
|
||||
//$$ Executor innerUploadExecutor = this.uploadExecutor;
|
||||
//$$ this.uploadExecutor = runnable -> {
|
||||
//$$ innerUploadExecutor.execute(runnable);
|
||||
//$$ waitingForWorkLock.lock();
|
||||
//$$ try {
|
||||
//$$ newWork.signal();
|
||||
//$$ } finally {
|
||||
//$$ waitingForWorkLock.unlock();
|
||||
//$$ }
|
||||
//$$ };
|
||||
//$$ Queue<AbstractChunkRenderData> innerRenderQueue = this.renderQueue;
|
||||
//$$ this.renderQueue = new AbstractQueue<>() {
|
||||
//$$ @Override
|
||||
//$$ public boolean offer(AbstractChunkRenderData runnable) {
|
||||
//$$ boolean result = innerRenderQueue.offer(runnable);
|
||||
//$$ waitingForWorkLock.lock();
|
||||
//$$ try {
|
||||
//$$ newWork.signal();
|
||||
//$$ } finally {
|
||||
//$$ waitingForWorkLock.unlock();
|
||||
//$$ }
|
||||
//$$ return result;
|
||||
//$$ }
|
||||
//$$ @Override public AbstractChunkRenderData poll() { return innerRenderQueue.poll(); }
|
||||
//$$ @Override public AbstractChunkRenderData peek() { return innerRenderQueue.peek(); }
|
||||
//$$ @Override public int size() { return innerRenderQueue.size(); }
|
||||
//$$ @Override public Iterator<AbstractChunkRenderData> iterator() { return innerRenderQueue.iterator(); }
|
||||
//$$ };
|
||||
//$$ }
|
||||
//#elseif MC>=12105
|
||||
//$$ @Inject(method = "<init>", at = @At("RETURN"))
|
||||
//$$ private void notifyMainThreadOfNewUpload(CallbackInfo ci) {
|
||||
//$$ Queue<Runnable> inner = this.uploadQueue;
|
||||
|
||||
@@ -40,6 +40,14 @@ import net.minecraft.util.crash.CrashException;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
//#if MC>=12106
|
||||
//$$ import com.replaymod.render.mixin.GameRendererAccessor;
|
||||
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
||||
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||
//$$ import java.util.Collections;
|
||||
//#endif
|
||||
|
||||
//#if MC>=12102
|
||||
//$$ import com.mojang.blaze3d.systems.ProjectionType;
|
||||
//#endif
|
||||
@@ -523,7 +531,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
||||
//#endif
|
||||
//#endif
|
||||
//#if MC>=11700
|
||||
//#if MC>=12106
|
||||
//#elseif MC>=11700
|
||||
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
||||
//$$ 0,
|
||||
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
||||
@@ -591,7 +600,12 @@ public class VideoRenderer implements RenderInfo {
|
||||
int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / Math.max(window.getWidth(), 1);
|
||||
int mouseY = (int) mc.mouse.getY() * window.getScaledHeight() / Math.max(window.getHeight(), 1);
|
||||
|
||||
//#if MC>=12000
|
||||
//#if MC>=12106
|
||||
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
||||
//$$ guiRenderState.clear();
|
||||
//$$ DrawContext drawContext = new DrawContext(mc, guiRenderState);
|
||||
//#elseif MC>=12000
|
||||
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
||||
//#endif
|
||||
|
||||
@@ -611,15 +625,26 @@ public class VideoRenderer implements RenderInfo {
|
||||
}
|
||||
} else {
|
||||
gui.toMinecraft().tick();
|
||||
//#if MC>=12106
|
||||
//$$ gui.toMinecraft().renderWithTooltip(
|
||||
//#else
|
||||
gui.toMinecraft().render(
|
||||
//#endif
|
||||
//#if MC>=12000
|
||||
//$$ new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers()),
|
||||
//$$ drawContext,
|
||||
//#elseif MC>=11600
|
||||
new MatrixStack(),
|
||||
//#endif
|
||||
mouseX, mouseY, 0);
|
||||
}
|
||||
//#if MC>=12000
|
||||
//#if MC>=12106
|
||||
//$$ var orgFog = RenderSystem.getShaderFog();
|
||||
//$$ var orgProjBuf = RenderSystem.getProjectionMatrixBuffer();
|
||||
//$$ var orgProjType = RenderSystem.getProjectionType();
|
||||
//$$ gameRenderer.getGuiRenderer().render(gameRenderer.getFogRenderer().getFogBuffer(FogRenderer.FogType.NONE));
|
||||
//$$ RenderSystem.setShaderFog(orgFog);
|
||||
//$$ RenderSystem.setProjectionMatrix(orgProjBuf, orgProjType);
|
||||
//#elseif MC>=12000
|
||||
//$$ drawContext.draw();
|
||||
//#endif
|
||||
//#else
|
||||
|
||||
Reference in New Issue
Block a user