diff --git a/src/main/java/com/jozufozu/flywheel/FlywheelClient.java b/src/main/java/com/jozufozu/flywheel/FlywheelClient.java index 9846813f7..4b74ab5ce 100644 --- a/src/main/java/com/jozufozu/flywheel/FlywheelClient.java +++ b/src/main/java/com/jozufozu/flywheel/FlywheelClient.java @@ -1,8 +1,8 @@ package com.jozufozu.flywheel; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.backend.OptifineHandler; import com.jozufozu.flywheel.core.Contexts; -import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.StitchedSprite; import com.jozufozu.flywheel.core.compile.ProgramCompiler; @@ -18,15 +18,14 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; public class FlywheelClient { public static void clientInit() { - CrashReportCallables.registerCrashCallable("Flywheel Backend", () -> - Backend.getInstance().getBackendDescriptor()); + CrashReportCallables.registerCrashCallable("Flywheel Backend", Backend::getBackendDescriptor); + OptifineHandler.init(); Backend.init(); IEventBus modEventBus = FMLJavaModLoadingContext.get() .getModEventBus(); modEventBus.addListener(Contexts::flwInit); - modEventBus.addListener(Materials::flwInit); modEventBus.addListener(PartialModel::onModelRegistry); modEventBus.addListener(PartialModel::onModelBake); modEventBus.addListener(StitchedSprite::onTextureStitchPre); diff --git a/src/main/java/com/jozufozu/flywheel/backend/Backend.java b/src/main/java/com/jozufozu/flywheel/backend/Backend.java index b4f94e0af..b8cd61e82 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Backend.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Backend.java @@ -1,19 +1,11 @@ package com.jozufozu.flywheel.backend; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - import javax.annotation.Nullable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.lwjgl.opengl.GL; -import org.lwjgl.opengl.GLCapabilities; import com.jozufozu.flywheel.api.FlywheelWorld; -import com.jozufozu.flywheel.api.InstanceData; -import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.versioned.GlCompat; import com.jozufozu.flywheel.config.FlwConfig; import com.jozufozu.flywheel.config.FlwEngine; @@ -27,89 +19,39 @@ import net.minecraft.world.level.LevelAccessor; public class Backend { public static final Logger LOGGER = LogManager.getLogger(Backend.class); - protected static final Backend INSTANCE = new Backend(); - public static Backend getInstance() { - return INSTANCE; - } + private static FlwEngine engine; - private FlwEngine engine; + public static GlCompat compat; - public GLCapabilities capabilities; - public GlCompat compat; - - public final Loader loader; - private final Map> materialRegistry = new HashMap<>(); - private final Map programSpecRegistry = new HashMap<>(); - - protected Backend() { - loader = new Loader(this); - - OptifineHandler.init(); - } + private static final Loader loader = new Loader(); /** * Get a string describing the Flywheel backend. When there are eventually multiple backends * (Meshlet, MDI, GL31 Draw Instanced are planned), this will name which one is in use. */ - public String getBackendDescriptor() { + public static String getBackendDescriptor() { return engine == null ? "" : engine.getProperName(); } - public FlwEngine getEngine() { + public static FlwEngine getEngine() { return engine; } - /** - * Register a shader program. - */ - public ProgramSpec register(ProgramSpec spec) { - ResourceLocation name = spec.name; - if (programSpecRegistry.containsKey(name)) { - throw new IllegalStateException("Program spec '" + name + "' already registered."); - } - programSpecRegistry.put(name, spec); - return spec; - } - - /** - * Register an instancing material. - */ - public StructType register(ResourceLocation name, StructType spec) { - if (materialRegistry.containsKey(name)) { - throw new IllegalStateException("Material spec '" + name + "' already registered."); - } - materialRegistry.put(name, spec); - - LOGGER.debug("registered material '" + name + "' with instance size " + spec.getLayout().getStride()); - - return spec; - } - @Nullable - public ProgramSpec getSpec(ResourceLocation name) { - return programSpecRegistry.get(name); + public static ProgramSpec getSpec(ResourceLocation name) { + return loader.get(name); } - public void refresh() { + public static void refresh() { OptifineHandler.refresh(); - capabilities = GL.createCapabilities(); - - compat = new GlCompat(capabilities); + compat = new GlCompat(); engine = chooseEngine(compat); } - public Collection> allMaterials() { - return materialRegistry.values(); - } - - public Collection allPrograms() { - return programSpecRegistry.values(); - } - public static boolean isOn() { - return getInstance().engine != FlwEngine.OFF; + return engine != FlwEngine.OFF; } public static boolean canUseInstancing(@Nullable Level world) { @@ -137,18 +79,6 @@ public class Backend { RenderWork.enqueue(Minecraft.getInstance().levelRenderer::allChanged); } - /** - * INTERNAL USE ONLY - */ - void _clearContexts() { - GameStateRegistry.clear(); - programSpecRegistry.clear(); - materialRegistry.clear(); - } - - public static void init() { - } - private static FlwEngine chooseEngine(GlCompat compat) { FlwEngine preferredChoice = FlwConfig.get() .getEngine(); @@ -162,4 +92,12 @@ public class Backend { return canUseEngine ? preferredChoice : FlwEngine.OFF; } + + public static void init() { + // noop + } + + private Backend() { + throw new UnsupportedOperationException("Backend is a static class!"); + } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/Loader.java b/src/main/java/com/jozufozu/flywheel/backend/Loader.java index 49d9a5fab..9f0f9b43c 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Loader.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Loader.java @@ -1,15 +1,20 @@ package com.jozufozu.flywheel.backend; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Nullable; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.jozufozu.flywheel.backend.source.Resolver; -import com.jozufozu.flywheel.backend.source.ShaderSources; +import com.jozufozu.flywheel.core.GameStateRegistry; import com.jozufozu.flywheel.core.crumbling.CrumblingRenderer; import com.jozufozu.flywheel.core.shader.ProgramSpec; +import com.jozufozu.flywheel.core.source.Resolver; +import com.jozufozu.flywheel.core.source.ShaderSources; import com.jozufozu.flywheel.event.GatherContextEvent; import com.jozufozu.flywheel.util.ResourceUtil; import com.jozufozu.flywheel.util.StringUtil; @@ -37,13 +42,11 @@ public class Loader implements ResourceManagerReloadListener { public static final String PROGRAM_DIR = "flywheel/programs/"; private static final Gson GSON = new GsonBuilder().create(); - private final Backend backend; + private final Map programSpecRegistry = new HashMap<>(); private boolean firstLoad = true; - public Loader(Backend backend) { - this.backend = backend; - + Loader() { // Can be null when running datagenerators due to the unfortunate time we call this Minecraft minecraft = Minecraft.getInstance(); if (minecraft != null) { @@ -54,15 +57,20 @@ public class Loader implements ResourceManagerReloadListener { } } + @Nullable + public ProgramSpec get(ResourceLocation name) { + return programSpecRegistry.get(name); + } + @Override public void onResourceManagerReload(ResourceManager manager) { - backend.refresh(); + Backend.refresh(); - backend._clearContexts(); + GameStateRegistry._clear(); Resolver.INSTANCE.invalidate(); ModLoader.get() - .postEvent(new GatherContextEvent(backend, firstLoad)); + .postEvent(new GatherContextEvent(firstLoad)); ShaderSources sources = new ShaderSources(manager); @@ -101,10 +109,21 @@ public class Loader implements ResourceManagerReloadListener { spec.setName(specName); - backend.register(spec); + register(spec); } catch (Exception e) { Backend.LOGGER.error(e); } } } + + /** + * Register a shader program. + */ + private void register(ProgramSpec spec) { + ResourceLocation name = spec.name; + if (programSpecRegistry.containsKey(name)) { + throw new IllegalStateException("Program spec '" + name + "' already registered."); + } + programSpecRegistry.put(name, spec); + } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/GlBuffer.java b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/GlBuffer.java index 2c2e31e25..346db8814 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/GlBuffer.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/GlBuffer.java @@ -21,7 +21,7 @@ public abstract class GlBuffer extends GlObject { * @return A buffer that will be persistent if the driver supports it. */ public static GlBuffer requestPersistent(GlBufferType type) { - if (Backend.getInstance().compat.bufferStorageSupported()) { + if (Backend.compat.bufferStorageSupported()) { return new PersistentGlBuffer(type); } else { return new MappedGlBuffer(type); diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/PersistentGlBuffer.java b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/PersistentGlBuffer.java index fb783dc4f..6c4b474cd 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/PersistentGlBuffer.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/PersistentGlBuffer.java @@ -46,7 +46,7 @@ public class PersistentGlBuffer extends GlBuffer implements Mappable { fence.clear(); - Backend.getInstance().compat.bufferStorage.bufferStorage(type, size, flags); + Backend.compat.bufferStorage.bufferStorage(type, size, flags); ByteBuffer byteBuffer = GL30.glMapBufferRange(type.glEnum, 0, size, flags); diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java index 575e43c42..7148e134e 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL20; import com.jozufozu.flywheel.backend.gl.GlObject; import com.jozufozu.flywheel.backend.gl.versioned.GlCompat; -import com.jozufozu.flywheel.backend.source.ShaderLoadingException; +import com.jozufozu.flywheel.core.source.ShaderLoadingException; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/versioned/GlCompat.java b/src/main/java/com/jozufozu/flywheel/backend/gl/versioned/GlCompat.java index c44355940..0d550124f 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/versioned/GlCompat.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/versioned/GlCompat.java @@ -4,6 +4,7 @@ import java.nio.ByteBuffer; import java.util.Arrays; import org.lwjgl.PointerBuffer; +import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL20C; import org.lwjgl.opengl.GLCapabilities; import org.lwjgl.system.MemoryStack; @@ -23,11 +24,11 @@ public class GlCompat { public final BufferStorage bufferStorage; public final boolean amd; - public GlCompat(GLCapabilities caps) { + public GlCompat() { + GLCapabilities caps = GL.createCapabilities(); instancedArrays = getLatest(InstancedArrays.class, caps); bufferStorage = getLatest(BufferStorage.class, caps); - if (Util.getPlatform() == Util.OS.WINDOWS) { String vendor = GL20C.glGetString(GL20C.GL_VENDOR); // vendor string I got was "ATI Technologies Inc." diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java index 8274a2e06..387c1c1c4 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java @@ -39,8 +39,7 @@ public class InstanceWorld { this.taskEngine = new ParallelTaskEngine("Flywheel " + world.dimension().location()); this.taskEngine.startWorkers(); - FlwEngine engine = Backend.getInstance() - .getEngine(); + FlwEngine engine = Backend.getEngine(); switch (engine) { case INSTANCING -> { diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/GPUInstancer.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/GPUInstancer.java index 8705da724..ffac02ae3 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/GPUInstancer.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/GPUInstancer.java @@ -198,7 +198,7 @@ public class GPUInstancer extends AbstractInstancer { vao.bindAttributes(attributeBaseIndex, instanceFormat); for (int i = 0; i < instanceFormat.getAttributeCount(); i++) { - Backend.getInstance().compat.instancedArrays.vertexAttribDivisor(attributeBaseIndex + i, 1); + Backend.compat.instancedArrays.vertexAttribDivisor(attributeBaseIndex + i, 1); } } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancedMaterialGroup.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancedMaterialGroup.java index c16a9ef97..3e1ba850d 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancedMaterialGroup.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancedMaterialGroup.java @@ -37,7 +37,7 @@ public class InstancedMaterialGroup

implements MaterialG public InstancedMaterialGroup(InstancingEngine

owner, RenderType type) { this.owner = owner; this.type = type; - if (Backend.getInstance().compat.onAMDWindows()) { + if (Backend.compat.onAMDWindows()) { this.allocator = FallbackAllocator.INSTANCE; } else { this.allocator = new ModelPool(Formats.POS_TEX_NORMAL, 2048); diff --git a/src/main/java/com/jozufozu/flywheel/core/Contexts.java b/src/main/java/com/jozufozu/flywheel/core/Contexts.java index 66bf2b0f5..db5d448f6 100644 --- a/src/main/java/com/jozufozu/flywheel/core/Contexts.java +++ b/src/main/java/com/jozufozu/flywheel/core/Contexts.java @@ -1,13 +1,12 @@ package com.jozufozu.flywheel.core; import com.jozufozu.flywheel.Flywheel; -import com.jozufozu.flywheel.backend.GameStateRegistry; -import com.jozufozu.flywheel.backend.source.FileResolution; -import com.jozufozu.flywheel.backend.source.Resolver; import com.jozufozu.flywheel.core.compile.ProgramCompiler; import com.jozufozu.flywheel.core.crumbling.CrumblingProgram; import com.jozufozu.flywheel.core.shader.NormalDebugStateProvider; import com.jozufozu.flywheel.core.shader.WorldProgram; +import com.jozufozu.flywheel.core.source.FileResolution; +import com.jozufozu.flywheel.core.source.Resolver; import com.jozufozu.flywheel.event.GatherContextEvent; import com.jozufozu.flywheel.util.ResourceUtil; diff --git a/src/main/java/com/jozufozu/flywheel/backend/GameStateRegistry.java b/src/main/java/com/jozufozu/flywheel/core/GameStateRegistry.java similarity index 92% rename from src/main/java/com/jozufozu/flywheel/backend/GameStateRegistry.java rename to src/main/java/com/jozufozu/flywheel/core/GameStateRegistry.java index 2bdd425c0..c8626668e 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/GameStateRegistry.java +++ b/src/main/java/com/jozufozu/flywheel/core/GameStateRegistry.java @@ -1,10 +1,10 @@ -package com.jozufozu.flywheel.backend; +package com.jozufozu.flywheel.core; import java.util.HashMap; import java.util.Map; -import com.jozufozu.flywheel.core.compile.ShaderConstants; import com.jozufozu.flywheel.core.shader.GameStateProvider; +import com.jozufozu.flywheel.core.shader.ShaderConstants; import com.jozufozu.flywheel.core.shader.StateSnapshot; import net.minecraft.resources.ResourceLocation; @@ -13,7 +13,7 @@ public class GameStateRegistry { private static final Map registeredStateProviders = new HashMap<>(); - static void clear() { + public static void _clear() { registeredStateProviders.clear(); } diff --git a/src/main/java/com/jozufozu/flywheel/core/Materials.java b/src/main/java/com/jozufozu/flywheel/core/Materials.java index 238a6b052..fbf704aaa 100644 --- a/src/main/java/com/jozufozu/flywheel/core/Materials.java +++ b/src/main/java/com/jozufozu/flywheel/core/Materials.java @@ -2,12 +2,10 @@ package com.jozufozu.flywheel.core; import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.api.struct.StructType; -import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.core.materials.model.ModelType; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.materials.oriented.OrientedType; -import com.jozufozu.flywheel.event.GatherContextEvent; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; @@ -19,12 +17,6 @@ public class Materials { public static final StructType ORIENTED = new OrientedType(); public static final StructType TRANSFORMED = new ModelType(); - public static void flwInit(GatherContextEvent event) { - Backend backend = event.getBackend(); - backend.register(Names.ORIENTED, ORIENTED); - backend.register(Names.MODEL, TRANSFORMED); - } - public static class Names { public static final ResourceLocation MODEL = Flywheel.rl("model"); public static final ResourceLocation ORIENTED = Flywheel.rl("oriented"); diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/CompileUtil.java b/src/main/java/com/jozufozu/flywheel/core/compile/CompileUtil.java index d6a3b8bed..ca312e347 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/CompileUtil.java +++ b/src/main/java/com/jozufozu/flywheel/core/compile/CompileUtil.java @@ -1,10 +1,16 @@ package com.jozufozu.flywheel.core.compile; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import com.jozufozu.flywheel.backend.gl.GLSLVersion; import com.jozufozu.flywheel.backend.gl.shader.ShaderType; public class CompileUtil { + public static final Pattern vecType = Pattern.compile("^[biud]?vec([234])$"); + public static final Pattern matType = Pattern.compile("^mat([234])(?:x([234]))?$"); + protected static String generateHeader(GLSLVersion version, ShaderType type) { return "#version " + version @@ -13,4 +19,31 @@ public class CompileUtil { + "#extension GL_ARB_conservative_depth : enable\n" + type.getDefineStatement(); } + + public static int getElementCount(String type) { + Matcher vec = vecType.matcher(type); + if (vec.find()) return Integer.parseInt(vec.group(1)); + + Matcher mat = matType.matcher(type); + if (mat.find()) { + int n = Integer.parseInt(mat.group(1)); + + String m = mat.group(2); + + if (m != null) return Integer.parseInt(m) * n; + + return n; + } + + return 1; + } + + public static int getAttributeCount(CharSequence type) { + Matcher mat = matType.matcher(type); + if (mat.find()) { + return Integer.parseInt(mat.group(1)); + } + + return 1; + } } diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/FragmentCompiler.java b/src/main/java/com/jozufozu/flywheel/core/compile/FragmentCompiler.java index 3eaf09a42..535b688c5 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/FragmentCompiler.java +++ b/src/main/java/com/jozufozu/flywheel/core/compile/FragmentCompiler.java @@ -4,9 +4,11 @@ import java.util.Objects; import com.jozufozu.flywheel.backend.gl.shader.GlShader; import com.jozufozu.flywheel.backend.gl.shader.ShaderType; -import com.jozufozu.flywheel.backend.source.FileResolution; -import com.jozufozu.flywheel.backend.source.SourceFile; +import com.jozufozu.flywheel.core.shader.ShaderConstants; import com.jozufozu.flywheel.core.shader.StateSnapshot; +import com.jozufozu.flywheel.core.source.FileIndexImpl; +import com.jozufozu.flywheel.core.source.FileResolution; +import com.jozufozu.flywheel.core.source.SourceFile; public class FragmentCompiler extends Memoizer { private final FileResolution header; @@ -43,9 +45,23 @@ public class FragmentCompiler extends Memoizer */ -public class Template { - - private final Map metadata = new HashMap<>(); +public class Template extends Memoizer { private final Function reader; private final GLSLVersion glslVersion; @@ -34,7 +30,7 @@ public class Template { */ public T apply(SourceFile file) { // lazily read files, cache results - return metadata.computeIfAbsent(file, reader); + return super.get(file); } /** @@ -44,4 +40,13 @@ public class Template { return glslVersion; } + @Override + protected T _create(SourceFile key) { + return reader.apply(key); + } + + @Override + protected void _destroy(T value) { + // noop + } } diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/TypeHelper.java b/src/main/java/com/jozufozu/flywheel/core/compile/TypeHelper.java deleted file mode 100644 index 148168e7b..000000000 --- a/src/main/java/com/jozufozu/flywheel/core/compile/TypeHelper.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.jozufozu.flywheel.core.compile; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class TypeHelper { - - public static final Pattern vecType = Pattern.compile("^[biud]?vec([234])$"); - public static final Pattern matType = Pattern.compile("^mat([234])(?:x([234]))?$"); - - public static int getElementCount(String type) { - Matcher vec = vecType.matcher(type); - if (vec.find()) return Integer.parseInt(vec.group(1)); - - Matcher mat = matType.matcher(type); - if (mat.find()) { - int n = Integer.parseInt(mat.group(1)); - - String m = mat.group(2); - - if (m != null) return Integer.parseInt(m) * n; - - return n; - } - - return 1; - } - - public static int getAttributeCount(CharSequence type) { - Matcher mat = matType.matcher(type); - if (mat.find()) { - return Integer.parseInt(mat.group(1)); - } - - return 1; - } -} diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/VertexCompiler.java b/src/main/java/com/jozufozu/flywheel/core/compile/VertexCompiler.java index 2de890fdb..defec44c5 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/VertexCompiler.java +++ b/src/main/java/com/jozufozu/flywheel/core/compile/VertexCompiler.java @@ -5,9 +5,10 @@ import java.util.Objects; import com.jozufozu.flywheel.api.vertex.VertexType; import com.jozufozu.flywheel.backend.gl.shader.GlShader; import com.jozufozu.flywheel.backend.gl.shader.ShaderType; -import com.jozufozu.flywheel.backend.source.FileResolution; -import com.jozufozu.flywheel.backend.source.SourceFile; import com.jozufozu.flywheel.core.shader.StateSnapshot; +import com.jozufozu.flywheel.core.source.FileIndexImpl; +import com.jozufozu.flywheel.core.source.FileResolution; +import com.jozufozu.flywheel.core.source.SourceFile; public class VertexCompiler extends Memoizer { private final Template template; @@ -55,8 +56,19 @@ public class VertexCompiler extends Memoizer { } public static class Context { + /** + * The file to compile. + */ private final SourceFile file; + + /** + * The shader constants to apply. + */ private final StateSnapshot ctx; + + /** + * The vertex type to use. + */ private final VertexType vertexType; public Context(SourceFile file, StateSnapshot ctx, VertexType vertexType) { diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/VertexData.java b/src/main/java/com/jozufozu/flywheel/core/compile/VertexData.java index 4865ef0f3..7e3e40b34 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/VertexData.java +++ b/src/main/java/com/jozufozu/flywheel/core/compile/VertexData.java @@ -1,6 +1,7 @@ package com.jozufozu.flywheel.core.compile; import com.jozufozu.flywheel.api.vertex.VertexType; +import com.jozufozu.flywheel.core.source.FileIndex; public interface VertexData { /** diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/ExtensionInstance.java b/src/main/java/com/jozufozu/flywheel/core/shader/ExtensionInstance.java deleted file mode 100644 index 4875df7bf..000000000 --- a/src/main/java/com/jozufozu/flywheel/core/shader/ExtensionInstance.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jozufozu.flywheel.core.shader; - -import net.minecraft.resources.ResourceLocation; - -public interface ExtensionInstance { - - /** - * Bind the extra program state. It is recommended to grab the state information from global variables. - */ - void bind(); - - ResourceLocation name(); -} diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProvider.java index 9bf698ac9..0e9f26bed 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProvider.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProvider.java @@ -1,7 +1,5 @@ package com.jozufozu.flywheel.core.shader; -import com.jozufozu.flywheel.core.compile.ShaderConstants; - import net.minecraft.resources.ResourceLocation; public interface GameStateProvider { diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/NormalDebugStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/NormalDebugStateProvider.java index b8a340448..b907d0b0a 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/NormalDebugStateProvider.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/NormalDebugStateProvider.java @@ -2,7 +2,6 @@ package com.jozufozu.flywheel.core.shader; import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.config.FlwConfig; -import com.jozufozu.flywheel.core.compile.ShaderConstants; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/ProgramSpec.java b/src/main/java/com/jozufozu/flywheel/core/shader/ProgramSpec.java index fb03631f2..729203ba8 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/ProgramSpec.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/ProgramSpec.java @@ -1,8 +1,8 @@ package com.jozufozu.flywheel.core.shader; -import com.jozufozu.flywheel.backend.source.FileResolution; -import com.jozufozu.flywheel.backend.source.Resolver; -import com.jozufozu.flywheel.backend.source.SourceFile; +import com.jozufozu.flywheel.core.source.FileResolution; +import com.jozufozu.flywheel.core.source.Resolver; +import com.jozufozu.flywheel.core.source.SourceFile; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/ShaderConstants.java b/src/main/java/com/jozufozu/flywheel/core/shader/ShaderConstants.java similarity index 86% rename from src/main/java/com/jozufozu/flywheel/core/compile/ShaderConstants.java rename to src/main/java/com/jozufozu/flywheel/core/shader/ShaderConstants.java index 165e25112..ed56ab006 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/ShaderConstants.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/ShaderConstants.java @@ -1,12 +1,16 @@ -package com.jozufozu.flywheel.core.compile; +package com.jozufozu.flywheel.core.shader; import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * A class for manipulating a list of {@code #define} directives. + * + *

Based loosely on code by jellysquid3. + */ public class ShaderConstants { - private final Map definitions = new HashMap<>(); public ShaderConstants define(String def) { diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/StateSnapshot.java b/src/main/java/com/jozufozu/flywheel/core/shader/StateSnapshot.java index e11b7c0f2..b55dd84bb 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/StateSnapshot.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/StateSnapshot.java @@ -1,7 +1,6 @@ package com.jozufozu.flywheel.core.shader; -import com.jozufozu.flywheel.backend.GameStateRegistry; -import com.jozufozu.flywheel.core.compile.ShaderConstants; +import com.jozufozu.flywheel.core.GameStateRegistry; public record StateSnapshot(long ctx) { // TODO: is this needed? diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/WorldFog.java b/src/main/java/com/jozufozu/flywheel/core/shader/WorldFog.java index b6aa01a11..6d94a42c5 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/WorldFog.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/WorldFog.java @@ -2,15 +2,10 @@ package com.jozufozu.flywheel.core.shader; import org.lwjgl.opengl.GL20; -import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.backend.gl.shader.GlProgram; import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.resources.ResourceLocation; - -public class WorldFog implements ExtensionInstance { - - public static final ResourceLocation NAME = Flywheel.rl("fog"); +public class WorldFog { private final int uFogColor; private final int uFogRange; @@ -20,14 +15,8 @@ public class WorldFog implements ExtensionInstance { this.uFogRange = program.getUniformLocation("uFogRange"); } - @Override public void bind() { GL20.glUniform2f(uFogRange, RenderSystem.getShaderFogStart(), RenderSystem.getShaderFogEnd()); GL20.glUniform4fv(uFogColor, RenderSystem.getShaderFogColor()); } - - @Override - public ResourceLocation name() { - return NAME; - } } diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/FileIndex.java b/src/main/java/com/jozufozu/flywheel/core/source/FileIndex.java similarity index 73% rename from src/main/java/com/jozufozu/flywheel/core/compile/FileIndex.java rename to src/main/java/com/jozufozu/flywheel/core/source/FileIndex.java index 48e435a6c..91ce1e36e 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/FileIndex.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/FileIndex.java @@ -1,7 +1,6 @@ -package com.jozufozu.flywheel.core.compile; +package com.jozufozu.flywheel.core.source; -import com.jozufozu.flywheel.backend.source.SourceFile; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public interface FileIndex { /** diff --git a/src/main/java/com/jozufozu/flywheel/core/compile/FileIndexImpl.java b/src/main/java/com/jozufozu/flywheel/core/source/FileIndexImpl.java similarity index 87% rename from src/main/java/com/jozufozu/flywheel/core/compile/FileIndexImpl.java rename to src/main/java/com/jozufozu/flywheel/core/source/FileIndexImpl.java index 0958c094e..90a1cc4ba 100644 --- a/src/main/java/com/jozufozu/flywheel/core/compile/FileIndexImpl.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/FileIndexImpl.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.core.compile; +package com.jozufozu.flywheel.core.source; import java.util.ArrayList; import java.util.List; @@ -6,9 +6,8 @@ import java.util.List; import javax.annotation.Nullable; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.source.SourceFile; -import com.jozufozu.flywheel.backend.source.error.ErrorBuilder; -import com.jozufozu.flywheel.backend.source.error.ErrorReporter; +import com.jozufozu.flywheel.core.source.error.ErrorBuilder; +import com.jozufozu.flywheel.core.source.error.ErrorReporter; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/FileResolution.java b/src/main/java/com/jozufozu/flywheel/core/source/FileResolution.java similarity index 93% rename from src/main/java/com/jozufozu/flywheel/backend/source/FileResolution.java rename to src/main/java/com/jozufozu/flywheel/core/source/FileResolution.java index 9a5d2fd9c..86c9dadd0 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/FileResolution.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/FileResolution.java @@ -1,12 +1,12 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.source.error.ErrorBuilder; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.error.ErrorBuilder; +import com.jozufozu.flywheel.core.source.span.Span; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/Index.java b/src/main/java/com/jozufozu/flywheel/core/source/Index.java similarity index 85% rename from src/main/java/com/jozufozu/flywheel/backend/source/Index.java rename to src/main/java/com/jozufozu/flywheel/core/source/Index.java index 4ebc6540c..dfcad42c5 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/Index.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/Index.java @@ -1,12 +1,12 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.util.Collection; import java.util.Map; import com.google.common.collect.Multimap; import com.google.common.collect.MultimapBuilder; -import com.jozufozu.flywheel.backend.source.parse.ShaderFunction; -import com.jozufozu.flywheel.backend.source.parse.ShaderStruct; +import com.jozufozu.flywheel.core.source.parse.ShaderFunction; +import com.jozufozu.flywheel.core.source.parse.ShaderStruct; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/Resolver.java b/src/main/java/com/jozufozu/flywheel/core/source/Resolver.java similarity index 97% rename from src/main/java/com/jozufozu/flywheel/backend/source/Resolver.java rename to src/main/java/com/jozufozu/flywheel/core/source/Resolver.java index c48eb0b6e..9abea7354 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/Resolver.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/Resolver.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/ShaderLoadingException.java b/src/main/java/com/jozufozu/flywheel/core/source/ShaderLoadingException.java similarity index 79% rename from src/main/java/com/jozufozu/flywheel/backend/source/ShaderLoadingException.java rename to src/main/java/com/jozufozu/flywheel/core/source/ShaderLoadingException.java index 19024e686..36ca1dc73 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/ShaderLoadingException.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/ShaderLoadingException.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; public class ShaderLoadingException extends RuntimeException { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/ShaderSources.java b/src/main/java/com/jozufozu/flywheel/core/source/ShaderSources.java similarity index 97% rename from src/main/java/com/jozufozu/flywheel/backend/source/ShaderSources.java rename to src/main/java/com/jozufozu/flywheel/core/source/ShaderSources.java index 97f4acead..b7e29c2a4 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/ShaderSources.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/ShaderSources.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java b/src/main/java/com/jozufozu/flywheel/core/source/SourceFile.java similarity index 93% rename from src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java rename to src/main/java/com/jozufozu/flywheel/core/source/SourceFile.java index 6f4b04e87..c2a13f21c 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/SourceFile.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.util.ArrayList; import java.util.HashMap; @@ -10,13 +10,12 @@ import java.util.regex.Pattern; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.jozufozu.flywheel.backend.source.parse.Import; -import com.jozufozu.flywheel.backend.source.parse.ShaderFunction; -import com.jozufozu.flywheel.backend.source.parse.ShaderStruct; -import com.jozufozu.flywheel.backend.source.span.ErrorSpan; -import com.jozufozu.flywheel.backend.source.span.Span; -import com.jozufozu.flywheel.backend.source.span.StringSpan; -import com.jozufozu.flywheel.core.compile.FileIndex; +import com.jozufozu.flywheel.core.source.parse.Import; +import com.jozufozu.flywheel.core.source.parse.ShaderFunction; +import com.jozufozu.flywheel.core.source.parse.ShaderStruct; +import com.jozufozu.flywheel.core.source.span.ErrorSpan; +import com.jozufozu.flywheel.core.source.span.Span; +import com.jozufozu.flywheel.core.source.span.StringSpan; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFinder.java b/src/main/java/com/jozufozu/flywheel/core/source/SourceFinder.java similarity index 84% rename from src/main/java/com/jozufozu/flywheel/backend/source/SourceFinder.java rename to src/main/java/com/jozufozu/flywheel/core/source/SourceFinder.java index 09d5f8d90..50ced811f 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFinder.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/SourceFinder.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import javax.annotation.Nullable; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/SourceLines.java b/src/main/java/com/jozufozu/flywheel/core/source/SourceLines.java similarity index 95% rename from src/main/java/com/jozufozu/flywheel/backend/source/SourceLines.java rename to src/main/java/com/jozufozu/flywheel/core/source/SourceLines.java index 6fd722744..f9ade475c 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/SourceLines.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/SourceLines.java @@ -1,10 +1,10 @@ -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.backend.source.span.CharPos; +import com.jozufozu.flywheel.core.source.span.CharPos; import com.jozufozu.flywheel.util.StringUtil; import it.unimi.dsi.fastutil.ints.IntArrayList; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorBuilder.java b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java similarity index 82% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorBuilder.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java index 04578dc41..2732a97fb 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorBuilder.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error; +package com.jozufozu.flywheel.core.source.error; import java.util.ArrayList; import java.util.List; @@ -7,16 +7,16 @@ import java.util.regex.Pattern; import javax.annotation.Nullable; -import com.jozufozu.flywheel.backend.source.SourceFile; -import com.jozufozu.flywheel.backend.source.SourceLines; -import com.jozufozu.flywheel.backend.source.error.lines.ErrorLine; -import com.jozufozu.flywheel.backend.source.error.lines.FileLine; -import com.jozufozu.flywheel.backend.source.error.lines.HeaderLine; -import com.jozufozu.flywheel.backend.source.error.lines.SourceLine; -import com.jozufozu.flywheel.backend.source.error.lines.SpanHighlightLine; -import com.jozufozu.flywheel.backend.source.error.lines.TextLine; -import com.jozufozu.flywheel.backend.source.span.Span; -import com.jozufozu.flywheel.core.compile.FileIndex; +import com.jozufozu.flywheel.core.source.FileIndex; +import com.jozufozu.flywheel.core.source.SourceFile; +import com.jozufozu.flywheel.core.source.SourceLines; +import com.jozufozu.flywheel.core.source.error.lines.ErrorLine; +import com.jozufozu.flywheel.core.source.error.lines.FileLine; +import com.jozufozu.flywheel.core.source.error.lines.HeaderLine; +import com.jozufozu.flywheel.core.source.error.lines.SourceLine; +import com.jozufozu.flywheel.core.source.error.lines.SpanHighlightLine; +import com.jozufozu.flywheel.core.source.error.lines.TextLine; +import com.jozufozu.flywheel.core.source.span.Span; import com.jozufozu.flywheel.util.FlwUtil; public class ErrorBuilder { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorLevel.java b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorLevel.java similarity index 80% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorLevel.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/ErrorLevel.java index cbd161969..e45345124 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorLevel.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorLevel.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error; +package com.jozufozu.flywheel.core.source.error; public enum ErrorLevel { WARN("warn"), diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorReporter.java b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java similarity index 89% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorReporter.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java index 7a11ee253..fc9a1568d 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/ErrorReporter.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java @@ -1,14 +1,14 @@ -package com.jozufozu.flywheel.backend.source.error; +package com.jozufozu.flywheel.core.source.error; import java.util.List; import java.util.Optional; import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.source.SourceFile; -import com.jozufozu.flywheel.backend.source.parse.ShaderFunction; -import com.jozufozu.flywheel.backend.source.parse.ShaderStruct; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.SourceFile; +import com.jozufozu.flywheel.core.source.parse.ShaderFunction; +import com.jozufozu.flywheel.core.source.parse.ShaderStruct; +import com.jozufozu.flywheel.core.source.span.Span; import com.jozufozu.flywheel.util.FlwUtil; public class ErrorReporter { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/Divider.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/Divider.java similarity index 75% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/Divider.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/Divider.java index a24c21c4b..c9206c740 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/Divider.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/Divider.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public enum Divider { BAR(" | "), diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/ErrorLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/ErrorLine.java similarity index 83% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/ErrorLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/ErrorLine.java index cac9900cb..985275be6 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/ErrorLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/ErrorLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public interface ErrorLine { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/FileLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/FileLine.java similarity index 80% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/FileLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/FileLine.java index b39bf3494..f1facc2d5 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/FileLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/FileLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public record FileLine(String fileName) implements ErrorLine { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/HeaderLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/HeaderLine.java similarity index 78% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/HeaderLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/HeaderLine.java index 5ed78ec06..e806cc399 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/HeaderLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/HeaderLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public record HeaderLine(String level, CharSequence message) implements ErrorLine { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SourceLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/SourceLine.java similarity index 84% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SourceLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/SourceLine.java index 496e411fc..f790fd08c 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SourceLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/SourceLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public record SourceLine(String number, String line) implements ErrorLine { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SpanHighlightLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/SpanHighlightLine.java similarity index 88% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SpanHighlightLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/SpanHighlightLine.java index 379ab82ea..2d2bf9431 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/SpanHighlightLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/SpanHighlightLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public class SpanHighlightLine implements ErrorLine { private final String line; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/TextLine.java b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/TextLine.java similarity index 66% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/lines/TextLine.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/lines/TextLine.java index beb66c60c..e5ff86ff0 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/lines/TextLine.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/lines/TextLine.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.error.lines; +package com.jozufozu.flywheel.core.source.error.lines; public record TextLine(String msg) implements ErrorLine { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/span/package-info.java b/src/main/java/com/jozufozu/flywheel/core/source/error/package-info.java similarity index 77% rename from src/main/java/com/jozufozu/flywheel/backend/source/span/package-info.java rename to src/main/java/com/jozufozu/flywheel/core/source/error/package-info.java index 4119b8241..3533088ae 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/span/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/package-info.java @@ -1,5 +1,5 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package com.jozufozu.flywheel.backend.source.span; +package com.jozufozu.flywheel.core.source.error; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/package-info.java b/src/main/java/com/jozufozu/flywheel/core/source/package-info.java similarity index 78% rename from src/main/java/com/jozufozu/flywheel/backend/source/package-info.java rename to src/main/java/com/jozufozu/flywheel/core/source/package-info.java index bb8d86f6d..18f315f87 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/package-info.java @@ -1,5 +1,5 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package com.jozufozu.flywheel.backend.source; +package com.jozufozu.flywheel.core.source; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/AbstractShaderElement.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/AbstractShaderElement.java similarity index 57% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/AbstractShaderElement.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/AbstractShaderElement.java index 594ae4d02..d230d013e 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/AbstractShaderElement.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/AbstractShaderElement.java @@ -1,6 +1,6 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public abstract class AbstractShaderElement { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/Import.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/Import.java similarity index 76% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/Import.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/Import.java index 239518d84..0a357671b 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/Import.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/Import.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; import java.util.ArrayList; import java.util.List; @@ -6,11 +6,11 @@ import java.util.Optional; import javax.annotation.Nullable; -import com.jozufozu.flywheel.backend.source.FileResolution; -import com.jozufozu.flywheel.backend.source.Resolver; -import com.jozufozu.flywheel.backend.source.SourceFile; -import com.jozufozu.flywheel.backend.source.error.ErrorReporter; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.FileResolution; +import com.jozufozu.flywheel.core.source.Resolver; +import com.jozufozu.flywheel.core.source.SourceFile; +import com.jozufozu.flywheel.core.source.error.ErrorReporter; +import com.jozufozu.flywheel.core.source.span.Span; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderFunction.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderFunction.java similarity index 94% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderFunction.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderFunction.java index 92feb12a8..9dfe551de 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderFunction.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderFunction.java @@ -1,11 +1,11 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public class ShaderFunction extends AbstractShaderElement { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderStruct.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderStruct.java similarity index 93% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderStruct.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderStruct.java index 80200ff32..e3db7fd29 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/ShaderStruct.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/ShaderStruct.java @@ -1,11 +1,11 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public class ShaderStruct extends AbstractShaderElement { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/StructField.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/StructField.java similarity index 82% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/StructField.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/StructField.java index 77e03f555..961ea3441 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/StructField.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/StructField.java @@ -1,8 +1,8 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; import java.util.regex.Pattern; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public class StructField extends AbstractShaderElement { public static final Pattern fieldPattern = Pattern.compile("(\\S+)\\s*(\\S+);"); diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/Variable.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/Variable.java similarity index 87% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/Variable.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/Variable.java index 342684a73..0d6f9aa99 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/Variable.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/Variable.java @@ -1,6 +1,6 @@ -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; -import com.jozufozu.flywheel.backend.source.span.Span; +import com.jozufozu.flywheel.core.source.span.Span; public class Variable extends AbstractShaderElement { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/parse/package-info.java b/src/main/java/com/jozufozu/flywheel/core/source/parse/package-info.java similarity index 76% rename from src/main/java/com/jozufozu/flywheel/backend/source/parse/package-info.java rename to src/main/java/com/jozufozu/flywheel/core/source/parse/package-info.java index 61225f714..0984aedc8 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/parse/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/parse/package-info.java @@ -1,6 +1,6 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package com.jozufozu.flywheel.backend.source.parse; +package com.jozufozu.flywheel.core.source.parse; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/span/CharPos.java b/src/main/java/com/jozufozu/flywheel/core/source/span/CharPos.java similarity index 63% rename from src/main/java/com/jozufozu/flywheel/backend/source/span/CharPos.java rename to src/main/java/com/jozufozu/flywheel/core/source/span/CharPos.java index d402a65fc..617cfa0a7 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/span/CharPos.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/span/CharPos.java @@ -1,4 +1,4 @@ -package com.jozufozu.flywheel.backend.source.span; +package com.jozufozu.flywheel.core.source.span; /** * A position in a file. diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/span/ErrorSpan.java b/src/main/java/com/jozufozu/flywheel/core/source/span/ErrorSpan.java similarity index 85% rename from src/main/java/com/jozufozu/flywheel/backend/source/span/ErrorSpan.java rename to src/main/java/com/jozufozu/flywheel/core/source/span/ErrorSpan.java index c73ba195e..5c4cd39e1 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/span/ErrorSpan.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/span/ErrorSpan.java @@ -1,6 +1,6 @@ -package com.jozufozu.flywheel.backend.source.span; +package com.jozufozu.flywheel.core.source.span; -import com.jozufozu.flywheel.backend.source.SourceFile; +import com.jozufozu.flywheel.core.source.SourceFile; /** * Represents a (syntactically) malformed segment of code. diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/span/Span.java b/src/main/java/com/jozufozu/flywheel/core/source/span/Span.java similarity index 95% rename from src/main/java/com/jozufozu/flywheel/backend/source/span/Span.java rename to src/main/java/com/jozufozu/flywheel/core/source/span/Span.java index 1b812fde9..61961a979 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/span/Span.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/span/Span.java @@ -1,8 +1,8 @@ -package com.jozufozu.flywheel.backend.source.span; +package com.jozufozu.flywheel.core.source.span; import java.util.regex.Matcher; -import com.jozufozu.flywheel.backend.source.SourceFile; +import com.jozufozu.flywheel.core.source.SourceFile; /** * A segment of code in a {@link SourceFile}. diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/span/StringSpan.java b/src/main/java/com/jozufozu/flywheel/core/source/span/StringSpan.java similarity index 82% rename from src/main/java/com/jozufozu/flywheel/backend/source/span/StringSpan.java rename to src/main/java/com/jozufozu/flywheel/core/source/span/StringSpan.java index 4712c6b74..f91be1f6d 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/span/StringSpan.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/span/StringSpan.java @@ -1,6 +1,6 @@ -package com.jozufozu.flywheel.backend.source.span; +package com.jozufozu.flywheel.core.source.span; -import com.jozufozu.flywheel.backend.source.SourceFile; +import com.jozufozu.flywheel.core.source.SourceFile; public class StringSpan extends Span { diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/error/package-info.java b/src/main/java/com/jozufozu/flywheel/core/source/span/package-info.java similarity index 76% rename from src/main/java/com/jozufozu/flywheel/backend/source/error/package-info.java rename to src/main/java/com/jozufozu/flywheel/core/source/span/package-info.java index 250db26d8..1ee6ddb46 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/source/error/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/span/package-info.java @@ -1,5 +1,5 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package com.jozufozu.flywheel.backend.source.error; +package com.jozufozu.flywheel.core.source.span; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/event/ForgeEvents.java b/src/main/java/com/jozufozu/flywheel/event/ForgeEvents.java index c91713235..9ca6cd351 100644 --- a/src/main/java/com/jozufozu/flywheel/event/ForgeEvents.java +++ b/src/main/java/com/jozufozu/flywheel/event/ForgeEvents.java @@ -24,8 +24,7 @@ public class ForgeEvents { ArrayList right = event.getRight(); - String text = "Flywheel: " + Backend.getInstance() - .getBackendDescriptor(); + String text = "Flywheel: " + Backend.getBackendDescriptor(); if (right.size() < 10) { right.add(""); right.add(text); diff --git a/src/main/java/com/jozufozu/flywheel/event/GatherContextEvent.java b/src/main/java/com/jozufozu/flywheel/event/GatherContextEvent.java index df5a6307b..ffbc76341 100644 --- a/src/main/java/com/jozufozu/flywheel/event/GatherContextEvent.java +++ b/src/main/java/com/jozufozu/flywheel/event/GatherContextEvent.java @@ -1,24 +1,16 @@ package com.jozufozu.flywheel.event; -import com.jozufozu.flywheel.backend.Backend; - import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.fml.event.IModBusEvent; public class GatherContextEvent extends Event implements IModBusEvent { - private final Backend backend; private final boolean firstLoad; - public GatherContextEvent(Backend backend, boolean firstLoad) { - this.backend = backend; + public GatherContextEvent(boolean firstLoad) { this.firstLoad = firstLoad; } - public Backend getBackend() { - return backend; - } - /** * @return true iff it is the first time the event is fired. */ diff --git a/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java index 026105389..f45d12978 100644 --- a/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java @@ -67,8 +67,7 @@ public class LevelRendererMixin { @Inject(at = @At("TAIL"), method = "allChanged") private void refresh(CallbackInfo ci) { - Backend.getInstance() - .refresh(); + Backend.refresh(); MinecraftForge.EVENT_BUS.post(new ReloadRenderersEvent(level)); }