From 4828dd781882324bd455c199bbf6ad625886a96b Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:11:18 -0500 Subject: Refactor RenderHelper --- .../skyblocker/utils/render/RenderHelper.java | 11 ++---- .../skyblocker/utils/render/SRenderLayers.java | 44 ---------------------- .../utils/render/SkyblockerRenderLayers.java | 36 ++++++++++++++++++ 3 files changed, 40 insertions(+), 51 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/SRenderLayers.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/SkyblockerRenderLayers.java (limited to 'src/main/java/de/hysky/skyblocker/utils/render') diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java index b64a8404..3d8213fe 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java @@ -71,7 +71,7 @@ public class RenderHelper { matrices.translate(-camera.x, -camera.y, -camera.z); VertexConsumerProvider consumers = context.consumers(); - VertexConsumer buffer = throughWalls ? consumers.getBuffer(SRenderLayers.getFilledThroughWalls()) : consumers.getBuffer(SRenderLayers.getFilled()); + VertexConsumer buffer = consumers.getBuffer(throughWalls ? SkyblockerRenderLayers.FILLED_THROUGH_WALLS : SkyblockerRenderLayers.FILLED); WorldRenderer.renderFilledBox(matrices, buffer, pos.x, pos.y, pos.z, pos.x + dimensions.x, pos.y + dimensions.y, pos.z + dimensions.z, colorComponents[0], colorComponents[1], colorComponents[2], alpha); @@ -267,18 +267,14 @@ public class RenderHelper { public static void runOnRenderThread(Runnable runnable) { if (RenderSystem.isOnRenderThread()) { runnable.run(); - - return; } else if (SCHEDULE_DEFERRED_RENDER_TASK != null) { //Sodium try { SCHEDULE_DEFERRED_RENDER_TASK.invokeExact(runnable); } catch (Throwable t) { LOGGER.error("[Skyblocker] Failed to schedule a render task!", t); } - - return; } else { //Vanilla - RenderSystem.recordRenderCall(() -> runnable.run()); + RenderSystem.recordRenderCall(runnable::run); } } @@ -316,7 +312,8 @@ public class RenderHelper { public static boolean pointIsInArea(double x, double y, double x1, double y1, double x2, double y2) { return x >= x1 && x <= x2 && y >= y1 && y <= y2; } - + + // TODO Get rid of reflection once the new Sodium is released private static MethodHandle getDeferredRenderTaskHandle() { try { Class deferredTaskClass = Class.forName("me.jellysquid.mods.sodium.client.render.util.DeferredRenderTask"); diff --git a/src/main/java/de/hysky/skyblocker/utils/render/SRenderLayers.java b/src/main/java/de/hysky/skyblocker/utils/render/SRenderLayers.java deleted file mode 100644 index e2725767..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/SRenderLayers.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.hysky.skyblocker.utils.render; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderLayer.MultiPhase; -import net.minecraft.client.render.RenderLayer.MultiPhaseParameters; -import net.minecraft.client.render.RenderPhase; -import net.minecraft.client.render.RenderPhase.Cull; -import net.minecraft.client.render.RenderPhase.DepthTest; -import net.minecraft.client.render.RenderPhase.Transparency; -import net.minecraft.client.render.VertexFormat.DrawMode; -import net.minecraft.client.render.VertexFormats; - -public class SRenderLayers { - private static final Transparency DEFAULT_TRANSPARENCY = new Transparency("default_transparency", () -> { - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - }, () -> RenderSystem.disableBlend()); - - private static final MultiPhase FILLED = RenderLayer.of("filled", VertexFormats.POSITION_COLOR, DrawMode.TRIANGLE_STRIP, RenderLayer.CUTOUT_BUFFER_SIZE, false, true, MultiPhaseParameters.builder() - .program(RenderPhase.COLOR_PROGRAM) - .cull(Cull.DISABLE_CULLING) - .layering(RenderPhase.POLYGON_OFFSET_LAYERING) - .transparency(DEFAULT_TRANSPARENCY) - .depthTest(DepthTest.LEQUAL_DEPTH_TEST) - .build(false)); - - private static final MultiPhase FILLED_THROUGH_WALLS = RenderLayer.of("filled_through_walls", VertexFormats.POSITION_COLOR, DrawMode.TRIANGLE_STRIP, RenderLayer.CUTOUT_BUFFER_SIZE, false, true, MultiPhaseParameters.builder() - .program(RenderPhase.COLOR_PROGRAM) - .cull(Cull.DISABLE_CULLING) - .layering(RenderPhase.POLYGON_OFFSET_LAYERING) - .transparency(DEFAULT_TRANSPARENCY) - .depthTest(DepthTest.ALWAYS_DEPTH_TEST) - .build(false)); - - public static MultiPhase getFilled() { - return FILLED; - } - - public static MultiPhase getFilledThroughWalls() { - return FILLED_THROUGH_WALLS; - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/SkyblockerRenderLayers.java b/src/main/java/de/hysky/skyblocker/utils/render/SkyblockerRenderLayers.java new file mode 100644 index 00000000..ee113cc4 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/utils/render/SkyblockerRenderLayers.java @@ -0,0 +1,36 @@ +package de.hysky.skyblocker.utils.render; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.RenderLayer.MultiPhase; +import net.minecraft.client.render.RenderLayer.MultiPhaseParameters; +import net.minecraft.client.render.RenderPhase; +import net.minecraft.client.render.RenderPhase.Cull; +import net.minecraft.client.render.RenderPhase.DepthTest; +import net.minecraft.client.render.RenderPhase.Transparency; +import net.minecraft.client.render.VertexFormat.DrawMode; +import net.minecraft.client.render.VertexFormats; + +public class SkyblockerRenderLayers { + private static final Transparency DEFAULT_TRANSPARENCY = new Transparency("default_transparency", () -> { + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + }, RenderSystem::disableBlend); + + public static final MultiPhase FILLED = RenderLayer.of("filled", VertexFormats.POSITION_COLOR, DrawMode.TRIANGLE_STRIP, RenderLayer.CUTOUT_BUFFER_SIZE, false, true, MultiPhaseParameters.builder() + .program(RenderPhase.COLOR_PROGRAM) + .cull(Cull.DISABLE_CULLING) + .layering(RenderPhase.POLYGON_OFFSET_LAYERING) + .transparency(DEFAULT_TRANSPARENCY) + .depthTest(DepthTest.LEQUAL_DEPTH_TEST) + .build(false)); + + public static final MultiPhase FILLED_THROUGH_WALLS = RenderLayer.of("filled_through_walls", VertexFormats.POSITION_COLOR, DrawMode.TRIANGLE_STRIP, RenderLayer.CUTOUT_BUFFER_SIZE, false, true, MultiPhaseParameters.builder() + .program(RenderPhase.COLOR_PROGRAM) + .cull(Cull.DISABLE_CULLING) + .layering(RenderPhase.POLYGON_OFFSET_LAYERING) + .transparency(DEFAULT_TRANSPARENCY) + .depthTest(DepthTest.ALWAYS_DEPTH_TEST) + .build(false)); +} -- cgit