More work

This commit is contained in:
mcrcortex
2024-08-02 12:20:04 +10:00
parent 9b08c6e5ff
commit 5225bca007
8 changed files with 54 additions and 29 deletions

View File

@@ -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");

View File

@@ -131,8 +131,8 @@ public class BakedBlockEntityModel {
return null;
}
var renderer = MinecraftClient.getInstance().getBlockEntityRenderDispatcher().get(entity);
if (renderer != null) {
entity.setWorld(MinecraftClient.getInstance().world);
if (renderer != null) {
try {
renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, BakedVertices::new), 0, 0);
} catch (Exception e) {

View File

@@ -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();
}
}

View File

@@ -1,10 +0,0 @@
package me.cortex.voxy.client.core.rendering;
import me.cortex.voxy.client.core.gl.GlBuffer;
public class RenderServiceViewport extends Viewport<RenderServiceViewport> {
@Override
protected void delete0() {
}
}

View File

@@ -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;

View File

@@ -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 <T extends Viewport<T>> {
public abstract void renderOpaque(T viewport);
public abstract void buildDrawCallsAndRenderTemporal(T viewport, GlBuffer sectionRenderList);
public abstract void renderTranslucent(T viewport);
public abstract T createViewport();
}

View File

@@ -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<BasicViewport> {
@Override
protected void delete0() {
}
}

View File

@@ -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<BasicViewport> {
@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();
}
}