From 5225bca00712169b1ed2b031c6c19c444823b904 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Fri, 2 Aug 2024 12:20:04 +1000 Subject: [PATCH] More work --- .../me/cortex/voxy/client/core/VoxelCore.java | 7 ++----- .../core/model/BakedBlockEntityModel.java | 2 +- .../client/core/rendering/RenderService.java | 21 ++++++++++++------- .../core/rendering/RenderServiceViewport.java | 10 --------- .../{ => rendering}/ViewportSelector.java | 2 +- .../section/AbstractSectionRenderer.java | 10 ++++++--- .../core/rendering/section/BasicViewport.java | 10 +++++++++ .../section/MDICSectionRenderer.java | 21 +++++++++++++++++-- 8 files changed, 54 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/me/cortex/voxy/client/core/rendering/RenderServiceViewport.java rename src/main/java/me/cortex/voxy/client/core/{ => rendering}/ViewportSelector.java (96%) create mode 100644 src/main/java/me/cortex/voxy/client/core/rendering/section/BasicViewport.java diff --git a/src/main/java/me/cortex/voxy/client/core/VoxelCore.java b/src/main/java/me/cortex/voxy/client/core/VoxelCore.java index 56b71a1a..1978a4b4 100644 --- a/src/main/java/me/cortex/voxy/client/core/VoxelCore.java +++ b/src/main/java/me/cortex/voxy/client/core/VoxelCore.java @@ -15,7 +15,6 @@ import net.minecraft.client.render.Camera; import net.minecraft.client.render.Frustum; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.boss.BossBar; -import net.minecraft.registry.RegistryKeys; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; @@ -53,7 +52,6 @@ public class VoxelCore { private final WorldEngine world; private final RenderService renderer; - private final ViewportSelector viewportSelector; private final PostProcessing postProcessing; //private final Thread shutdownThread = new Thread(this::shutdown); @@ -70,7 +68,6 @@ public class VoxelCore { this.renderer = new RenderService(this.world); System.out.println("Using " + this.renderer.getClass().getSimpleName()); - this.viewportSelector = new ViewportSelector<>(this.renderer::createViewport); this.postProcessing = new PostProcessing(); System.out.println("Voxy core initialized"); @@ -116,7 +113,7 @@ public class VoxelCore { var projection = computeProjectionMat(); - var viewport = this.viewportSelector.getViewport(); + var viewport = this.renderer.getViewport(); viewport .setProjection(projection) .setModelView(matrices.peek().getPositionMatrix()) @@ -171,7 +168,7 @@ public class VoxelCore { try {this.importer.shutdown();this.importer = null;} catch (Exception e) {e.printStackTrace();} } System.out.println("Shutting down rendering"); - try {this.renderer.shutdown(); this.viewportSelector.free();} catch (Exception e) {e.printStackTrace();} + try {this.renderer.shutdown();} catch (Exception e) {e.printStackTrace();} System.out.println("Shutting down post processor"); if (this.postProcessing!=null){try {this.postProcessing.shutdown();} catch (Exception e) {e.printStackTrace();}} System.out.println("Shutting down world engine"); diff --git a/src/main/java/me/cortex/voxy/client/core/model/BakedBlockEntityModel.java b/src/main/java/me/cortex/voxy/client/core/model/BakedBlockEntityModel.java index 369c10e5..048e0550 100644 --- a/src/main/java/me/cortex/voxy/client/core/model/BakedBlockEntityModel.java +++ b/src/main/java/me/cortex/voxy/client/core/model/BakedBlockEntityModel.java @@ -131,8 +131,8 @@ public class BakedBlockEntityModel { return null; } var renderer = MinecraftClient.getInstance().getBlockEntityRenderDispatcher().get(entity); + entity.setWorld(MinecraftClient.getInstance().world); if (renderer != null) { - entity.setWorld(MinecraftClient.getInstance().world); try { renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, BakedVertices::new), 0, 0); } catch (Exception e) { diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java index 2b6d1a1f..e4de2bf5 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java @@ -4,18 +4,27 @@ import me.cortex.voxy.client.config.VoxyConfig; import me.cortex.voxy.client.core.model.ModelBakerySubsystem; import me.cortex.voxy.client.core.rendering.building.BuiltSection; import me.cortex.voxy.client.core.rendering.building.RenderGenerationService; +import me.cortex.voxy.client.core.rendering.section.AbstractSectionRenderer; +import me.cortex.voxy.client.core.rendering.section.MDICSectionRenderer; import me.cortex.voxy.common.world.WorldEngine; import net.minecraft.client.render.Camera; import java.util.List; public class RenderService { + private final ViewportSelector viewportSelector; + private final AbstractSectionRenderer sectionRenderer; private final ModelBakerySubsystem modelService; private final RenderGenerationService renderGen; public RenderService(WorldEngine world) { this.modelService = new ModelBakerySubsystem(world.getMapper()); + this.sectionRenderer = new MDICSectionRenderer(); this.renderGen = new RenderGenerationService(world, this.modelService, VoxyConfig.CONFIG.renderThreads, this::consumeRenderBuildResult, false); + + this.viewportSelector = new ViewportSelector<>(this.sectionRenderer::createViewport); + + for(int x = -200; x<=200;x++) { for (int z = -200; z <= 200; z++) { for (int y = -3; y <= 3; y++) { @@ -53,15 +62,13 @@ public class RenderService { this.renderGen.addDebugData(debug); } - public Viewport createViewport() { - return new RenderServiceViewport(); - } - - - - public void shutdown() { this.modelService.shutdown(); this.renderGen.shutdown(); + this.viewportSelector.free(); + } + + public Viewport getViewport() { + return this.viewportSelector.getViewport(); } } diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/RenderServiceViewport.java b/src/main/java/me/cortex/voxy/client/core/rendering/RenderServiceViewport.java deleted file mode 100644 index 8d993840..00000000 --- a/src/main/java/me/cortex/voxy/client/core/rendering/RenderServiceViewport.java +++ /dev/null @@ -1,10 +0,0 @@ -package me.cortex.voxy.client.core.rendering; - -import me.cortex.voxy.client.core.gl.GlBuffer; - -public class RenderServiceViewport extends Viewport { - @Override - protected void delete0() { - - } -} diff --git a/src/main/java/me/cortex/voxy/client/core/ViewportSelector.java b/src/main/java/me/cortex/voxy/client/core/rendering/ViewportSelector.java similarity index 96% rename from src/main/java/me/cortex/voxy/client/core/ViewportSelector.java rename to src/main/java/me/cortex/voxy/client/core/rendering/ViewportSelector.java index f791e6be..8e1c54bb 100644 --- a/src/main/java/me/cortex/voxy/client/core/ViewportSelector.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/ViewportSelector.java @@ -1,4 +1,4 @@ -package me.cortex.voxy.client.core; +package me.cortex.voxy.client.core.rendering; import me.cortex.voxy.client.core.rendering.Viewport; import net.fabricmc.loader.api.FabricLoader; diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/AbstractSectionRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/AbstractSectionRenderer.java index 0e440f79..882a60d8 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/section/AbstractSectionRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/AbstractSectionRenderer.java @@ -2,9 +2,13 @@ package me.cortex.voxy.client.core.rendering.section; import me.cortex.voxy.client.core.gl.GlBuffer; -import me.cortex.voxy.client.core.rendering.geometry.OLD.Gl46HierarchicalViewport; +import me.cortex.voxy.client.core.rendering.Viewport; //Takes in mesh ids from the hierachical traversal and may perform more culling then renders it -public abstract class AbstractSectionRenderer { - public abstract void renderOpaque(Gl46HierarchicalViewport viewport, GlBuffer renderList); +public abstract class AbstractSectionRenderer > { + public abstract void renderOpaque(T viewport); + public abstract void buildDrawCallsAndRenderTemporal(T viewport, GlBuffer sectionRenderList); + public abstract void renderTranslucent(T viewport); + + public abstract T createViewport(); } diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/BasicViewport.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/BasicViewport.java new file mode 100644 index 00000000..46b3d4e3 --- /dev/null +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/BasicViewport.java @@ -0,0 +1,10 @@ +package me.cortex.voxy.client.core.rendering.section; + +import me.cortex.voxy.client.core.rendering.Viewport; + +public class BasicViewport extends Viewport { + @Override + protected void delete0() { + + } +} diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java index 565daada..33cbceb5 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java @@ -5,9 +5,26 @@ import me.cortex.voxy.client.core.gl.GlBuffer; import me.cortex.voxy.client.core.rendering.geometry.OLD.Gl46HierarchicalViewport; //Uses MDIC to render the sections -public class MDICSectionRenderer extends AbstractSectionRenderer { +public class MDICSectionRenderer extends AbstractSectionRenderer { + + @Override - public void renderOpaque(Gl46HierarchicalViewport viewport, GlBuffer renderList) { + public void renderOpaque(BasicViewport viewport) { } + + @Override + public void buildDrawCallsAndRenderTemporal(BasicViewport viewport, GlBuffer sectionRenderList) { + + } + + @Override + public void renderTranslucent(BasicViewport viewport) { + + } + + @Override + public BasicViewport createViewport() { + return new BasicViewport(); + } }