Rename
This commit is contained in:
@@ -22,14 +22,14 @@ repositories {
|
|||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
inputs.property "version", project.version
|
inputs.property "version", project.version
|
||||||
archivesBaseName = "zenith"
|
archivesBaseName = "voxy"
|
||||||
filesMatching("fabric.mod.json") {
|
filesMatching("fabric.mod.json") {
|
||||||
expand "version": project.version
|
expand "version": project.version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
accessWidenerPath = file("src/main/resources/zenith.accesswidener")
|
accessWidenerPath = file("src/main/resources/voxy.accesswidener")
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ loader_version=0.15.0
|
|||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 0.0.3-alpha
|
mod_version = 0.0.3-alpha
|
||||||
maven_group = me.cortex
|
maven_group = me.cortex
|
||||||
archives_base_name = zenith
|
archives_base_name = voxy
|
||||||
|
|
||||||
fabric_version=0.91.1+1.20.4
|
fabric_version=0.91.1+1.20.4
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client;
|
package me.cortex.voxy.client;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.VoxelCore;
|
import me.cortex.voxy.client.core.VoxelCore;
|
||||||
|
|
||||||
public interface IGetVoxelCore {
|
public interface IGetVoxelCore {
|
||||||
VoxelCore getVoxelCore();
|
VoxelCore getVoxelCore();
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
package me.cortex.zenith.client;
|
package me.cortex.voxy.client;
|
||||||
|
|
||||||
import me.cortex.zenith.common.world.storage.lmdb.LMDBInterface;
|
import me.cortex.voxy.common.world.storage.lmdb.LMDBInterface;
|
||||||
import me.cortex.zenith.common.world.storage.StorageBackend;
|
import me.cortex.voxy.client.importers.WorldImporter;
|
||||||
import me.cortex.zenith.client.importers.WorldImporter;
|
import me.cortex.voxy.common.world.storage.lmdb.LMDBStorageBackend;
|
||||||
import me.cortex.zenith.common.world.storage.lmdb.LMDBStorageBackend;
|
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package me.cortex.zenith.client;
|
package me.cortex.voxy.client;
|
||||||
|
|
||||||
import me.cortex.zenith.client.terrain.WorldImportCommand;
|
import me.cortex.voxy.client.terrain.WorldImportCommand;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
||||||
|
|
||||||
public class Zenith implements ClientModInitializer {
|
public class Voxy implements ClientModInitializer {
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
|
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.config;
|
package me.cortex.voxy.client.config;
|
||||||
|
|
||||||
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.FieldNamingPolicy;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
@@ -11,13 +11,13 @@ import java.lang.reflect.Modifier;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
||||||
public class ZenithConfig {
|
public class VoxyConfig {
|
||||||
private static final Gson GSON = new GsonBuilder()
|
private static final Gson GSON = new GsonBuilder()
|
||||||
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
||||||
.setPrettyPrinting()
|
.setPrettyPrinting()
|
||||||
.excludeFieldsWithModifiers(Modifier.PRIVATE)
|
.excludeFieldsWithModifiers(Modifier.PRIVATE)
|
||||||
.create();
|
.create();
|
||||||
public static ZenithConfig CONFIG = loadOrCreate();
|
public static VoxyConfig CONFIG = loadOrCreate();
|
||||||
|
|
||||||
public boolean enabled = true;
|
public boolean enabled = true;
|
||||||
public int qualityScale = 20;
|
public int qualityScale = 20;
|
||||||
@@ -27,7 +27,7 @@ public class ZenithConfig {
|
|||||||
public int savingThreads = 10;
|
public int savingThreads = 10;
|
||||||
public int renderThreads = 5;
|
public int renderThreads = 5;
|
||||||
public int savingCompressionLevel = 7;
|
public int savingCompressionLevel = 7;
|
||||||
public String storagePath = "zenith_db";
|
public String storagePath = "voxy_db";
|
||||||
|
|
||||||
transient StorageConfig storageConfig;
|
transient StorageConfig storageConfig;
|
||||||
public static abstract class StorageConfig { }
|
public static abstract class StorageConfig { }
|
||||||
@@ -38,17 +38,17 @@ public class ZenithConfig {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static ZenithConfig loadOrCreate() {
|
public static VoxyConfig loadOrCreate() {
|
||||||
var path = getConfigPath();
|
var path = getConfigPath();
|
||||||
if (Files.exists(path)) {
|
if (Files.exists(path)) {
|
||||||
try (FileReader reader = new FileReader(path.toFile())) {
|
try (FileReader reader = new FileReader(path.toFile())) {
|
||||||
return GSON.fromJson(reader, ZenithConfig.class);
|
return GSON.fromJson(reader, VoxyConfig.class);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
System.err.println("Could not parse config");
|
System.err.println("Could not parse config");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new ZenithConfig();
|
return new VoxyConfig();
|
||||||
}
|
}
|
||||||
public void save() {
|
public void save() {
|
||||||
//Unsafe, todo: fixme! needs to be atomic!
|
//Unsafe, todo: fixme! needs to be atomic!
|
||||||
@@ -1,31 +1,26 @@
|
|||||||
package me.cortex.zenith.client.config;
|
package me.cortex.voxy.client.config;
|
||||||
|
|
||||||
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
||||||
import com.terraformersmc.modmenu.api.ModMenuApi;
|
import com.terraformersmc.modmenu.api.ModMenuApi;
|
||||||
import me.cortex.zenith.client.IGetVoxelCore;
|
import me.cortex.voxy.client.IGetVoxelCore;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigCategory;
|
import me.shedaniel.clothconfig2.api.ConfigCategory;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
||||||
import me.shedaniel.clothconfig2.api.Requirement;
|
|
||||||
import me.shedaniel.clothconfig2.gui.entries.BooleanListEntry;
|
|
||||||
import me.shedaniel.clothconfig2.gui.entries.IntegerListEntry;
|
|
||||||
import me.shedaniel.clothconfig2.gui.entries.IntegerSliderEntry;
|
|
||||||
import me.shedaniel.clothconfig2.impl.builders.DropdownMenuBuilder;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
public class ZenithConfigScreenFactory implements ModMenuApi {
|
public class VoxyConfigScreenFactory implements ModMenuApi {
|
||||||
private static final ZenithConfig DEFAULT = new ZenithConfig();
|
private static final VoxyConfig DEFAULT = new VoxyConfig();
|
||||||
@Override
|
@Override
|
||||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||||
return parent -> buildConfigScreen(parent, ZenithConfig.CONFIG);
|
return parent -> buildConfigScreen(parent, VoxyConfig.CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Screen buildConfigScreen(Screen parent, ZenithConfig config) {
|
private static Screen buildConfigScreen(Screen parent, VoxyConfig config) {
|
||||||
ConfigBuilder builder = ConfigBuilder.create()
|
ConfigBuilder builder = ConfigBuilder.create()
|
||||||
.setParentScreen(parent)
|
.setParentScreen(parent)
|
||||||
.setTitle(Text.translatable("zenith.config.title"));
|
.setTitle(Text.translatable("voxy.config.title"));
|
||||||
|
|
||||||
|
|
||||||
addGeneralCategory(builder, config);
|
addGeneralCategory(builder, config);
|
||||||
@@ -38,78 +33,78 @@ public class ZenithConfigScreenFactory implements ModMenuApi {
|
|||||||
if (world != null) {
|
if (world != null) {
|
||||||
world.reloadVoxelCore();
|
world.reloadVoxelCore();
|
||||||
}
|
}
|
||||||
ZenithConfig.CONFIG.save();
|
VoxyConfig.CONFIG.save();
|
||||||
});
|
});
|
||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addGeneralCategory(ConfigBuilder builder, ZenithConfig config) {
|
private static void addGeneralCategory(ConfigBuilder builder, VoxyConfig config) {
|
||||||
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("zenith.config.general"));
|
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("voxy.config.general"));
|
||||||
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
||||||
|
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startBooleanToggle(Text.translatable("zenith.config.general.enabled"), config.enabled)
|
category.addEntry(entryBuilder.startBooleanToggle(Text.translatable("voxy.config.general.enabled"), config.enabled)
|
||||||
.setTooltip(Text.translatable("zenith.config.general.enabled.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.enabled.tooltip"))
|
||||||
.setSaveConsumer(val -> config.enabled = val)
|
.setSaveConsumer(val -> config.enabled = val)
|
||||||
.setDefaultValue(DEFAULT.enabled)
|
.setDefaultValue(DEFAULT.enabled)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.general.quality"), config.qualityScale, 8, 50)
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.quality"), config.qualityScale, 8, 50)
|
||||||
.setTooltip(Text.translatable("zenith.config.general.quality.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.quality.tooltip"))
|
||||||
.setSaveConsumer(val -> config.qualityScale = val)
|
.setSaveConsumer(val -> config.qualityScale = val)
|
||||||
.setDefaultValue(DEFAULT.qualityScale)
|
.setDefaultValue(DEFAULT.qualityScale)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.general.geometryBuffer"), config.geometryBufferSize, (1<<27)/8, ((1<<31)-1)/8)
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.geometryBuffer"), config.geometryBufferSize, (1<<27)/8, ((1<<31)-1)/8)
|
||||||
.setTooltip(Text.translatable("zenith.config.general.geometryBuffer.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.geometryBuffer.tooltip"))
|
||||||
.setSaveConsumer(val -> config.geometryBufferSize = val)
|
.setSaveConsumer(val -> config.geometryBufferSize = val)
|
||||||
.setDefaultValue(DEFAULT.geometryBufferSize)
|
.setDefaultValue(DEFAULT.geometryBufferSize)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.general.maxSections"), config.maxSections, 100_000, 400_000)
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.maxSections"), config.maxSections, 100_000, 400_000)
|
||||||
.setTooltip(Text.translatable("zenith.config.general.maxSections.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.maxSections.tooltip"))
|
||||||
.setSaveConsumer(val -> config.maxSections = val)
|
.setSaveConsumer(val -> config.maxSections = val)
|
||||||
.setDefaultValue(DEFAULT.maxSections)
|
.setDefaultValue(DEFAULT.maxSections)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.general.compression"), config.savingCompressionLevel, 1, 21)
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.compression"), config.savingCompressionLevel, 1, 21)
|
||||||
.setTooltip(Text.translatable("zenith.config.general.compression.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.compression.tooltip"))
|
||||||
.setSaveConsumer(val -> config.savingCompressionLevel = val)
|
.setSaveConsumer(val -> config.savingCompressionLevel = val)
|
||||||
.setDefaultValue(DEFAULT.savingCompressionLevel)
|
.setDefaultValue(DEFAULT.savingCompressionLevel)
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addThreadsCategory(ConfigBuilder builder, ZenithConfig config) {
|
private static void addThreadsCategory(ConfigBuilder builder, VoxyConfig config) {
|
||||||
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("zenith.config.threads"));
|
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("voxy.config.threads"));
|
||||||
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.threads.ingest"), config.ingestThreads, 1, Runtime.getRuntime().availableProcessors())
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.ingest"), config.ingestThreads, 1, Runtime.getRuntime().availableProcessors())
|
||||||
.setTooltip(Text.translatable("zenith.config.general.ingest.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.ingest.tooltip"))
|
||||||
.setSaveConsumer(val -> config.ingestThreads = val)
|
.setSaveConsumer(val -> config.ingestThreads = val)
|
||||||
.setDefaultValue(DEFAULT.ingestThreads)
|
.setDefaultValue(DEFAULT.ingestThreads)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.threads.saving"), config.savingThreads, 1, Runtime.getRuntime().availableProcessors())
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.saving"), config.savingThreads, 1, Runtime.getRuntime().availableProcessors())
|
||||||
.setTooltip(Text.translatable("zenith.config.general.saving.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.saving.tooltip"))
|
||||||
.setSaveConsumer(val -> config.savingThreads = val)
|
.setSaveConsumer(val -> config.savingThreads = val)
|
||||||
.setDefaultValue(DEFAULT.savingThreads)
|
.setDefaultValue(DEFAULT.savingThreads)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
category.addEntry(entryBuilder.startIntSlider(Text.translatable("zenith.config.threads.render"), config.renderThreads, 1, Runtime.getRuntime().availableProcessors())
|
category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.render"), config.renderThreads, 1, Runtime.getRuntime().availableProcessors())
|
||||||
.setTooltip(Text.translatable("zenith.config.general.render.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.general.render.tooltip"))
|
||||||
.setSaveConsumer(val -> config.renderThreads = val)
|
.setSaveConsumer(val -> config.renderThreads = val)
|
||||||
.setDefaultValue(DEFAULT.renderThreads)
|
.setDefaultValue(DEFAULT.renderThreads)
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addStorageCategory(ConfigBuilder builder, ZenithConfig config) {
|
private static void addStorageCategory(ConfigBuilder builder, VoxyConfig config) {
|
||||||
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("zenith.config.storage"));
|
ConfigCategory category = builder.getOrCreateCategory(Text.translatable("voxy.config.storage"));
|
||||||
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
||||||
|
|
||||||
//Temporary until i figure out how to do more complex multi layer configuration for storage
|
//Temporary until i figure out how to do more complex multi layer configuration for storage
|
||||||
category.addEntry(entryBuilder.startStrField(Text.translatable("zenith.config.storage.path"), config.storagePath)
|
category.addEntry(entryBuilder.startStrField(Text.translatable("voxy.config.storage.path"), config.storagePath)
|
||||||
.setTooltip(Text.translatable("zenith.config.storage.path.tooltip"))
|
.setTooltip(Text.translatable("voxy.config.storage.path.tooltip"))
|
||||||
.setSaveConsumer(val -> config.storagePath = val)
|
.setSaveConsumer(val -> config.storagePath = val)
|
||||||
.setDefaultValue(DEFAULT.storagePath)
|
.setDefaultValue(DEFAULT.storagePath)
|
||||||
.build());
|
.build());
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package me.cortex.zenith.client.core;
|
package me.cortex.voxy.client.core;
|
||||||
|
|
||||||
//Contains the logic to determine what is loaded and at what LoD level, dispatches render changes
|
//Contains the logic to determine what is loaded and at what LoD level, dispatches render changes
|
||||||
// also determines what faces are built etc
|
// also determines what faces are built etc
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
|
||||||
import me.cortex.zenith.client.core.rendering.RenderTracker;
|
import me.cortex.voxy.client.core.rendering.RenderTracker;
|
||||||
import me.cortex.zenith.client.core.util.RingUtil;
|
import me.cortex.voxy.client.core.util.RingUtil;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
|
||||||
//Can use ring logic
|
//Can use ring logic
|
||||||
@@ -1,19 +1,18 @@
|
|||||||
package me.cortex.zenith.client.core;
|
package me.cortex.voxy.client.core;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import me.cortex.zenith.client.config.ZenithConfig;
|
import me.cortex.voxy.client.config.VoxyConfig;
|
||||||
import me.cortex.zenith.client.core.rendering.*;
|
import me.cortex.voxy.client.core.rendering.*;
|
||||||
import me.cortex.zenith.client.core.rendering.building.RenderGenerationService;
|
import me.cortex.voxy.client.core.rendering.building.RenderGenerationService;
|
||||||
import me.cortex.zenith.client.core.rendering.post.PostProcessing;
|
import me.cortex.voxy.client.core.rendering.post.PostProcessing;
|
||||||
import me.cortex.zenith.client.core.util.DebugUtil;
|
import me.cortex.voxy.client.core.util.DebugUtil;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import me.cortex.zenith.client.importers.WorldImporter;
|
import me.cortex.voxy.client.importers.WorldImporter;
|
||||||
import me.cortex.zenith.common.world.storage.FragmentedStorageBackendAdaptor;
|
import me.cortex.voxy.common.world.storage.FragmentedStorageBackendAdaptor;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.Camera;
|
import net.minecraft.client.render.Camera;
|
||||||
import net.minecraft.client.render.Frustum;
|
import net.minecraft.client.render.Frustum;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.registry.RegistryKey;
|
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -48,23 +47,23 @@ public class VoxelCore {
|
|||||||
//private final Thread shutdownThread = new Thread(this::shutdown);
|
//private final Thread shutdownThread = new Thread(this::shutdown);
|
||||||
|
|
||||||
public VoxelCore() {
|
public VoxelCore() {
|
||||||
System.out.println("Initializing voxel core");
|
System.out.println("Initializing voxy core");
|
||||||
|
|
||||||
//Trigger the shared index buffer loading
|
//Trigger the shared index buffer loading
|
||||||
SharedIndexBuffer.INSTANCE.id();
|
SharedIndexBuffer.INSTANCE.id();
|
||||||
this.renderer = new Gl46FarWorldRenderer(ZenithConfig.CONFIG.geometryBufferSize, ZenithConfig.CONFIG.maxSections);
|
this.renderer = new Gl46FarWorldRenderer(VoxyConfig.CONFIG.geometryBufferSize, VoxyConfig.CONFIG.maxSections);
|
||||||
System.out.println("Renderer initialized");
|
System.out.println("Renderer initialized");
|
||||||
this.world = new WorldEngine(new FragmentedStorageBackendAdaptor(new File(ZenithConfig.CONFIG.storagePath)), ZenithConfig.CONFIG.ingestThreads, ZenithConfig.CONFIG.savingThreads, ZenithConfig.CONFIG.savingCompressionLevel, 5);//"storagefile.db"//"ethoslab.db"
|
this.world = new WorldEngine(new FragmentedStorageBackendAdaptor(new File(VoxyConfig.CONFIG.storagePath)), VoxyConfig.CONFIG.ingestThreads, VoxyConfig.CONFIG.savingThreads, VoxyConfig.CONFIG.savingCompressionLevel, 5);//"storagefile.db"//"ethoslab.db"
|
||||||
System.out.println("World engine");
|
System.out.println("World engine");
|
||||||
|
|
||||||
this.renderTracker = new RenderTracker(this.world, this.renderer);
|
this.renderTracker = new RenderTracker(this.world, this.renderer);
|
||||||
this.renderGen = new RenderGenerationService(this.world, this.renderer.getModelManager(), ZenithConfig.CONFIG.renderThreads, this.renderTracker::processBuildResult);
|
this.renderGen = new RenderGenerationService(this.world, this.renderer.getModelManager(), VoxyConfig.CONFIG.renderThreads, this.renderTracker::processBuildResult);
|
||||||
this.world.setDirtyCallback(this.renderTracker::sectionUpdated);
|
this.world.setDirtyCallback(this.renderTracker::sectionUpdated);
|
||||||
this.renderTracker.setRenderGen(this.renderGen);
|
this.renderTracker.setRenderGen(this.renderGen);
|
||||||
System.out.println("Render tracker and generator initialized");
|
System.out.println("Render tracker and generator initialized");
|
||||||
|
|
||||||
//To get to chunk scale multiply the scale by 2, the scale is after how many chunks does the lods halve
|
//To get to chunk scale multiply the scale by 2, the scale is after how many chunks does the lods halve
|
||||||
this.distanceTracker = new DistanceTracker(this.renderTracker, 5, ZenithConfig.CONFIG.qualityScale);
|
this.distanceTracker = new DistanceTracker(this.renderTracker, 5, VoxyConfig.CONFIG.qualityScale);
|
||||||
System.out.println("Distance tracker initialized");
|
System.out.println("Distance tracker initialized");
|
||||||
|
|
||||||
this.postProcessing = new PostProcessing();
|
this.postProcessing = new PostProcessing();
|
||||||
@@ -85,7 +84,7 @@ public class VoxelCore {
|
|||||||
}
|
}
|
||||||
//this.renderer.getModelManager().updateEntry(0, Blocks.GRASS_BLOCK.getDefaultState());
|
//this.renderer.getModelManager().updateEntry(0, Blocks.GRASS_BLOCK.getDefaultState());
|
||||||
|
|
||||||
System.out.println("Voxel core initialized");
|
System.out.println("Voxy core initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -142,7 +141,7 @@ public class VoxelCore {
|
|||||||
public void addDebugInfo(List<String> debug) {
|
public void addDebugInfo(List<String> debug) {
|
||||||
debug.add("");
|
debug.add("");
|
||||||
debug.add("");
|
debug.add("");
|
||||||
debug.add("VoxelCore");
|
debug.add("Voxy Core");
|
||||||
debug.add("Ingest service tasks: " + this.world.ingestService.getTaskCount());
|
debug.add("Ingest service tasks: " + this.world.ingestService.getTaskCount());
|
||||||
debug.add("Saving service tasks: " + this.world.savingService.getTaskCount());
|
debug.add("Saving service tasks: " + this.world.savingService.getTaskCount());
|
||||||
debug.add("Render service tasks: " + this.renderGen.getTaskCount());
|
debug.add("Render service tasks: " + this.renderGen.getTaskCount());
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl;
|
package me.cortex.voxy.client.core.gl;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
|
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
|
||||||
import static org.lwjgl.opengl.GL44C.glBufferStorage;
|
import static org.lwjgl.opengl.GL44C.glBufferStorage;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl;
|
package me.cortex.voxy.client.core.gl;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL32.*;
|
import static org.lwjgl.opengl.GL32.*;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl;
|
package me.cortex.voxy.client.core.gl;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL45C.*;
|
import static org.lwjgl.opengl.GL45C.*;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl;
|
package me.cortex.voxy.client.core.gl;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.ARBMapBufferRange.GL_MAP_WRITE_BIT;
|
import static org.lwjgl.opengl.ARBMapBufferRange.GL_MAP_WRITE_BIT;
|
||||||
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
|
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl;
|
package me.cortex.voxy.client.core.gl;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.ARBFramebufferObject.glDeleteFramebuffers;
|
import static org.lwjgl.opengl.ARBFramebufferObject.glDeleteFramebuffers;
|
||||||
import static org.lwjgl.opengl.ARBFramebufferObject.glGenFramebuffers;
|
import static org.lwjgl.opengl.ARBFramebufferObject.glGenFramebuffers;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.gl.shader;
|
package me.cortex.voxy.client.core.gl.shader;
|
||||||
|
|
||||||
public interface IShaderProcessor {
|
public interface IShaderProcessor {
|
||||||
String process(ShaderType type, String source);
|
String process(ShaderType type, String source);
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.gl.shader;
|
package me.cortex.voxy.client.core.gl.shader;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.TrackedObject;
|
import me.cortex.voxy.common.util.TrackedObject;
|
||||||
import org.lwjgl.opengl.GL20C;
|
import org.lwjgl.opengl.GL20C;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.gl.shader;
|
package me.cortex.voxy.client.core.gl.shader;
|
||||||
|
|
||||||
import me.jellysquid.mods.sodium.client.gl.shader.ShaderConstants;
|
import me.jellysquid.mods.sodium.client.gl.shader.ShaderConstants;
|
||||||
import me.jellysquid.mods.sodium.client.gl.shader.ShaderParser;
|
import me.jellysquid.mods.sodium.client.gl.shader.ShaderParser;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.gl.shader;
|
package me.cortex.voxy.client.core.gl.shader;
|
||||||
|
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL20.GL_FRAGMENT_SHADER;
|
import static org.lwjgl.opengl.GL20.GL_FRAGMENT_SHADER;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.model;
|
package me.cortex.voxy.client.core.model;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package me.cortex.zenith.client.core.model;
|
package me.cortex.voxy.client.core.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlConst;
|
import com.mojang.blaze3d.platform.GlConst;
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.gl.GlTexture;
|
import me.cortex.voxy.client.core.gl.GlTexture;
|
||||||
import me.cortex.zenith.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.FluidBlock;
|
import net.minecraft.block.FluidBlock;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
@@ -41,7 +41,6 @@ import static org.lwjgl.opengl.GL12C.GL_TEXTURE_MIN_LOD;
|
|||||||
import static org.lwjgl.opengl.GL33.glDeleteSamplers;
|
import static org.lwjgl.opengl.GL33.glDeleteSamplers;
|
||||||
import static org.lwjgl.opengl.GL33.glGenSamplers;
|
import static org.lwjgl.opengl.GL33.glGenSamplers;
|
||||||
import static org.lwjgl.opengl.GL33C.glSamplerParameteri;
|
import static org.lwjgl.opengl.GL33C.glSamplerParameteri;
|
||||||
import static org.lwjgl.opengl.GL45C.glGenerateTextureMipmap;
|
|
||||||
import static org.lwjgl.opengl.GL45C.glTextureSubImage2D;
|
import static org.lwjgl.opengl.GL45C.glTextureSubImage2D;
|
||||||
|
|
||||||
//Manages the storage and updating of model states, textures and colours
|
//Manages the storage and updating of model states, textures and colours
|
||||||
@@ -1,15 +1,13 @@
|
|||||||
package me.cortex.zenith.client.core.model;
|
package me.cortex.voxy.client.core.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlConst;
|
import com.mojang.blaze3d.platform.GlConst;
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.systems.VertexSorter;
|
import com.mojang.blaze3d.systems.VertexSorter;
|
||||||
import me.cortex.zenith.client.core.gl.GlFramebuffer;
|
import me.cortex.voxy.client.core.gl.GlFramebuffer;
|
||||||
import me.cortex.zenith.client.core.gl.GlTexture;
|
import me.cortex.voxy.client.core.gl.GlTexture;
|
||||||
import me.cortex.zenith.client.core.gl.shader.Shader;
|
import me.cortex.voxy.client.core.gl.shader.Shader;
|
||||||
import me.cortex.zenith.client.core.gl.shader.ShaderLoader;
|
import me.cortex.voxy.client.core.gl.shader.ShaderType;
|
||||||
import me.cortex.zenith.client.core.gl.shader.ShaderType;
|
|
||||||
import me.jellysquid.mods.sodium.client.gl.shader.GlShader;
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -18,7 +16,6 @@ import net.minecraft.client.render.*;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.fluid.FluidState;
|
import net.minecraft.fluid.FluidState;
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.RotationAxis;
|
import net.minecraft.util.math.RotationAxis;
|
||||||
@@ -40,8 +37,6 @@ import static org.lwjgl.opengl.ARBShaderImageLoadStore.glMemoryBarrier;
|
|||||||
import static org.lwjgl.opengl.GL11.*;
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
import static org.lwjgl.opengl.GL14C.glBlendFuncSeparate;
|
import static org.lwjgl.opengl.GL14C.glBlendFuncSeparate;
|
||||||
import static org.lwjgl.opengl.GL20C.glUniformMatrix4fv;
|
import static org.lwjgl.opengl.GL20C.glUniformMatrix4fv;
|
||||||
import static org.lwjgl.opengl.GL20C.glUseProgram;
|
|
||||||
import static org.lwjgl.opengl.GL45C.glBlitNamedFramebuffer;
|
|
||||||
import static org.lwjgl.opengl.GL45C.glGetTextureImage;
|
import static org.lwjgl.opengl.GL45C.glGetTextureImage;
|
||||||
|
|
||||||
//Builds a texture for each face of a model
|
//Builds a texture for each face of a model
|
||||||
@@ -52,8 +47,8 @@ public class ModelTextureBakery {
|
|||||||
private final GlTexture depthTex;
|
private final GlTexture depthTex;
|
||||||
private final GlFramebuffer framebuffer;
|
private final GlFramebuffer framebuffer;
|
||||||
private final Shader rasterShader = Shader.make()
|
private final Shader rasterShader = Shader.make()
|
||||||
.add(ShaderType.VERTEX, "zenith:bakery/position_tex.vsh")
|
.add(ShaderType.VERTEX, "voxy:bakery/position_tex.vsh")
|
||||||
.add(ShaderType.FRAGMENT, "zenith:bakery/position_tex.fsh")
|
.add(ShaderType.FRAGMENT, "voxy:bakery/position_tex.fsh")
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
private static final List<MatrixStack> FACE_VIEWS = new ArrayList<>();
|
private static final List<MatrixStack> FACE_VIEWS = new ArrayList<>();
|
||||||
@@ -151,6 +146,7 @@ public class ModelTextureBakery {
|
|||||||
|
|
||||||
renderLayer.endDrawing();
|
renderLayer.endDrawing();
|
||||||
glDisable(GL_STENCIL_TEST);
|
glDisable(GL_STENCIL_TEST);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
RenderSystem.setProjectionMatrix(oldProjection, VertexSorter.BY_DISTANCE);
|
RenderSystem.setProjectionMatrix(oldProjection, VertexSorter.BY_DISTANCE);
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, oldFB);
|
glBindFramebuffer(GL_FRAMEBUFFER, oldFB);
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
package me.cortex.zenith.client.core.model;
|
package me.cortex.voxy.client.core.model;
|
||||||
|
|
||||||
import me.jellysquid.mods.sodium.client.util.color.ColorSRGB;
|
import me.jellysquid.mods.sodium.client.util.color.ColorSRGB;
|
||||||
import net.minecraft.util.math.ColorHelper;
|
import net.minecraft.util.math.ColorHelper;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
//Texturing utils to manipulate data from the model bakery
|
//Texturing utils to manipulate data from the model bakery
|
||||||
public class TextureUtils {
|
public class TextureUtils {
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
package me.cortex.zenith.client.core.rendering;
|
package me.cortex.voxy.client.core.rendering;
|
||||||
|
|
||||||
//NOTE: an idea on how to do it is so that any render section, we _keep_ aquired (yes this will be very memory intensive)
|
//NOTE: an idea on how to do it is so that any render section, we _keep_ aquired (yes this will be very memory intensive)
|
||||||
// could maybe tosomething else
|
// could maybe tosomething else
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.model.ModelManager;
|
import me.cortex.voxy.client.core.model.ModelManager;
|
||||||
import me.cortex.zenith.client.core.rendering.building.BuiltSection;
|
import me.cortex.voxy.client.core.rendering.building.BuiltSection;
|
||||||
import me.cortex.zenith.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.Camera;
|
import net.minecraft.client.render.Camera;
|
||||||
import net.minecraft.client.render.Frustum;
|
import net.minecraft.client.render.Frustum;
|
||||||
@@ -17,7 +16,6 @@ import org.joml.FrustumIntersection;
|
|||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.ARBMultiDrawIndirect.glMultiDrawElementsIndirect;
|
import static org.lwjgl.opengl.ARBMultiDrawIndirect.glMultiDrawElementsIndirect;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package me.cortex.zenith.client.core.rendering;
|
package me.cortex.voxy.client.core.rendering;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.rendering.building.BuiltSection;
|
import me.cortex.voxy.client.core.rendering.building.BuiltSection;
|
||||||
import me.cortex.zenith.client.core.rendering.util.BufferArena;
|
import me.cortex.voxy.client.core.rendering.util.BufferArena;
|
||||||
import me.cortex.zenith.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
@@ -1,21 +1,16 @@
|
|||||||
package me.cortex.zenith.client.core.rendering;
|
package me.cortex.voxy.client.core.rendering;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.gl.shader.Shader;
|
import me.cortex.voxy.client.core.gl.shader.Shader;
|
||||||
import me.cortex.zenith.client.core.gl.shader.ShaderType;
|
import me.cortex.voxy.client.core.gl.shader.ShaderType;
|
||||||
import me.cortex.zenith.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import me.cortex.zenith.client.mixin.joml.AccessFrustumIntersection;
|
import me.cortex.voxy.client.mixin.joml.AccessFrustumIntersection;
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.WallMountedBlock;
|
|
||||||
import net.minecraft.block.enums.BlockFace;
|
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.util.math.Direction;
|
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
import org.lwjgl.opengl.ARBIndirectParameters;
|
|
||||||
import org.lwjgl.opengl.GL11C;
|
import org.lwjgl.opengl.GL11C;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
@@ -39,19 +34,19 @@ import static org.lwjgl.opengl.GL45C.glClearNamedBufferData;
|
|||||||
|
|
||||||
public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer {
|
public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer {
|
||||||
private final Shader commandGen = Shader.make()
|
private final Shader commandGen = Shader.make()
|
||||||
.add(ShaderType.COMPUTE, "zenith:lod/gl46/cmdgen.comp")
|
.add(ShaderType.COMPUTE, "voxy:lod/gl46/cmdgen.comp")
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
private final Shader lodShader = Shader.make()
|
private final Shader lodShader = Shader.make()
|
||||||
.add(ShaderType.VERTEX, "zenith:lod/gl46/quads.vert")
|
.add(ShaderType.VERTEX, "voxy:lod/gl46/quads.vert")
|
||||||
.add(ShaderType.FRAGMENT, "zenith:lod/gl46/quads.frag")
|
.add(ShaderType.FRAGMENT, "voxy:lod/gl46/quads.frag")
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
|
|
||||||
//TODO: Note the cull shader needs a different element array since its rastering cubes not quads
|
//TODO: Note the cull shader needs a different element array since its rastering cubes not quads
|
||||||
private final Shader cullShader = Shader.make()
|
private final Shader cullShader = Shader.make()
|
||||||
.add(ShaderType.VERTEX, "zenith:lod/gl46/cull/raster.vert")
|
.add(ShaderType.VERTEX, "voxy:lod/gl46/cull/raster.vert")
|
||||||
.add(ShaderType.FRAGMENT, "zenith:lod/gl46/cull/raster.frag")
|
.add(ShaderType.FRAGMENT, "voxy:lod/gl46/cull/raster.frag")
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
private final GlBuffer glCommandBuffer;
|
private final GlBuffer glCommandBuffer;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package me.cortex.zenith.client.core.rendering;
|
package me.cortex.voxy.client.core.rendering;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.rendering.building.BuiltSection;
|
import me.cortex.voxy.client.core.rendering.building.BuiltSection;
|
||||||
import me.cortex.zenith.client.core.rendering.building.RenderGenerationService;
|
import me.cortex.voxy.client.core.rendering.building.RenderGenerationService;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import me.cortex.zenith.common.world.WorldSection;
|
import me.cortex.voxy.common.world.WorldSection;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package me.cortex.zenith.client.core.rendering;
|
package me.cortex.voxy.client.core.rendering;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import me.cortex.zenith.client.core.util.IndexUtil;
|
import me.cortex.voxy.client.core.util.IndexUtil;
|
||||||
import me.cortex.zenith.common.util.MemoryBuffer;
|
import me.cortex.voxy.common.util.MemoryBuffer;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
|
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.building;
|
package me.cortex.voxy.client.core.rendering.building;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.MemoryBuffer;
|
import me.cortex.voxy.common.util.MemoryBuffer;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
//TODO: also have an AABB size stored
|
//TODO: also have an AABB size stored
|
||||||
public final class BuiltSection {
|
public final class BuiltSection {
|
||||||
@@ -1,13 +1,7 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.building;
|
package me.cortex.voxy.client.core.rendering.building;
|
||||||
|
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.model.ModelManager;
|
import me.cortex.voxy.client.core.util.Mesher2D;
|
||||||
import me.cortex.zenith.client.core.rendering.GeometryManager;
|
|
||||||
import me.cortex.zenith.client.core.util.Mesher2D;
|
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
|
||||||
import net.minecraft.client.color.block.BlockColors;
|
|
||||||
import net.minecraft.client.world.ClientWorld;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
|
|
||||||
public class QuadEncoder {
|
public class QuadEncoder {
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.building;
|
package me.cortex.voxy.client.core.rendering.building;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||||
import me.cortex.zenith.client.core.model.ModelManager;
|
import me.cortex.voxy.client.core.model.ModelManager;
|
||||||
import me.cortex.zenith.client.core.util.Mesher2D;
|
import me.cortex.voxy.client.core.util.Mesher2D;
|
||||||
import me.cortex.zenith.common.util.MemoryBuffer;
|
import me.cortex.voxy.common.util.MemoryBuffer;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import me.cortex.zenith.common.world.WorldSection;
|
import me.cortex.voxy.common.world.WorldSection;
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
import net.minecraft.block.FluidBlock;
|
import net.minecraft.block.FluidBlock;
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.building;
|
package me.cortex.voxy.client.core.rendering.building;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
|
||||||
import me.cortex.zenith.client.core.model.ModelManager;
|
import me.cortex.voxy.client.core.model.ModelManager;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import me.cortex.zenith.common.world.WorldSection;
|
import me.cortex.voxy.common.world.WorldSection;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.post;
|
package me.cortex.voxy.client.core.rendering.post;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.gl.shader.Shader;
|
import me.cortex.voxy.client.core.gl.shader.Shader;
|
||||||
import me.cortex.zenith.client.core.gl.shader.ShaderType;
|
import me.cortex.voxy.client.core.gl.shader.ShaderType;
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11C.GL_TRIANGLES;
|
import static org.lwjgl.opengl.GL11C.GL_TRIANGLES;
|
||||||
import static org.lwjgl.opengl.GL11C.glDrawArrays;
|
import static org.lwjgl.opengl.GL11C.glDrawArrays;
|
||||||
@@ -15,7 +14,7 @@ public class FullscreenBlit {
|
|||||||
private final Shader shader;
|
private final Shader shader;
|
||||||
public FullscreenBlit(String fragId) {
|
public FullscreenBlit(String fragId) {
|
||||||
this.shader = Shader.make()
|
this.shader = Shader.make()
|
||||||
.add(ShaderType.VERTEX, "zenith:post/fullscreen.vert")
|
.add(ShaderType.VERTEX, "voxy:post/fullscreen.vert")
|
||||||
.add(ShaderType.FRAGMENT, fragId)
|
.add(ShaderType.FRAGMENT, fragId)
|
||||||
.compile();
|
.compile();
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,15 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.post;
|
package me.cortex.voxy.client.core.rendering.post;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.gl.GlFramebuffer;
|
import me.cortex.voxy.client.core.gl.GlFramebuffer;
|
||||||
import me.cortex.zenith.client.core.gl.GlTexture;
|
import me.cortex.voxy.client.core.gl.GlTexture;
|
||||||
import me.cortex.zenith.client.core.gl.shader.Shader;
|
import me.cortex.voxy.client.core.gl.shader.Shader;
|
||||||
import me.cortex.zenith.client.core.gl.shader.ShaderType;
|
import me.cortex.voxy.client.core.gl.shader.ShaderType;
|
||||||
import org.lwjgl.opengl.GL11C;
|
|
||||||
|
|
||||||
import static org.lwjgl.opengl.ARBFramebufferObject.*;
|
import static org.lwjgl.opengl.ARBFramebufferObject.*;
|
||||||
import static org.lwjgl.opengl.ARBShaderImageLoadStore.glBindImageTexture;
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
import static org.lwjgl.opengl.GL13.*;
|
import static org.lwjgl.opengl.GL13.*;
|
||||||
import static org.lwjgl.opengl.GL15C.GL_READ_WRITE;
|
|
||||||
import static org.lwjgl.opengl.GL20C.glStencilFuncSeparate;
|
|
||||||
import static org.lwjgl.opengl.GL44C.glBindImageTextures;
|
import static org.lwjgl.opengl.GL44C.glBindImageTextures;
|
||||||
import static org.lwjgl.opengl.GL45C.glBlitNamedFramebuffer;
|
import static org.lwjgl.opengl.GL45C.glBlitNamedFramebuffer;
|
||||||
import static org.lwjgl.opengl.GL45C.glTextureBarrier;
|
|
||||||
|
|
||||||
public class PostProcessing {
|
public class PostProcessing {
|
||||||
private final GlFramebuffer framebuffer;
|
private final GlFramebuffer framebuffer;
|
||||||
@@ -23,12 +18,8 @@ public class PostProcessing {
|
|||||||
private GlTexture colour;
|
private GlTexture colour;
|
||||||
private GlTexture depthStencil;
|
private GlTexture depthStencil;
|
||||||
|
|
||||||
private final Shader ssao = Shader.make()
|
private final FullscreenBlit emptyBlit = new FullscreenBlit("voxy:post/noop.frag");
|
||||||
.add(ShaderType.COMPUTE, "zenith:lod/ssao/ssao.comp")
|
private final FullscreenBlit blitTexture = new FullscreenBlit("voxy:post/blit_texture_cutout.frag");
|
||||||
.compile();
|
|
||||||
|
|
||||||
private final FullscreenBlit emptyBlit = new FullscreenBlit("zenith:post/noop.frag");
|
|
||||||
private final FullscreenBlit blitTexture = new FullscreenBlit("zenith:post/blit_texture_cutout.frag");
|
|
||||||
|
|
||||||
public PostProcessing() {
|
public PostProcessing() {
|
||||||
this.framebuffer = new GlFramebuffer();
|
this.framebuffer = new GlFramebuffer();
|
||||||
@@ -58,7 +49,6 @@ public class PostProcessing {
|
|||||||
this.framebuffer.free();
|
this.framebuffer.free();
|
||||||
if (this.colour != null) this.colour.free();
|
if (this.colour != null) this.colour.free();
|
||||||
if (this.depthStencil != null) this.depthStencil.free();
|
if (this.depthStencil != null) this.depthStencil.free();
|
||||||
this.ssao.free();
|
|
||||||
this.emptyBlit.delete();
|
this.emptyBlit.delete();
|
||||||
this.blitTexture.delete();
|
this.blitTexture.delete();
|
||||||
}
|
}
|
||||||
@@ -70,7 +60,7 @@ public class PostProcessing {
|
|||||||
glBlitNamedFramebuffer(sourceFB, this.framebuffer.id, 0,0, width, height, 0,0, width, height, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
|
glBlitNamedFramebuffer(sourceFB, this.framebuffer.id, 0,0, width, height, 0,0, width, height, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
|
||||||
|
|
||||||
//TODO: need to blit a fullscreen quad to generate a stencil mask of where the vanilla terrain is/isnt
|
//TODO: need to blit a fullscreen quad to generate a stencil mask of where the vanilla terrain is/isnt
|
||||||
// then when rastering zenith terrain, only render to non masked areas
|
// then when rastering voxy terrain, only render to non masked areas
|
||||||
//Hell once the stencil mask is computed, could clear the depth buffer and use a different near/far plane
|
//Hell once the stencil mask is computed, could clear the depth buffer and use a different near/far plane
|
||||||
|
|
||||||
|
|
||||||
@@ -92,7 +82,7 @@ public class PostProcessing {
|
|||||||
glClear(GL_DEPTH_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
|
||||||
//Make zenith terrain render only where there isnt mc terrain
|
//Make voxy terrain render only where there isnt mc terrain
|
||||||
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
|
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
|
||||||
glStencilFunc(GL_EQUAL, 1, 0xFF);
|
glStencilFunc(GL_EQUAL, 1, 0xFF);
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.util;
|
package me.cortex.voxy.client.core.rendering.util;
|
||||||
|
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.util.AllocationArena;
|
import me.cortex.voxy.client.core.util.AllocationArena;
|
||||||
import me.cortex.zenith.common.util.MemoryBuffer;
|
import me.cortex.voxy.common.util.MemoryBuffer;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
public class BufferArena {
|
public class BufferArena {
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
package me.cortex.zenith.client.core.rendering.util;
|
package me.cortex.voxy.client.core.rendering.util;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||||
import me.cortex.zenith.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.zenith.client.core.gl.GlFence;
|
import me.cortex.voxy.client.core.gl.GlFence;
|
||||||
import me.cortex.zenith.client.core.gl.GlPersistentMappedBuffer;
|
import me.cortex.voxy.client.core.gl.GlPersistentMappedBuffer;
|
||||||
import me.cortex.zenith.client.core.util.AllocationArena;
|
import me.cortex.voxy.client.core.util.AllocationArena;
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
|
|
||||||
import static me.cortex.zenith.client.core.util.AllocationArena.SIZE_LIMIT;
|
import static me.cortex.voxy.client.core.util.AllocationArena.SIZE_LIMIT;
|
||||||
import static org.lwjgl.opengl.ARBDirectStateAccess.glCopyNamedBufferSubData;
|
import static org.lwjgl.opengl.ARBDirectStateAccess.glCopyNamedBufferSubData;
|
||||||
import static org.lwjgl.opengl.ARBDirectStateAccess.glFlushMappedNamedBufferRange;
|
import static org.lwjgl.opengl.ARBDirectStateAccess.glFlushMappedNamedBufferRange;
|
||||||
import static org.lwjgl.opengl.ARBMapBufferRange.*;
|
import static org.lwjgl.opengl.ARBMapBufferRange.*;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.LongRBTreeSet;
|
import it.unimi.dsi.fastutil.longs.LongRBTreeSet;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import net.minecraft.client.render.*;
|
import net.minecraft.client.render.*;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import me.cortex.zenith.common.util.MemoryBuffer;
|
import me.cortex.voxy.common.util.MemoryBuffer;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
public class IndexUtil {
|
public class IndexUtil {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.core.util;
|
package me.cortex.voxy.client.core.util;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package me.cortex.zenith.client.importers;
|
package me.cortex.voxy.client.importers;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import me.cortex.zenith.client.core.util.ByteBufferBackedInputStream;
|
import me.cortex.voxy.client.core.util.ByteBufferBackedInputStream;
|
||||||
import me.cortex.zenith.common.voxelization.VoxelizedSection;
|
import me.cortex.voxy.common.voxelization.VoxelizedSection;
|
||||||
import me.cortex.zenith.common.voxelization.WorldConversionFactory;
|
import me.cortex.voxy.common.voxelization.WorldConversionFactory;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.mixin.joml;
|
package me.cortex.voxy.client.mixin.joml;
|
||||||
|
|
||||||
import org.joml.FrustumIntersection;
|
import org.joml.FrustumIntersection;
|
||||||
import org.joml.Vector4f;
|
import org.joml.Vector4f;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import net.minecraft.client.render.BackgroundRenderer;
|
import net.minecraft.client.render.BackgroundRenderer;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import me.cortex.zenith.client.IGetVoxelCore;
|
import me.cortex.voxy.client.IGetVoxelCore;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.world.ClientChunkManager;
|
import net.minecraft.client.world.ClientChunkManager;
|
||||||
import net.minecraft.util.math.ChunkPos;
|
import net.minecraft.util.math.ChunkPos;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import me.cortex.zenith.client.IGetVoxelCore;
|
import me.cortex.voxy.client.IGetVoxelCore;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.hud.DebugHud;
|
import net.minecraft.client.gui.hud.DebugHud;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import net.minecraft.client.render.GameRenderer;
|
import net.minecraft.client.render.GameRenderer;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.RunArgs;
|
import net.minecraft.client.RunArgs;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package me.cortex.zenith.client.mixin.minecraft;
|
package me.cortex.voxy.client.mixin.minecraft;
|
||||||
|
|
||||||
import me.cortex.zenith.client.IGetVoxelCore;
|
import me.cortex.voxy.client.IGetVoxelCore;
|
||||||
import me.cortex.zenith.client.config.ZenithConfig;
|
import me.cortex.voxy.client.config.VoxyConfig;
|
||||||
import me.cortex.zenith.client.core.VoxelCore;
|
import me.cortex.voxy.client.core.VoxelCore;
|
||||||
import net.minecraft.client.render.*;
|
import net.minecraft.client.render.*;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.client.world.ClientWorld;
|
import net.minecraft.client.world.ClientWorld;
|
||||||
@@ -68,7 +68,7 @@ public abstract class MixinWorldRenderer implements IGetVoxelCore {
|
|||||||
this.core.shutdown();
|
this.core.shutdown();
|
||||||
this.core = null;
|
this.core = null;
|
||||||
}
|
}
|
||||||
if (ZenithConfig.CONFIG.enabled) {
|
if (VoxyConfig.CONFIG.enabled) {
|
||||||
this.core = new VoxelCore();
|
this.core = new VoxelCore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ public abstract class MixinWorldRenderer implements IGetVoxelCore {
|
|||||||
this.core.shutdown();
|
this.core.shutdown();
|
||||||
this.core = null;
|
this.core = null;
|
||||||
}
|
}
|
||||||
if (this.world != null && ZenithConfig.CONFIG.enabled) {
|
if (this.world != null && VoxyConfig.CONFIG.enabled) {
|
||||||
this.core = new VoxelCore();
|
this.core = new VoxelCore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.mixin.sodium;
|
package me.cortex.voxy.client.mixin.sodium;
|
||||||
|
|
||||||
import me.jellysquid.mods.sodium.client.render.chunk.occlusion.OcclusionCuller;
|
import me.jellysquid.mods.sodium.client.render.chunk.occlusion.OcclusionCuller;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
package me.cortex.zenith.client.mixin.sodium;
|
package me.cortex.voxy.client.mixin.sodium;
|
||||||
|
|
||||||
import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer;
|
import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer;
|
||||||
import me.jellysquid.mods.sodium.client.render.chunk.occlusion.OcclusionCuller;
|
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(value = SodiumWorldRenderer.class, remap = false)
|
@Mixin(value = SodiumWorldRenderer.class, remap = false)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.terrain;
|
package me.cortex.voxy.client.terrain;
|
||||||
|
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.client.terrain;
|
package me.cortex.voxy.client.terrain;
|
||||||
|
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package me.cortex.zenith.client.terrain;
|
package me.cortex.voxy.client.terrain;
|
||||||
|
|
||||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
import com.mojang.brigadier.context.CommandContext;
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
import me.cortex.zenith.client.IGetVoxelCore;
|
import me.cortex.voxy.client.IGetVoxelCore;
|
||||||
import me.cortex.zenith.client.importers.WorldImporter;
|
import me.cortex.voxy.client.importers.WorldImporter;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.util;
|
package me.cortex.voxy.common.util;
|
||||||
|
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.util;
|
package me.cortex.voxy.common.util;
|
||||||
|
|
||||||
import java.lang.ref.Cleaner;
|
import java.lang.ref.Cleaner;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.util;
|
package me.cortex.voxy.common.util;
|
||||||
|
|
||||||
public class VolatileHolder <T> {
|
public class VolatileHolder <T> {
|
||||||
public volatile T obj;
|
public volatile T obj;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.voxelization;
|
package me.cortex.voxy.common.voxelization;
|
||||||
|
|
||||||
public interface I3dSupplier <T> {
|
public interface I3dSupplier <T> {
|
||||||
T supply(int x, int y, int z);
|
T supply(int x, int y, int z);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.voxelization;
|
package me.cortex.voxy.common.voxelization;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.zenith.common.voxelization;
|
package me.cortex.voxy.common.voxelization;
|
||||||
|
|
||||||
|
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
|
|
||||||
//16x16x16 block section
|
//16x16x16 block section
|
||||||
public class VoxelizedSection {
|
public class VoxelizedSection {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.zenith.common.voxelization;
|
package me.cortex.voxy.common.voxelization;
|
||||||
|
|
||||||
import me.cortex.zenith.common.world.other.Mipper;
|
import me.cortex.voxy.common.world.other.Mipper;
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.zenith.common.world;
|
package me.cortex.voxy.common.world;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||||
import me.cortex.zenith.common.util.VolatileHolder;
|
import me.cortex.voxy.common.util.VolatileHolder;
|
||||||
|
|
||||||
public class ActiveSectionTracker {
|
public class ActiveSectionTracker {
|
||||||
//Deserialize into the supplied section, returns true on success, false on failure
|
//Deserialize into the supplied section, returns true on success, false on failure
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world;
|
package me.cortex.voxy.common.world;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ShortOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ShortOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package me.cortex.zenith.common.world;
|
package me.cortex.voxy.common.world;
|
||||||
|
|
||||||
import me.cortex.zenith.common.voxelization.VoxelizedSection;
|
import me.cortex.voxy.common.voxelization.VoxelizedSection;
|
||||||
import me.cortex.zenith.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
import me.cortex.zenith.common.world.service.SectionSavingService;
|
import me.cortex.voxy.common.world.service.SectionSavingService;
|
||||||
import me.cortex.zenith.common.world.service.VoxelIngestService;
|
import me.cortex.voxy.common.world.service.VoxelIngestService;
|
||||||
import me.cortex.zenith.common.world.storage.StorageBackend;
|
import me.cortex.voxy.common.world.storage.StorageBackend;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world;
|
package me.cortex.voxy.common.world;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.zenith.common.world.other;
|
package me.cortex.voxy.common.world.other;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||||
import me.cortex.zenith.common.world.storage.StorageBackend;
|
import me.cortex.voxy.common.world.storage.StorageBackend;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.cortex.zenith.common.world.other;
|
package me.cortex.voxy.common.world.other;
|
||||||
|
|
||||||
import static me.cortex.zenith.common.world.other.Mapper.withLight;
|
import static me.cortex.voxy.common.world.other.Mapper.withLight;
|
||||||
|
|
||||||
//Mipper for data
|
//Mipper for data
|
||||||
public class Mipper {
|
public class Mipper {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package me.cortex.zenith.common.world.service;
|
package me.cortex.voxy.common.world.service;
|
||||||
|
|
||||||
import me.cortex.zenith.common.world.SaveLoadSystem;
|
import me.cortex.voxy.common.world.SaveLoadSystem;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import me.cortex.zenith.common.world.WorldSection;
|
import me.cortex.voxy.common.world.WorldSection;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package me.cortex.zenith.common.world.service;
|
package me.cortex.voxy.common.world.service;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.Pair;
|
import it.unimi.dsi.fastutil.Pair;
|
||||||
import me.cortex.zenith.common.voxelization.VoxelizedSection;
|
import me.cortex.voxy.common.voxelization.VoxelizedSection;
|
||||||
import me.cortex.zenith.common.voxelization.WorldConversionFactory;
|
import me.cortex.voxy.common.voxelization.WorldConversionFactory;
|
||||||
import me.cortex.zenith.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
import net.minecraft.util.math.ChunkSectionPos;
|
import net.minecraft.util.math.ChunkSectionPos;
|
||||||
import net.minecraft.world.LightType;
|
import net.minecraft.world.LightType;
|
||||||
import net.minecraft.world.chunk.ChunkNibbleArray;
|
import net.minecraft.world.chunk.ChunkNibbleArray;
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
package me.cortex.zenith.common.world.storage;
|
package me.cortex.voxy.common.world.storage;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ShortOpenHashMap;
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import me.cortex.zenith.common.world.storage.lmdb.LMDBStorageBackend;
|
import me.cortex.voxy.common.world.storage.lmdb.LMDBStorageBackend;
|
||||||
import net.minecraft.util.math.random.RandomSeed;
|
import net.minecraft.util.math.random.RandomSeed;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world.storage;
|
package me.cortex.voxy.common.world.storage;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
import org.lwjgl.util.lmdb.MDBVal;
|
import org.lwjgl.util.lmdb.MDBVal;
|
||||||
|
|
||||||
import static me.cortex.zenith.common.world.storage.lmdb.LMDBInterface.E;
|
import static me.cortex.voxy.common.world.storage.lmdb.LMDBInterface.E;
|
||||||
import static org.lwjgl.util.lmdb.LMDB.*;
|
import static org.lwjgl.util.lmdb.LMDB.*;
|
||||||
|
|
||||||
public class Cursor implements AutoCloseable {
|
public class Cursor implements AutoCloseable {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
import org.lwjgl.PointerBuffer;
|
import org.lwjgl.PointerBuffer;
|
||||||
import org.lwjgl.system.MemoryStack;
|
import org.lwjgl.system.MemoryStack;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import me.cortex.zenith.common.world.storage.StorageBackend;
|
import me.cortex.voxy.common.world.storage.StorageBackend;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
import org.lwjgl.util.lmdb.MDBVal;
|
import org.lwjgl.util.lmdb.MDBVal;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
import org.lwjgl.system.MemoryStack;
|
import org.lwjgl.system.MemoryStack;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
public interface TransactionWrappedCallback<T> {
|
public interface TransactionWrappedCallback<T> {
|
||||||
T exec(TransactionWrapper wrapper);
|
T exec(TransactionWrapper wrapper);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.zenith.common.world.storage.lmdb;
|
package me.cortex.voxy.common.world.storage.lmdb;
|
||||||
|
|
||||||
import org.lwjgl.PointerBuffer;
|
import org.lwjgl.PointerBuffer;
|
||||||
import org.lwjgl.system.MemoryStack;
|
import org.lwjgl.system.MemoryStack;
|
||||||
@@ -6,7 +6,7 @@ import org.lwjgl.util.lmdb.MDBVal;
|
|||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
import static me.cortex.zenith.common.world.storage.lmdb.LMDBInterface.E;
|
import static me.cortex.voxy.common.world.storage.lmdb.LMDBInterface.E;
|
||||||
import static org.lwjgl.system.MemoryStack.stackPush;
|
import static org.lwjgl.system.MemoryStack.stackPush;
|
||||||
import static org.lwjgl.util.lmdb.LMDB.*;
|
import static org.lwjgl.util.lmdb.LMDB.*;
|
||||||
|
|
||||||
@@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
layout(local_size_x = 128, local_size_y = 1, local_size_x = 1) in;
|
layout(local_size_x = 128, local_size_y = 1, local_size_x = 1) in;
|
||||||
|
|
||||||
#import <zenith:lod/gl46/quad_format.glsl>
|
#import <voxy:lod/gl46/quad_format.glsl>
|
||||||
#import <zenith:lod/gl46/bindings.glsl>
|
#import <voxy:lod/gl46/bindings.glsl>
|
||||||
#import <zenith:lod/gl46/frustum.glsl>
|
#import <voxy:lod/gl46/frustum.glsl>
|
||||||
#import <zenith:lod/gl46/section.glsl>
|
#import <voxy:lod/gl46/section.glsl>
|
||||||
#line 11
|
#line 11
|
||||||
|
|
||||||
//https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt
|
//https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#version 460 core
|
#version 460 core
|
||||||
#extension GL_ARB_gpu_shader_int64 : enable
|
#extension GL_ARB_gpu_shader_int64 : enable
|
||||||
#define VISIBILITY_ACCESS writeonly
|
#define VISIBILITY_ACCESS writeonly
|
||||||
#import <zenith:lod/gl46/bindings.glsl>
|
#import <voxy:lod/gl46/bindings.glsl>
|
||||||
layout(early_fragment_tests) in;
|
layout(early_fragment_tests) in;
|
||||||
|
|
||||||
flat in uint id;
|
flat in uint id;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#version 460 core
|
#version 460 core
|
||||||
#extension GL_ARB_gpu_shader_int64 : enable
|
#extension GL_ARB_gpu_shader_int64 : enable
|
||||||
#define VISIBILITY_ACCESS writeonly
|
#define VISIBILITY_ACCESS writeonly
|
||||||
#import <zenith:lod/gl46/bindings.glsl>
|
#import <voxy:lod/gl46/bindings.glsl>
|
||||||
#import <zenith:lod/gl46/section.glsl>
|
#import <voxy:lod/gl46/section.glsl>
|
||||||
|
|
||||||
flat out uint id;
|
flat out uint id;
|
||||||
flat out uint value;
|
flat out uint value;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#version 460 core
|
#version 460 core
|
||||||
#extension GL_ARB_gpu_shader_int64 : enable
|
#extension GL_ARB_gpu_shader_int64 : enable
|
||||||
|
|
||||||
#import <zenith:lod/gl46/quad_format.glsl>
|
#import <voxy:lod/gl46/quad_format.glsl>
|
||||||
#import <zenith:lod/gl46/bindings.glsl>
|
#import <voxy:lod/gl46/bindings.glsl>
|
||||||
#import <zenith:lod/gl46/block_model.glsl>
|
#import <voxy:lod/gl46/block_model.glsl>
|
||||||
#line 8
|
#line 8
|
||||||
|
|
||||||
layout(location = 0) out vec2 uv;
|
layout(location = 0) out vec2 uv;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
layout(binding=0) uniform sampler2D colourTexture;
|
|
||||||
in vec2 uv;
|
|
||||||
void main() {
|
|
||||||
gl_Colour = texture(colourTexture, uv);
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
void main() {
|
|
||||||
gl_Position =
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#version 460
|
|
||||||
layout(local_size_x = 32, local_size_y = 32, local_size_x = 1) in;
|
|
||||||
|
|
||||||
layout(binding=0,rgba8) restrict uniform image2D colourTexture;
|
|
||||||
layout(binding=1) uniform sampler2D depthTexture;
|
|
||||||
void main() {
|
|
||||||
float d = texture2D(depthTexture, vec2(gl_GlobalInvocationID.xy)/vec2(1024)).x;
|
|
||||||
d = 1/d;
|
|
||||||
d = d/2;
|
|
||||||
imageStore(colourTexture, ivec2(gl_GlobalInvocationID.xy), vec4(d,d,d,1));
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user