diff --git a/.gitignore b/.gitignore index 4cc901d7b..a2c6f6b87 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ # gradle .gradle/ -/build/ +fabric/build +common/build +forge/build out/ classes/ @@ -31,3 +33,5 @@ bin/ # fabric run/ + +.architectury-transformer/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index d7d0d90a8..ffd728f16 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,12 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id "architectury-plugin" version "3.4-SNAPSHOT" + id "dev.architectury.loom" version "1.3-SNAPSHOT" apply false id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group +architectury { + minecraft = rootProject.minecraft_version +} project.ext.lwjglVersion = "3.3.2" project.ext.jomlVersion = "1.10.4" @@ -17,87 +15,59 @@ project.ext.linuxNatives = "natives-linux" project.ext.macosNatives = "natives-macos" project.ext.macosArmNatives = "natives-macos-arm64" -dependencies { - include(implementation("org.lwjgl:lwjgl-vulkan:$lwjglVersion")) - - include(implementation("org.lwjgl:lwjgl-vma:$lwjglVersion")) - include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$winNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$linuxNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosArmNatives")) +subprojects { + apply plugin: "java" + apply plugin: "architectury-plugin" + apply plugin: "dev.architectury.loom" + apply plugin: "maven-publish" - include(implementation("org.lwjgl:lwjgl-shaderc:$lwjglVersion")) - include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$winNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$linuxNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosArmNatives")) + archivesBaseName = project.archives_base_name + version = project.mod_version + group = project.maven_group - //MoltenVK - include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives")) - include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives")) -} - -repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. -} + tasks.withType(JavaCompile) { + options.encoding = "UTF-8" + options.release = 17 + } -dependencies { - // To change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings loom.officialMojangMappings() - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + java { + withSourcesJar() + } - // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" -} + loom { + silentMojangMappingsLicense() + } -processResources { - inputs.property "version", project.version + dependencies { + minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" + // The following line declares the mojmap mappings, you may use other mappings as well + mappings loom.officialMojangMappings() - filesMatching("fabric.mod.json") { - expand "version": project.version } } -tasks.withType(JavaCompile).configureEach { - // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. - it.options.release = 17 -} - -loom { - accessWidenerPath = file("src/main/resources/vulkanmod.accesswidener") -} +allprojects { + apply plugin: "architectury-plugin" + apply plugin: "maven-publish" -java { - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() + repositories { + maven { url 'https://jitpack.io' } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } + } } -jar { +/*jar { from("LICENSE") { rename { "${it}_${project.archivesBaseName}"} } -} - -// configure the maven publication -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - } - } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - // Notice: This block does NOT have the same function as the block in the top level. - // The repositories here will be used for publishing your artifact, not for - // retrieving dependencies. - } -} +}*/ diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 000000000..7704f7f66 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,42 @@ +architectury { + common(rootProject.enabled_platforms.split(",")) +} + +loom { + accessWidenerPath = file("src/main/resources/vulkanmod.accesswidener") +} + +dependencies { + // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies + // Do NOT use other classes from fabric loader + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + // Remove the next line if you don't want to depend on the API + + include(implementation("org.lwjgl:lwjgl-vulkan:$lwjglVersion")) + include(implementation("org.lwjgl:lwjgl-vma:$lwjglVersion")) +// include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$winNatives")) +// include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$linuxNatives")) + + include(implementation("org.lwjgl:lwjgl-shaderc:$lwjglVersion")) +// include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$winNatives")) +// include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$linuxNatives")) + + //MacOS + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosArmNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosArmNatives")) + + include(compileOnly("com.google.code.findbugs:jsr305:3.0.2")) +} + +publishing { + publications { + mavenCommon(MavenPublication) { + artifactId = rootProject.archives_base_name + from components.java + } + } +} diff --git a/src/main/java/net/vulkanmod/Initializer.java b/common/src/main/java/net/vulkanmod/Initializer.java similarity index 54% rename from src/main/java/net/vulkanmod/Initializer.java rename to common/src/main/java/net/vulkanmod/Initializer.java index 390ae24ae..469e76313 100644 --- a/src/main/java/net/vulkanmod/Initializer.java +++ b/common/src/main/java/net/vulkanmod/Initializer.java @@ -1,7 +1,5 @@ package net.vulkanmod; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.loader.api.FabricLoader; import net.vulkanmod.config.Config; import net.vulkanmod.config.VideoResolution; import org.apache.logging.log4j.LogManager; @@ -9,31 +7,15 @@ import java.nio.file.Path; -public class Initializer implements ClientModInitializer { +public class Initializer { public static final Logger LOGGER = LogManager.getLogger("VulkanMod"); - private static String VERSION; - public static Config CONFIG; - - @Override - public void onInitializeClient() { - - VERSION = FabricLoader.getInstance() - .getModContainer("vulkanmod") - .get() - .getMetadata() - .getVersion().getFriendlyString(); - + public static Config CONFIG = loadConfig(VulkanModExpectPlatform.getConfigDirectory().resolve("vulkanmod_settings.json")); + public static final String MODID = "vulkanmod"; + public static void onInitializeClient() { + VERSION = VulkanModExpectPlatform.getVersion(); LOGGER.info("== VulkanMod =="); - VideoResolution.init(); - - var configPath = FabricLoader.getInstance() - .getConfigDir() - .resolve("vulkanmod_settings.json"); - - CONFIG = loadConfig(configPath); - } private static Config loadConfig(Path path) { @@ -48,4 +30,4 @@ private static Config loadConfig(Path path) { public static String getVersion() { return VERSION; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/vulkanmod/VulkanModExpectPlatform.java b/common/src/main/java/net/vulkanmod/VulkanModExpectPlatform.java new file mode 100644 index 000000000..f4c983333 --- /dev/null +++ b/common/src/main/java/net/vulkanmod/VulkanModExpectPlatform.java @@ -0,0 +1,19 @@ +package net.vulkanmod; + +import dev.architectury.injectables.annotations.ExpectPlatform; + +import java.nio.file.Path; + +public class VulkanModExpectPlatform { + + @ExpectPlatform + public static Path getConfigDirectory() { + // Just throw an error, the content should get replaced at runtime. + throw new AssertionError(); + } + + @ExpectPlatform + public static String getVersion() { + throw new AssertionError(); + } +} diff --git a/src/main/java/net/vulkanmod/config/Config.java b/common/src/main/java/net/vulkanmod/config/Config.java similarity index 100% rename from src/main/java/net/vulkanmod/config/Config.java rename to common/src/main/java/net/vulkanmod/config/Config.java diff --git a/src/main/java/net/vulkanmod/config/CyclingOption.java b/common/src/main/java/net/vulkanmod/config/CyclingOption.java similarity index 100% rename from src/main/java/net/vulkanmod/config/CyclingOption.java rename to common/src/main/java/net/vulkanmod/config/CyclingOption.java diff --git a/src/main/java/net/vulkanmod/config/Option.java b/common/src/main/java/net/vulkanmod/config/Option.java similarity index 100% rename from src/main/java/net/vulkanmod/config/Option.java rename to common/src/main/java/net/vulkanmod/config/Option.java diff --git a/src/main/java/net/vulkanmod/config/OptionList2.java b/common/src/main/java/net/vulkanmod/config/OptionList2.java similarity index 100% rename from src/main/java/net/vulkanmod/config/OptionList2.java rename to common/src/main/java/net/vulkanmod/config/OptionList2.java diff --git a/src/main/java/net/vulkanmod/config/OptionScreenV.java b/common/src/main/java/net/vulkanmod/config/OptionScreenV.java similarity index 100% rename from src/main/java/net/vulkanmod/config/OptionScreenV.java rename to common/src/main/java/net/vulkanmod/config/OptionScreenV.java diff --git a/src/main/java/net/vulkanmod/config/Options.java b/common/src/main/java/net/vulkanmod/config/Options.java similarity index 97% rename from src/main/java/net/vulkanmod/config/Options.java rename to common/src/main/java/net/vulkanmod/config/Options.java index a6401f89c..1d25d1edb 100644 --- a/src/main/java/net/vulkanmod/config/Options.java +++ b/common/src/main/java/net/vulkanmod/config/Options.java @@ -3,10 +3,7 @@ import com.mojang.blaze3d.platform.Window; import net.minecraft.client.*; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.contents.LiteralContents; -import net.minecraft.network.chat.contents.TranslatableContents; import net.vulkanmod.Initializer; -import net.vulkanmod.vulkan.Drawer; import net.vulkanmod.vulkan.Renderer; public class Options { @@ -51,9 +48,7 @@ public static Option[] getVideoOpts() { new SwitchOption("VSync", value -> { minecraftOptions.enableVsync().set(value); - if (Minecraft.getInstance().getWindow() != null) { - Minecraft.getInstance().getWindow().updateVsync(value); - } + Minecraft.getInstance().getWindow().updateVsync(value); }, () -> minecraftOptions.enableVsync().get()), new CyclingOption<>("Gui Scale", diff --git a/src/main/java/net/vulkanmod/config/RangeOption.java b/common/src/main/java/net/vulkanmod/config/RangeOption.java similarity index 100% rename from src/main/java/net/vulkanmod/config/RangeOption.java rename to common/src/main/java/net/vulkanmod/config/RangeOption.java diff --git a/src/main/java/net/vulkanmod/config/SliderWidgetImpl.java b/common/src/main/java/net/vulkanmod/config/SliderWidgetImpl.java similarity index 100% rename from src/main/java/net/vulkanmod/config/SliderWidgetImpl.java rename to common/src/main/java/net/vulkanmod/config/SliderWidgetImpl.java diff --git a/src/main/java/net/vulkanmod/config/SwitchOption.java b/common/src/main/java/net/vulkanmod/config/SwitchOption.java similarity index 100% rename from src/main/java/net/vulkanmod/config/SwitchOption.java rename to common/src/main/java/net/vulkanmod/config/SwitchOption.java diff --git a/src/main/java/net/vulkanmod/config/VideoResolution.java b/common/src/main/java/net/vulkanmod/config/VideoResolution.java similarity index 97% rename from src/main/java/net/vulkanmod/config/VideoResolution.java rename to common/src/main/java/net/vulkanmod/config/VideoResolution.java index 032ebcb17..dc4c5f574 100644 --- a/src/main/java/net/vulkanmod/config/VideoResolution.java +++ b/common/src/main/java/net/vulkanmod/config/VideoResolution.java @@ -2,6 +2,7 @@ import com.mojang.blaze3d.platform.VideoMode; import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWVidMode; @@ -51,7 +52,8 @@ public int[] refreshRates() { } public static void init() { - RenderSystem.assertOnRenderThread(); + + RenderSystem.assertOnRenderThreadOrInit(); GLFW.glfwInit(); videoResolutions = populateVideoResolutions(GLFW.glfwGetPrimaryMonitor()); } diff --git a/src/main/java/net/vulkanmod/config/widget/CustomButtonWidget.java b/common/src/main/java/net/vulkanmod/config/widget/CustomButtonWidget.java similarity index 100% rename from src/main/java/net/vulkanmod/config/widget/CustomButtonWidget.java rename to common/src/main/java/net/vulkanmod/config/widget/CustomButtonWidget.java diff --git a/src/main/java/net/vulkanmod/config/widget/CyclingOptionWidget.java b/common/src/main/java/net/vulkanmod/config/widget/CyclingOptionWidget.java similarity index 100% rename from src/main/java/net/vulkanmod/config/widget/CyclingOptionWidget.java rename to common/src/main/java/net/vulkanmod/config/widget/CyclingOptionWidget.java diff --git a/src/main/java/net/vulkanmod/config/widget/OptionWidget.java b/common/src/main/java/net/vulkanmod/config/widget/OptionWidget.java similarity index 100% rename from src/main/java/net/vulkanmod/config/widget/OptionWidget.java rename to common/src/main/java/net/vulkanmod/config/widget/OptionWidget.java diff --git a/src/main/java/net/vulkanmod/config/widget/RangeOptionWidget.java b/common/src/main/java/net/vulkanmod/config/widget/RangeOptionWidget.java similarity index 100% rename from src/main/java/net/vulkanmod/config/widget/RangeOptionWidget.java rename to common/src/main/java/net/vulkanmod/config/widget/RangeOptionWidget.java diff --git a/src/main/java/net/vulkanmod/config/widget/SwitchOptionWidget.java b/common/src/main/java/net/vulkanmod/config/widget/SwitchOptionWidget.java similarity index 100% rename from src/main/java/net/vulkanmod/config/widget/SwitchOptionWidget.java rename to common/src/main/java/net/vulkanmod/config/widget/SwitchOptionWidget.java diff --git a/src/main/java/net/vulkanmod/gl/GlFramebuffer.java b/common/src/main/java/net/vulkanmod/gl/GlFramebuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/gl/GlFramebuffer.java rename to common/src/main/java/net/vulkanmod/gl/GlFramebuffer.java diff --git a/src/main/java/net/vulkanmod/gl/GlTexture.java b/common/src/main/java/net/vulkanmod/gl/GlTexture.java similarity index 61% rename from src/main/java/net/vulkanmod/gl/GlTexture.java rename to common/src/main/java/net/vulkanmod/gl/GlTexture.java index dfe6879a2..3177b092f 100644 --- a/src/main/java/net/vulkanmod/gl/GlTexture.java +++ b/common/src/main/java/net/vulkanmod/gl/GlTexture.java @@ -1,16 +1,19 @@ package net.vulkanmod.gl; +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.systems.RenderSystem; import it.unimi.dsi.fastutil.ints.Int2ReferenceOpenHashMap; import net.vulkanmod.vulkan.texture.VTextureSelector; import net.vulkanmod.vulkan.texture.VulkanImage; import org.jetbrains.annotations.Nullable; +import org.lwjgl.opengl.GL11; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; import java.nio.IntBuffer; -import static org.lwjgl.vulkan.VK10.VK_FORMAT_R8G8B8A8_UNORM; +import static org.lwjgl.vulkan.VK10.*; public class GlTexture { private static int ID_COUNT = 0; @@ -25,12 +28,12 @@ public static int genTextureId() { return id; } - public static void bindTexture(int i) { - if(i == -1) + public static void bindTexture(int id) { + if(id == -1) return; - boundTextureId = i; - boundTexture = map.get(i); + boundTextureId = id; + boundTexture = map.get(id); if(boundTexture == null) throw new NullPointerException("bound texture is null"); @@ -52,6 +55,8 @@ public static void texImage2D(int target, int level, int internalFormat, int wid if(width == 0 || height == 0) return; + boundTexture.internalFormat = internalFormat; + if(width != boundTexture.vulkanImage.width || height != boundTexture.vulkanImage.height || vulkanFormat(format, type) != boundTexture.vulkanImage.format) { boundTexture.allocateVulkanImage(width, height); } @@ -59,7 +64,6 @@ public static void texImage2D(int target, int level, int internalFormat, int wid boundTexture.uploadImage(pixels); } - public static void texSubImage2D(int target, int level, int xOffset, int yOffset, int width, int height, int format, int type, @Nullable ByteBuffer pixels) { if(width == 0 || height == 0) return; @@ -67,14 +71,32 @@ public static void texSubImage2D(int target, int level, int xOffset, int yOffset VTextureSelector.uploadSubTexture(level, width, height, xOffset, yOffset,0, 0, width, pixels); } + public static int getTexLevelParameter(int target, int level, int pName) { + if(boundTexture == null || target == GL11.GL_TEXTURE_2D) + return -1; + + return switch (pName) { + case GL11.GL_TEXTURE_INTERNAL_FORMAT -> getGlFormat(boundTexture.vulkanImage.format); + case GL11.GL_TEXTURE_WIDTH -> boundTexture.vulkanImage.width; + case GL11.GL_TEXTURE_HEIGHT -> boundTexture.vulkanImage.height; + + default -> -1; + }; + } + public static void setVulkanImage(int id, VulkanImage vulkanImage) { GlTexture texture = map.get(id); texture.vulkanImage = vulkanImage; } + public static GlTexture getBoundTexture() { + return boundTexture; + } + final int id; VulkanImage vulkanImage; + int internalFormat; public GlTexture(int id) { this.id = id; @@ -93,8 +115,15 @@ private void uploadImage(@Nullable ByteBuffer pixels) { int height = this.vulkanImage.height; if(pixels != null) { -// if(pixels.remaining() != width * height * 4) -// throw new IllegalArgumentException("buffer size does not match image size"); + + if(internalFormat == GL11.GL_RGB && vulkanImage.format == VK_FORMAT_R8G8B8A8_UNORM) { + + ByteBuffer RGBA_buffer = Util.RGBtoRGBA_buffer(pixels); + this.vulkanImage.uploadSubTextureAsync(0, width, height, 0, 0, 0, 0, 0, RGBA_buffer); + MemoryUtil.memFree(RGBA_buffer); + + return; + } this.vulkanImage.uploadSubTextureAsync(0, width, height, 0, 0, 0, 0, 0, pixels); } @@ -105,11 +134,24 @@ private void uploadImage(@Nullable ByteBuffer pixels) { } } + public VulkanImage getVulkanImage() { + return vulkanImage; + } + + public void setVulkanImage(VulkanImage vulkanImage) { + this.vulkanImage = vulkanImage; + } + private static int vulkanFormat(int glFormat, int type) { return switch (glFormat) { - case 6408 -> + case GL11.GL_RGBA -> switch (type) { - case 5121 -> VK_FORMAT_R8G8B8A8_UNORM; + case GL11.GL_UNSIGNED_BYTE -> VK_FORMAT_R8G8B8A8_UNORM; + default -> throw new IllegalStateException("Unexpected value: " + type); + }; + case GL11.GL_RED -> + switch (type) { + case GL11.GL_UNSIGNED_BYTE -> VK_FORMAT_R8_UNORM; default -> throw new IllegalStateException("Unexpected value: " + type); }; @@ -117,4 +159,12 @@ private static int vulkanFormat(int glFormat, int type) { }; } + public static int getGlFormat(int vFormat) { + return switch (vFormat) { + case VK_FORMAT_R8G8B8A8_UNORM -> GL11.GL_RGBA; + case VK_FORMAT_R8_UNORM -> GL11.GL_RED; + default -> throw new IllegalStateException("Unexpected value: " + vFormat); + }; + } + } diff --git a/common/src/main/java/net/vulkanmod/gl/Util.java b/common/src/main/java/net/vulkanmod/gl/Util.java new file mode 100644 index 000000000..58695af8b --- /dev/null +++ b/common/src/main/java/net/vulkanmod/gl/Util.java @@ -0,0 +1,36 @@ +package net.vulkanmod.gl; + +import net.vulkanmod.vulkan.shader.SPIRVUtils; +import org.apache.commons.lang3.Validate; +import org.lwjgl.system.MemoryUtil; + +import java.nio.ByteBuffer; + +public class Util { + + public static SPIRVUtils.ShaderKind extToShaderKind(String in) { + return switch (in) { + case ".vsh" -> SPIRVUtils.ShaderKind.VERTEX_SHADER; + case ".fsh" -> SPIRVUtils.ShaderKind.FRAGMENT_SHADER; + default -> throw new RuntimeException("unknown shader type: " + in); + }; + } + + //Created buffer will need to be freed + public static ByteBuffer RGBtoRGBA_buffer(ByteBuffer in) { + Validate.isTrue(in.remaining() % 3 == 0, "bytebuffer is not RGB"); + + int outSize = in.remaining() * 4 / 3; + ByteBuffer out = MemoryUtil.memAlloc(outSize); + + int j = 0; + for(int i = 0; i < outSize; i+=4, j+=3) { + out.put(i, in.get(j)); + out.put(i + 1, in.get(j + 1)); + out.put(i + 2, in.get(j + 2)); + out.put(i + 3, (byte) 0xFF); + } + + return out; + } +} diff --git a/src/main/java/net/vulkanmod/interfaces/ExtendedVertexBuilder.java b/common/src/main/java/net/vulkanmod/interfaces/ExtendedVertexBuilder.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/ExtendedVertexBuilder.java rename to common/src/main/java/net/vulkanmod/interfaces/ExtendedVertexBuilder.java diff --git a/src/main/java/net/vulkanmod/interfaces/FrustumMixed.java b/common/src/main/java/net/vulkanmod/interfaces/FrustumMixed.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/FrustumMixed.java rename to common/src/main/java/net/vulkanmod/interfaces/FrustumMixed.java diff --git a/src/main/java/net/vulkanmod/interfaces/ModelPartCubeMixed.java b/common/src/main/java/net/vulkanmod/interfaces/ModelPartCubeMixed.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/ModelPartCubeMixed.java rename to common/src/main/java/net/vulkanmod/interfaces/ModelPartCubeMixed.java diff --git a/src/main/java/net/vulkanmod/interfaces/ShaderMixed.java b/common/src/main/java/net/vulkanmod/interfaces/ShaderMixed.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/ShaderMixed.java rename to common/src/main/java/net/vulkanmod/interfaces/ShaderMixed.java diff --git a/src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java b/common/src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java similarity index 55% rename from src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java rename to common/src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java index 5a5b0c9e8..846051989 100644 --- a/src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java +++ b/common/src/main/java/net/vulkanmod/interfaces/VAbstractTextureI.java @@ -4,11 +4,11 @@ public interface VAbstractTextureI { - public void bindTexture(); + void bindTexture(); void setId(int i); - public VulkanImage getVulkanImage(); + VulkanImage getVulkanImage(); - public void setVulkanImage(VulkanImage image); + void setVulkanImage(VulkanImage image); } diff --git a/src/main/java/net/vulkanmod/interfaces/VertexFormatMixed.java b/common/src/main/java/net/vulkanmod/interfaces/VertexFormatMixed.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/VertexFormatMixed.java rename to common/src/main/java/net/vulkanmod/interfaces/VertexFormatMixed.java diff --git a/src/main/java/net/vulkanmod/interfaces/VisibilitySetExtended.java b/common/src/main/java/net/vulkanmod/interfaces/VisibilitySetExtended.java similarity index 100% rename from src/main/java/net/vulkanmod/interfaces/VisibilitySetExtended.java rename to common/src/main/java/net/vulkanmod/interfaces/VisibilitySetExtended.java diff --git a/src/main/java/net/vulkanmod/mixin/MixinPlugin.java b/common/src/main/java/net/vulkanmod/mixin/MixinPlugin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/MixinPlugin.java rename to common/src/main/java/net/vulkanmod/mixin/MixinPlugin.java diff --git a/src/main/java/net/vulkanmod/mixin/WindowMixin.java b/common/src/main/java/net/vulkanmod/mixin/WindowMixin.java similarity index 96% rename from src/main/java/net/vulkanmod/mixin/WindowMixin.java rename to common/src/main/java/net/vulkanmod/mixin/WindowMixin.java index 296144834..b062023ba 100644 --- a/src/main/java/net/vulkanmod/mixin/WindowMixin.java +++ b/common/src/main/java/net/vulkanmod/mixin/WindowMixin.java @@ -66,12 +66,10 @@ private GLCapabilities redirect2() { return null; } - @Inject(method = "", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwCreateWindow(IILjava/lang/CharSequence;JJ)J")) +/* @Inject(method = "", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwCreateWindow(IILjava/lang/CharSequence;JJ)J")) private void vulkanHint(WindowEventHandler windowEventHandler, ScreenManager screenManager, DisplayData displayData, String string, String string2, CallbackInfo ci) { GLFW.glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); -// GLFW.glfwWindowHint(GLFW_AUTO_ICONIFY, GLFW_FALSE); -// GLFW.glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE); - } + }*/ @Inject(method = "", at = @At(value = "RETURN")) private void getHandle(WindowEventHandler windowEventHandler, ScreenManager screenManager, DisplayData displayData, String string, String string2, CallbackInfo ci) { diff --git a/src/main/java/net/vulkanmod/mixin/chunk/DirectionMixin.java b/common/src/main/java/net/vulkanmod/mixin/chunk/DirectionMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/chunk/DirectionMixin.java rename to common/src/main/java/net/vulkanmod/mixin/chunk/DirectionMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/chunk/FrustumMixin.java b/common/src/main/java/net/vulkanmod/mixin/chunk/FrustumMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/chunk/FrustumMixin.java rename to common/src/main/java/net/vulkanmod/mixin/chunk/FrustumMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java b/common/src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java similarity index 90% rename from src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java rename to common/src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java index eaa178a2c..50412e710 100644 --- a/src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java +++ b/common/src/main/java/net/vulkanmod/mixin/chunk/LevelRendererMixin.java @@ -183,21 +183,6 @@ private void popProfiler2(PoseStack poseStack, Matrix4f matrix4f, float f, doubl profiler.pop(); } - @Inject(method = "renderLevel", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" - , shift = At.Shift.BEFORE)) - private void pushProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { - Profiler2 profiler = Profiler2.getMainProfiler(); - profiler.push("particles"); - } - - @Inject(method = "renderLevel", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" - , shift = At.Shift.AFTER)) - private void popProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { - Profiler2 profiler = Profiler2.getMainProfiler(); - profiler.pop(); - } /** * @author diff --git a/src/main/java/net/vulkanmod/mixin/chunk/VisibilitySetMixin.java b/common/src/main/java/net/vulkanmod/mixin/chunk/VisibilitySetMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/chunk/VisibilitySetMixin.java rename to common/src/main/java/net/vulkanmod/mixin/chunk/VisibilitySetMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/compatibility/EffectInstanceM.java b/common/src/main/java/net/vulkanmod/mixin/compatibility/EffectInstanceM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/compatibility/EffectInstanceM.java rename to common/src/main/java/net/vulkanmod/mixin/compatibility/EffectInstanceM.java diff --git a/src/main/java/net/vulkanmod/mixin/compatibility/ProgramM.java b/common/src/main/java/net/vulkanmod/mixin/compatibility/ProgramM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/compatibility/ProgramM.java rename to common/src/main/java/net/vulkanmod/mixin/compatibility/ProgramM.java diff --git a/src/main/java/net/vulkanmod/mixin/compatibility/UniformM.java b/common/src/main/java/net/vulkanmod/mixin/compatibility/UniformM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/compatibility/UniformM.java rename to common/src/main/java/net/vulkanmod/mixin/compatibility/UniformM.java diff --git a/src/main/java/net/vulkanmod/mixin/compatibility/gl/GL11M.java b/common/src/main/java/net/vulkanmod/mixin/compatibility/gl/GL11M.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/compatibility/gl/GL11M.java rename to common/src/main/java/net/vulkanmod/mixin/compatibility/gl/GL11M.java diff --git a/src/main/java/net/vulkanmod/mixin/debug/ChunkBorderRendererM.java b/common/src/main/java/net/vulkanmod/mixin/debug/ChunkBorderRendererM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/debug/ChunkBorderRendererM.java rename to common/src/main/java/net/vulkanmod/mixin/debug/ChunkBorderRendererM.java diff --git a/src/main/java/net/vulkanmod/mixin/debug/DebugScreenOverlayM.java b/common/src/main/java/net/vulkanmod/mixin/debug/DebugScreenOverlayM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/debug/DebugScreenOverlayM.java rename to common/src/main/java/net/vulkanmod/mixin/debug/DebugScreenOverlayM.java diff --git a/src/main/java/net/vulkanmod/mixin/debug/GlDebugInfoM.java b/common/src/main/java/net/vulkanmod/mixin/debug/GlDebugInfoM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/debug/GlDebugInfoM.java rename to common/src/main/java/net/vulkanmod/mixin/debug/GlDebugInfoM.java diff --git a/src/main/java/net/vulkanmod/mixin/debug/KeyboardHandlerM.java b/common/src/main/java/net/vulkanmod/mixin/debug/KeyboardHandlerM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/debug/KeyboardHandlerM.java rename to common/src/main/java/net/vulkanmod/mixin/debug/KeyboardHandlerM.java diff --git a/src/main/java/net/vulkanmod/mixin/gui/ChatComponentM.java b/common/src/main/java/net/vulkanmod/mixin/gui/ChatComponentM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/gui/ChatComponentM.java rename to common/src/main/java/net/vulkanmod/mixin/gui/ChatComponentM.java diff --git a/src/main/java/net/vulkanmod/mixin/gui/DebugHudM.java b/common/src/main/java/net/vulkanmod/mixin/gui/DebugHudM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/gui/DebugHudM.java rename to common/src/main/java/net/vulkanmod/mixin/gui/DebugHudM.java diff --git a/src/main/java/net/vulkanmod/mixin/gui/GuiM.java b/common/src/main/java/net/vulkanmod/mixin/gui/GuiM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/gui/GuiM.java rename to common/src/main/java/net/vulkanmod/mixin/gui/GuiM.java diff --git a/src/main/java/net/vulkanmod/mixin/matrix/Matrix4fM.java b/common/src/main/java/net/vulkanmod/mixin/matrix/Matrix4fM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/matrix/Matrix4fM.java rename to common/src/main/java/net/vulkanmod/mixin/matrix/Matrix4fM.java diff --git a/src/main/java/net/vulkanmod/mixin/profiling/GuiMixin.java b/common/src/main/java/net/vulkanmod/mixin/profiling/GuiMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/profiling/GuiMixin.java rename to common/src/main/java/net/vulkanmod/mixin/profiling/GuiMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java b/common/src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java similarity index 82% rename from src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java rename to common/src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java index 94df0a672..9f6ea57cd 100644 --- a/src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java +++ b/common/src/main/java/net/vulkanmod/mixin/profiling/KeyboardHandlerM.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.KeyboardHandler; import net.minecraft.client.Minecraft; +import net.vulkanmod.render.profiling.BuildTimeBench; import net.vulkanmod.render.profiling.ProfilerOverlay; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,5 +20,9 @@ private void injOverlayToggle(long l, int i, int j, int k, int m, CallbackInfo c if(InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 342) && i == 297) // if(i == 297) ProfilerOverlay.shouldRender = !ProfilerOverlay.shouldRender; + + if(InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 342) && i == 299) { + BuildTimeBench.startBench(); + } } } diff --git a/src/main/java/net/vulkanmod/mixin/render/BufferUploaderM.java b/common/src/main/java/net/vulkanmod/mixin/render/BufferUploaderM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/BufferUploaderM.java rename to common/src/main/java/net/vulkanmod/mixin/render/BufferUploaderM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/GameRendererMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/GameRendererMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/GameRendererMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/GameRendererMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/GlProgramManagerMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/GlProgramManagerMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/GlProgramManagerMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/GlProgramManagerMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java b/common/src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java similarity index 95% rename from src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java rename to common/src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java index 59a39e54f..5538f78cc 100644 --- a/src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java +++ b/common/src/main/java/net/vulkanmod/mixin/render/GlStateManagerM.java @@ -133,6 +133,14 @@ public static void _texParameter(int i, int j, float k) { //TODO } + /** + * @author + */ + @Overwrite(remap = false) + public static int _getTexLevelParameter(int i, int j, int k) { + return GlTexture.getTexLevelParameter(i, j, k); + } + /** * @author */ @@ -275,6 +283,12 @@ public static void _glBindRenderbuffer(int i, int j) { GlFramebuffer.bindRenderbuffer(i, j); } + /** + * @author + */ + @Overwrite(remap = false) + public static void _glBindAttribLocation(int i, int j, CharSequence charSequence) {} + /** * @author */ diff --git a/src/main/java/net/vulkanmod/mixin/render/LevelRendererMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/LevelRendererMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/LevelRendererMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/LevelRendererMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/MainTargetMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/MainTargetMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/MainTargetMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/MainTargetMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java similarity index 98% rename from src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java index 61ec528a4..15b2e33b1 100644 --- a/src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java +++ b/common/src/main/java/net/vulkanmod/mixin/render/MinecraftMixin.java @@ -108,12 +108,12 @@ private Optional removeTimer() { return Optional.empty(); } - @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;tick()V"), +/* @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;tick()V"), locals = LocalCapture.CAPTURE_FAILHARD) private void redirectResourceTick(boolean bl, CallbackInfo ci, long l, Runnable runnable, int i, int j) { int n = Math.min(10, i) - 1; SpriteUtil.setDoUpload(j == n); - } + }*/ @Inject(method = "runTick", at = @At(value = "HEAD")) private void resetBuffers(boolean bl, CallbackInfo ci) { diff --git a/src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java similarity index 98% rename from src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java index cc496e4f4..6683425bb 100644 --- a/src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java +++ b/common/src/main/java/net/vulkanmod/mixin/render/RenderSystemMixin.java @@ -51,12 +51,11 @@ public static void assertOnGameThreadOrInit() { @Overwrite public static void _setShaderTexture(int i, ResourceLocation location) { if (i >= 0 && i < shaderTextures.length) { - TextureManager texturemanager = Minecraft.getInstance().getTextureManager(); - AbstractTexture abstracttexture = texturemanager.getTexture(location); - //abstracttexture.bindTexture(); - VTextureSelector.bindTexture(i, ((VAbstractTextureI)abstracttexture).getVulkanImage()); + TextureManager textureManager = Minecraft.getInstance().getTextureManager(); + AbstractTexture abstractTexture = textureManager.getTexture(location); + VTextureSelector.bindTexture(i, ((VAbstractTextureI)abstractTexture).getVulkanImage()); - //shaderTextures[i] = abstracttexture.getId(); + //shaderTextures[i] = abstractTexture.getId(); } } diff --git a/src/main/java/net/vulkanmod/mixin/render/RenderTargetMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/RenderTargetMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/RenderTargetMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/RenderTargetMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java b/common/src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java similarity index 96% rename from src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java rename to common/src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java index a90f86280..cbe2ff293 100644 --- a/src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java +++ b/common/src/main/java/net/vulkanmod/mixin/render/ShaderInstanceM.java @@ -77,9 +77,6 @@ private static void loadProgram(ResourceProvider factory, Program.Type type, Str cir.cancel(); } - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/shaders/Uniform;glBindAttribLocation(IILjava/lang/CharSequence;)V")) - private void bindAttr(int program, int index, CharSequence name) {} - /** * @author */ diff --git a/src/main/java/net/vulkanmod/mixin/render/entity/EntityRendererM.java b/common/src/main/java/net/vulkanmod/mixin/render/entity/EntityRendererM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/entity/EntityRendererM.java rename to common/src/main/java/net/vulkanmod/mixin/render/entity/EntityRendererM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/model/ModelPartCubeM.java b/common/src/main/java/net/vulkanmod/mixin/render/model/ModelPartCubeM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/model/ModelPartCubeM.java rename to common/src/main/java/net/vulkanmod/mixin/render/model/ModelPartCubeM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/model/ModelPartM.java b/common/src/main/java/net/vulkanmod/mixin/render/model/ModelPartM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/model/ModelPartM.java rename to common/src/main/java/net/vulkanmod/mixin/render/model/ModelPartM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/BufferBuilderM.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/BufferBuilderM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/BufferBuilderM.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/BufferBuilderM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/FaceBakeryM.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/FaceBakeryM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/FaceBakeryM.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/FaceBakeryM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/IndexTypeMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/IndexTypeMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/IndexTypeMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/IndexTypeMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/VertexBufferM.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexBufferM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/VertexBufferM.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexBufferM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/VertexConsumerM.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexConsumerM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/VertexConsumerM.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexConsumerM.java diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/VertexFormatMixin.java b/common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexFormatMixin.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/render/vertex/VertexFormatMixin.java rename to common/src/main/java/net/vulkanmod/mixin/render/vertex/VertexFormatMixin.java diff --git a/src/main/java/net/vulkanmod/mixin/screen/OptionsScreenM.java b/common/src/main/java/net/vulkanmod/mixin/screen/OptionsScreenM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/screen/OptionsScreenM.java rename to common/src/main/java/net/vulkanmod/mixin/screen/OptionsScreenM.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java similarity index 93% rename from src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java index 200b1177c..75d048036 100644 --- a/src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java +++ b/common/src/main/java/net/vulkanmod/mixin/texture/MAbstractTexture.java @@ -71,12 +71,14 @@ public void bindTexture() { if (vulkanImage != null) VTextureSelector.bindTexture(vulkanImage); - else - VTextureSelector.bindTexture(VTextureSelector.getWhiteTexture()); } public VulkanImage getVulkanImage() { - return vulkanImage; + if(vulkanImage != null) + return vulkanImage; + else { + return GlTexture.getTexture(this.id).getVulkanImage(); + } } public void setVulkanImage(VulkanImage image) { diff --git a/src/main/java/net/vulkanmod/mixin/texture/MDynamicTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MDynamicTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MDynamicTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MDynamicTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MFontTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MFontTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MFontTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MFontTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MLightTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MLightTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MLightTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MLightTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MNativeImage.java b/common/src/main/java/net/vulkanmod/mixin/texture/MNativeImage.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MNativeImage.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MNativeImage.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MOverlayTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MOverlayTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MOverlayTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MOverlayTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MPlayerSkinTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MPlayerSkinTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MPlayerSkinTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MPlayerSkinTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MSimpleTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MSimpleTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MSimpleTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MSimpleTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MSpriteAtlasTexture.java b/common/src/main/java/net/vulkanmod/mixin/texture/MSpriteAtlasTexture.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MSpriteAtlasTexture.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MSpriteAtlasTexture.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MSpriteContents.java b/common/src/main/java/net/vulkanmod/mixin/texture/MSpriteContents.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MSpriteContents.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MSpriteContents.java diff --git a/src/main/java/net/vulkanmod/mixin/texture/MTextureManager.java b/common/src/main/java/net/vulkanmod/mixin/texture/MTextureManager.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/texture/MTextureManager.java rename to common/src/main/java/net/vulkanmod/mixin/texture/MTextureManager.java diff --git a/common/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java b/common/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java new file mode 100644 index 000000000..c632e976e --- /dev/null +++ b/common/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java @@ -0,0 +1,44 @@ +package net.vulkanmod.mixin.texture; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.platform.TextureUtil; +import net.vulkanmod.gl.GlTexture; +import net.vulkanmod.vulkan.texture.VTextureSelector; +import net.vulkanmod.vulkan.texture.VulkanImage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(TextureUtil.class) +public class MTextureUtil { + + /** + * @author + */ + @Overwrite(remap = false) + public static int generateTextureId() { + return GlTexture.genTextureId(); + } + + /** + * @author + */ + @Overwrite(remap = false) + public static void prepareImage(NativeImage.InternalGlFormat internalGlFormat, int id, int mipLevels, int width, int height) { + GlTexture.bindTexture(id); + GlTexture glTexture = GlTexture.getBoundTexture(); + VulkanImage image = glTexture.getVulkanImage(); + + if(image == null || image.mipLevels != mipLevels || image.width != width || image.height != height) { + if(image != null) + image.free(); + + image = new VulkanImage.Builder(width, height) + .setLinearFiltering(false) + .setClamp(false) + .createVulkanImage(); + + glTexture.setVulkanImage(image); + VTextureSelector.bindTexture(image); + } + } +} diff --git a/src/main/java/net/vulkanmod/mixin/util/ScreenshotRecorderM.java b/common/src/main/java/net/vulkanmod/mixin/util/ScreenshotRecorderM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/util/ScreenshotRecorderM.java rename to common/src/main/java/net/vulkanmod/mixin/util/ScreenshotRecorderM.java diff --git a/src/main/java/net/vulkanmod/mixin/vertex/SpriteCoordinateExpanderM.java b/common/src/main/java/net/vulkanmod/mixin/vertex/SpriteCoordinateExpanderM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/vertex/SpriteCoordinateExpanderM.java rename to common/src/main/java/net/vulkanmod/mixin/vertex/SpriteCoordinateExpanderM.java diff --git a/src/main/java/net/vulkanmod/mixin/vertex/VertexMultiConsumersM.java b/common/src/main/java/net/vulkanmod/mixin/vertex/VertexMultiConsumersM.java similarity index 100% rename from src/main/java/net/vulkanmod/mixin/vertex/VertexMultiConsumersM.java rename to common/src/main/java/net/vulkanmod/mixin/vertex/VertexMultiConsumersM.java diff --git a/src/main/java/net/vulkanmod/render/VBO.java b/common/src/main/java/net/vulkanmod/render/VBO.java similarity index 100% rename from src/main/java/net/vulkanmod/render/VBO.java rename to common/src/main/java/net/vulkanmod/render/VBO.java diff --git a/src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java b/common/src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java similarity index 96% rename from src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java rename to common/src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java index 70b3247ed..2503fcc0a 100644 --- a/src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java +++ b/common/src/main/java/net/vulkanmod/render/chunk/AreaBuffer.java @@ -107,16 +107,16 @@ public Segment reallocate(int uploadSize) { int oldSize = this.size; int increment = this.size >> 1; - if(increment <= uploadSize) { + //Try to increase size increment 8 times + for(int i = 0; i < 8 && increment <= uploadSize; ++i) { increment *= 2; } - //TODO check size + if(increment <= uploadSize) - throw new RuntimeException(); + throw new RuntimeException(String.format("Size increment %d <= %d (Upload size)", increment, uploadSize)); int newSize = oldSize + increment; - Buffer buffer = this.allocateBuffer(newSize); AreaUploadManager.INSTANCE.submitUploads(); diff --git a/src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java b/common/src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java similarity index 87% rename from src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java rename to common/src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java index 73601d63d..0825a6f06 100644 --- a/src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java +++ b/common/src/main/java/net/vulkanmod/render/chunk/AreaUploadManager.java @@ -13,6 +13,7 @@ import static org.lwjgl.vulkan.VK10.vkWaitForFences; public class AreaUploadManager { + public static final int FRAME_NUM = 2; public static AreaUploadManager INSTANCE; public static void createInstance() { @@ -26,13 +27,14 @@ public static void createInstance() { int currentFrame; - public void createLists(int frames) { - this.commandBuffers = new CommandPool.CommandBuffer[frames]; - this.recordedUploads = new ObjectArrayList[frames]; - this.updatedParameters = new ObjectArrayList[frames]; - this.frameOps = new ObjectArrayList[frames]; + public void createLists() { - for (int i = 0; i < frames; i++) { + this.commandBuffers = new CommandPool.CommandBuffer[FRAME_NUM]; + this.recordedUploads = new ObjectArrayList[FRAME_NUM]; + this.updatedParameters = new ObjectArrayList[FRAME_NUM]; + this.frameOps = new ObjectArrayList[FRAME_NUM]; + + for (int i = 0; i < FRAME_NUM; i++) { this.recordedUploads[i] = new ObjectArrayList<>(); this.updatedParameters[i] = new ObjectArrayList<>(); this.frameOps[i] = new ObjectArrayList<>(); @@ -40,8 +42,6 @@ public void createLists(int frames) { } public synchronized void submitUploads() { - Validate.isTrue(currentFrame == Renderer.getCurrentFrame()); - if(this.recordedUploads[this.currentFrame].isEmpty()) return; @@ -49,7 +49,6 @@ public synchronized void submitUploads() { } public void uploadAsync(AreaBuffer.Segment uploadSegment, long bufferId, long dstOffset, long bufferSize, ByteBuffer src) { - Validate.isTrue(currentFrame == Renderer.getCurrentFrame()); if(commandBuffers[currentFrame] == null) this.commandBuffers[currentFrame] = Device.getTransferQueue().beginCommands(); @@ -82,10 +81,10 @@ public void copy(Buffer src, Buffer dst) { TransferQueue.uploadBufferCmd(this.commandBuffers[currentFrame], src.getId(), 0, dst.getId(), 0, src.getBufferSize()); } - public void updateFrame(int frame) { - this.currentFrame = frame; + public void updateFrame() { + this.currentFrame = (this.currentFrame + 1) % FRAME_NUM; waitUploads(this.currentFrame); - executeFrameOps(frame); + executeFrameOps(this.currentFrame); } private void executeFrameOps(int frame) { diff --git a/src/main/java/net/vulkanmod/render/chunk/ChunkArea.java b/common/src/main/java/net/vulkanmod/render/chunk/ChunkArea.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/ChunkArea.java rename to common/src/main/java/net/vulkanmod/render/chunk/ChunkArea.java diff --git a/src/main/java/net/vulkanmod/render/chunk/ChunkAreaManager.java b/common/src/main/java/net/vulkanmod/render/chunk/ChunkAreaManager.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/ChunkAreaManager.java rename to common/src/main/java/net/vulkanmod/render/chunk/ChunkAreaManager.java diff --git a/src/main/java/net/vulkanmod/render/chunk/DrawBuffers.java b/common/src/main/java/net/vulkanmod/render/chunk/DrawBuffers.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/DrawBuffers.java rename to common/src/main/java/net/vulkanmod/render/chunk/DrawBuffers.java diff --git a/src/main/java/net/vulkanmod/render/chunk/RenderSection.java b/common/src/main/java/net/vulkanmod/render/chunk/RenderSection.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/RenderSection.java rename to common/src/main/java/net/vulkanmod/render/chunk/RenderSection.java diff --git a/src/main/java/net/vulkanmod/render/chunk/SectionGrid.java b/common/src/main/java/net/vulkanmod/render/chunk/SectionGrid.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/SectionGrid.java rename to common/src/main/java/net/vulkanmod/render/chunk/SectionGrid.java diff --git a/src/main/java/net/vulkanmod/render/chunk/TerrainShaderManager.java b/common/src/main/java/net/vulkanmod/render/chunk/TerrainShaderManager.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/TerrainShaderManager.java rename to common/src/main/java/net/vulkanmod/render/chunk/TerrainShaderManager.java diff --git a/src/main/java/net/vulkanmod/render/chunk/VFrustum.java b/common/src/main/java/net/vulkanmod/render/chunk/VFrustum.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/VFrustum.java rename to common/src/main/java/net/vulkanmod/render/chunk/VFrustum.java diff --git a/src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java b/common/src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java similarity index 93% rename from src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java rename to common/src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java index c14a5f5ea..993ffcd3c 100644 --- a/src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java +++ b/common/src/main/java/net/vulkanmod/render/chunk/WorldRenderer.java @@ -3,7 +3,10 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexMultiConsumer; import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.Camera; @@ -27,11 +30,12 @@ import net.vulkanmod.interfaces.FrustumMixed; import net.vulkanmod.render.chunk.build.ChunkTask; import net.vulkanmod.render.chunk.build.TaskDispatcher; -import net.vulkanmod.render.profiling.Profiler; -import net.vulkanmod.render.profiling.Profiler2; import net.vulkanmod.render.chunk.util.AreaSetQueue; import net.vulkanmod.render.chunk.util.ResettableQueue; import net.vulkanmod.render.chunk.util.Util; +import net.vulkanmod.render.profiling.BuildTimeBench; +import net.vulkanmod.render.profiling.Profiler; +import net.vulkanmod.render.profiling.Profiler2; import net.vulkanmod.render.vertex.TerrainRenderType; import net.vulkanmod.vulkan.Renderer; import net.vulkanmod.vulkan.VRenderSystem; @@ -134,12 +138,18 @@ public static Vec3 getCameraPos() { return INSTANCE.cameraPos; } + private void benchCallback() { + BuildTimeBench.runBench(this.needsUpdate, this.taskDispatcher); + } + public void setupRenderer(Camera camera, Frustum frustum, boolean isCapturedFrustum, boolean spectator) { // Profiler p = Profiler.getProfiler("chunks"); // p.start(); Profiler2 profiler = Profiler2.getMainProfiler(); profiler.push("Setup_Renderer"); + benchCallback(); + // this.frustum = frustum.offsetToFullyIncludeCameraCube(8); this.cameraPos = camera.getPosition(); if (this.minecraft.options.getEffectiveRenderDistance() != this.lastViewDistance) { @@ -296,12 +306,9 @@ private void resetUpdateQueues() { private void updateRenderChunks() { int maxDirectionsChanges = Initializer.CONFIG.advCulling; -// this.initUpdate(); + int buildLimit = taskDispatcher.getIdleThreadsCount() * (Minecraft.getInstance().options.enableVsync().get() ? 6 : 3); - int rebuildLimit = taskDispatcher.getIdleThreadsCount(); -// int rebuildLimit = 32; - - if(rebuildLimit == 0) + if(buildLimit == 0) this.needsUpdate = true; while(this.chunkQueue.hasNext()) { @@ -314,8 +321,8 @@ private void updateRenderChunks() { this.nonEmptyChunks++; } - if(this.scheduleUpdate(renderSection, rebuildLimit)) - rebuildLimit--; + if(this.scheduleUpdate(renderSection, buildLimit)) + buildLimit--; if(renderSection.directionChanges > maxDirectionsChanges) continue; @@ -537,24 +544,7 @@ public void renderSectionLayer(RenderType renderType, PoseStack poseStack, doubl //debug // Profiler p = Profiler.getProfiler("chunks"); Profiler2 p = Profiler2.getMainProfiler(); - RenderType solid = RenderType.solid(); - RenderType cutout = RenderType.cutout(); - RenderType cutoutMipped = RenderType.cutoutMipped(); - RenderType translucent = RenderType.translucent(); - RenderType tripwire = RenderType.tripwire(); - - String layerName; - if (solid.equals(renderType)) { - layerName = "solid"; - } else if (cutout.equals(renderType)) { - layerName = "cutout"; - } else if (cutoutMipped.equals(renderType)) { - layerName = "cutoutMipped"; - } else if (tripwire.equals(renderType)) { - layerName = "tripwire"; - } else if (translucent.equals(renderType)) { - layerName = "translucent"; - } else layerName = "unk"; + final String layerName = getLayerName(renderType); // p.pushMilestone("layer " + layerName); if(layerName.equals("solid")) @@ -637,6 +627,28 @@ else if(layerName.equals("translucent")) } + private static String getLayerName(RenderType renderType) { + RenderType solid = RenderType.solid(); + RenderType cutout = RenderType.cutout(); + RenderType cutoutMipped = RenderType.cutoutMipped(); + RenderType translucent = RenderType.translucent(); + RenderType tripwire = RenderType.tripwire(); + + String layerName; + if (solid.equals(renderType)) { + layerName = "solid"; + } else if (cutout.equals(renderType)) { + layerName = "cutout"; + } else if (cutoutMipped.equals(renderType)) { + layerName = "cutoutMipped"; + } else if (tripwire.equals(renderType)) { + layerName = "tripwire"; + } else if (translucent.equals(renderType)) { + layerName = "translucent"; + } else layerName = "unk"; + return layerName; + } + private void sortTranslucentSections(double camX, double camY, double camZ) { this.minecraft.getProfiler().push("translucent_sort"); double d0 = camX - this.xTransparentOld; @@ -671,30 +683,34 @@ private void sortTranslucentSections(double camX, double camY, double camZ) { public void renderBlockEntities(PoseStack poseStack, double camX, double camY, double camZ, Long2ObjectMap> destructionProgress, float gameTime) { + Profiler2 profiler = Profiler2.getMainProfiler(); + profiler.pop(); + profiler.push("block-entities"); + MultiBufferSource bufferSource = this.renderBuffers.bufferSource(); for(RenderSection renderSection : this.chunkQueue) { List list = renderSection.getCompiledSection().getRenderableBlockEntities(); if (!list.isEmpty()) { - for(BlockEntity blockentity1 : list) { - BlockPos blockpos4 = blockentity1.getBlockPos(); - MultiBufferSource multibuffersource1 = bufferSource; + for(BlockEntity blockEntity : list) { + BlockPos blockPos = blockEntity.getBlockPos(); + MultiBufferSource bufferSource1 = bufferSource; poseStack.pushPose(); - poseStack.translate((double)blockpos4.getX() - camX, (double)blockpos4.getY() - camY, (double)blockpos4.getZ() - camZ); - SortedSet sortedset = destructionProgress.get(blockpos4.asLong()); + poseStack.translate((double)blockPos.getX() - camX, (double)blockPos.getY() - camY, (double)blockPos.getZ() - camZ); + SortedSet sortedset = destructionProgress.get(blockPos.asLong()); if (sortedset != null && !sortedset.isEmpty()) { int j1 = sortedset.last().getProgress(); if (j1 >= 0) { - PoseStack.Pose posestack$pose1 = poseStack.last(); - VertexConsumer vertexconsumer = new SheetedDecalTextureGenerator(this.renderBuffers.crumblingBufferSource().getBuffer(ModelBakery.DESTROY_TYPES.get(j1)), posestack$pose1.pose(), posestack$pose1.normal(), 1.0f); - multibuffersource1 = (p_194349_) -> { - VertexConsumer vertexconsumer3 = bufferSource.getBuffer(p_194349_); - return p_194349_.affectsCrumbling() ? VertexMultiConsumer.create(vertexconsumer, vertexconsumer3) : vertexconsumer3; + PoseStack.Pose pose = poseStack.last(); + VertexConsumer vertexconsumer = new SheetedDecalTextureGenerator(this.renderBuffers.crumblingBufferSource().getBuffer(ModelBakery.DESTROY_TYPES.get(j1)), pose.pose(), pose.normal(), 1.0f); + bufferSource1 = (renderType) -> { + VertexConsumer vertexConsumer2 = bufferSource.getBuffer(renderType); + return renderType.affectsCrumbling() ? VertexMultiConsumer.create(vertexconsumer, vertexConsumer2) : vertexConsumer2; }; } } - this.minecraft.getBlockEntityRenderDispatcher().render(blockentity1, gameTime, poseStack, multibuffersource1); + this.minecraft.getBlockEntityRenderDispatcher().render(blockEntity, gameTime, poseStack, bufferSource1); poseStack.popPose(); } } diff --git a/src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java b/common/src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java similarity index 97% rename from src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java index b2c36508f..343f4f256 100644 --- a/src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java +++ b/common/src/main/java/net/vulkanmod/render/chunk/build/ChunkTask.java @@ -31,10 +31,16 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; public class ChunkTask { private static TaskDispatcher taskDispatcher; + //TODO stats + public static final boolean bench = false; + public static AtomicInteger totalBuildTime = new AtomicInteger(0); + public static AtomicInteger buildCount = new AtomicInteger(0); + protected AtomicBoolean cancelled = new AtomicBoolean(false); protected final RenderSection renderSection; public boolean highPriority = false; @@ -109,8 +115,9 @@ public CompletableFuture doTask(ThreadBuilderPack chunkBufferBuilderPack compiledChunk.renderableBlockEntities.addAll(compileResults.blockEntities); compiledChunk.transparencyState = compileResults.transparencyState; - if(!compileResults.renderedLayers.isEmpty()) + if(!compileResults.renderedLayers.isEmpty()) { compiledChunk.isCompletelyEmpty = false; + } taskDispatcher.scheduleSectionUpdate(renderSection, compileResults.renderedLayers); compiledChunk.renderTypes.addAll(compileResults.renderedLayers.keySet()); @@ -120,8 +127,13 @@ public CompletableFuture doTask(ThreadBuilderPack chunkBufferBuilderPack this.renderSection.setCompletelyEmpty(compiledChunk.isCompletelyEmpty); this.buildTime = (System.nanoTime() - startTime) * 0.000001f; - return CompletableFuture.completedFuture(Result.SUCCESSFUL); + if(bench) { + totalBuildTime.addAndGet((int)buildTime); + buildCount.addAndGet(1); + } + + return CompletableFuture.completedFuture(Result.SUCCESSFUL); } } } diff --git a/src/main/java/net/vulkanmod/render/chunk/build/CompiledSection.java b/common/src/main/java/net/vulkanmod/render/chunk/build/CompiledSection.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/build/CompiledSection.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/CompiledSection.java diff --git a/src/main/java/net/vulkanmod/render/chunk/build/LiquidRenderer.java b/common/src/main/java/net/vulkanmod/render/chunk/build/LiquidRenderer.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/build/LiquidRenderer.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/LiquidRenderer.java diff --git a/src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java b/common/src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java similarity index 94% rename from src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java index 635b27a20..25e0c41ce 100644 --- a/src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java +++ b/common/src/main/java/net/vulkanmod/render/chunk/build/TaskDispatcher.java @@ -35,16 +35,19 @@ public TaskDispatcher() { } public void createThreads() { + int n = Math.max((Runtime.getRuntime().availableProcessors() - 1) / 2, 1); + createThreads(n); + } + + public void createThreads(int n) { if(!this.stopThreads) return; this.stopThreads = false; - int j = Math.max((Runtime.getRuntime().availableProcessors() - 1) / 2, 1); + this.threads = new Thread[n]; - this.threads = new Thread[j]; - - for (int i = 0; i < j; i++) { + for (int i = 0; i < n; i++) { ThreadBuilderPack builderPack = new ThreadBuilderPack(); Thread thread = new Thread( () -> runTaskThread(builderPack)); @@ -173,6 +176,8 @@ public int getIdleThreadsCount() { return this.idleThreads; } + public boolean isIdle() { return this.idleThreads == this.threads.length && this.toUpload.isEmpty(); } + public void clearBatchQueue() { while(!this.highPriorityTasks.isEmpty()) { ChunkTask chunkTask = this.highPriorityTasks.poll(); diff --git a/src/main/java/net/vulkanmod/render/chunk/build/ThreadBuilderPack.java b/common/src/main/java/net/vulkanmod/render/chunk/build/ThreadBuilderPack.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/build/ThreadBuilderPack.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/ThreadBuilderPack.java diff --git a/src/main/java/net/vulkanmod/render/chunk/build/UploadBuffer.java b/common/src/main/java/net/vulkanmod/render/chunk/build/UploadBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/build/UploadBuffer.java rename to common/src/main/java/net/vulkanmod/render/chunk/build/UploadBuffer.java diff --git a/src/main/java/net/vulkanmod/render/chunk/util/AreaSetQueue.java b/common/src/main/java/net/vulkanmod/render/chunk/util/AreaSetQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/util/AreaSetQueue.java rename to common/src/main/java/net/vulkanmod/render/chunk/util/AreaSetQueue.java diff --git a/src/main/java/net/vulkanmod/render/chunk/util/CircularIntList.java b/common/src/main/java/net/vulkanmod/render/chunk/util/CircularIntList.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/util/CircularIntList.java rename to common/src/main/java/net/vulkanmod/render/chunk/util/CircularIntList.java diff --git a/src/main/java/net/vulkanmod/render/chunk/util/ResettableQueue.java b/common/src/main/java/net/vulkanmod/render/chunk/util/ResettableQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/util/ResettableQueue.java rename to common/src/main/java/net/vulkanmod/render/chunk/util/ResettableQueue.java diff --git a/src/main/java/net/vulkanmod/render/chunk/util/Util.java b/common/src/main/java/net/vulkanmod/render/chunk/util/Util.java similarity index 100% rename from src/main/java/net/vulkanmod/render/chunk/util/Util.java rename to common/src/main/java/net/vulkanmod/render/chunk/util/Util.java diff --git a/src/main/java/net/vulkanmod/render/gui/GuiBatchRenderer.java b/common/src/main/java/net/vulkanmod/render/gui/GuiBatchRenderer.java similarity index 100% rename from src/main/java/net/vulkanmod/render/gui/GuiBatchRenderer.java rename to common/src/main/java/net/vulkanmod/render/gui/GuiBatchRenderer.java diff --git a/src/main/java/net/vulkanmod/render/model/CubeModel.java b/common/src/main/java/net/vulkanmod/render/model/CubeModel.java similarity index 100% rename from src/main/java/net/vulkanmod/render/model/CubeModel.java rename to common/src/main/java/net/vulkanmod/render/model/CubeModel.java diff --git a/common/src/main/java/net/vulkanmod/render/profiling/BuildTimeBench.java b/common/src/main/java/net/vulkanmod/render/profiling/BuildTimeBench.java new file mode 100644 index 000000000..5457227a2 --- /dev/null +++ b/common/src/main/java/net/vulkanmod/render/profiling/BuildTimeBench.java @@ -0,0 +1,34 @@ +package net.vulkanmod.render.profiling; + +import net.minecraft.client.Minecraft; +import net.vulkanmod.render.chunk.build.TaskDispatcher; + +public abstract class BuildTimeBench { + + private static boolean bench = false; + private static long startTime; + private static float benchTime; + + public static void runBench(boolean building, TaskDispatcher taskDispatcher) { + if(bench) { + if (startTime == 0) { + startTime = System.nanoTime(); + } + + if(!building && taskDispatcher.isIdle()) { + benchTime = (System.nanoTime() - startTime) * 0.000001f; + bench = false; + startTime = 0; + } + } + } + + public static void startBench() { + bench = true; + Minecraft.getInstance().levelRenderer.allChanged(); + } + + public static float getBenchTime() { + return benchTime; + } +} diff --git a/src/main/java/net/vulkanmod/render/profiling/Profiler.java b/common/src/main/java/net/vulkanmod/render/profiling/Profiler.java similarity index 100% rename from src/main/java/net/vulkanmod/render/profiling/Profiler.java rename to common/src/main/java/net/vulkanmod/render/profiling/Profiler.java diff --git a/src/main/java/net/vulkanmod/render/profiling/Profiler2.java b/common/src/main/java/net/vulkanmod/render/profiling/Profiler2.java similarity index 100% rename from src/main/java/net/vulkanmod/render/profiling/Profiler2.java rename to common/src/main/java/net/vulkanmod/render/profiling/Profiler2.java diff --git a/src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java b/common/src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java similarity index 84% rename from src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java rename to common/src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java index b9210b758..420185089 100644 --- a/src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java +++ b/common/src/main/java/net/vulkanmod/render/profiling/ProfilerOverlay.java @@ -10,6 +10,8 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.MultiBufferSource; +import net.vulkanmod.render.chunk.WorldRenderer; +import net.vulkanmod.render.chunk.build.ChunkTask; import net.vulkanmod.render.gui.GuiBatchRenderer; import java.util.ArrayList; @@ -38,22 +40,7 @@ public void render(PoseStack poseStack) { } protected void drawProfilerInfo(PoseStack poseStack) { - List list = new ArrayList<>(); - list.add(""); - list.add("Profiler"); - - List results = Profiler2.getMainProfiler().getResults(); - - float frametime = results.get(0).getValue(); - int fps = (int) (1000.0f / frametime); - - list.add(String.format("FPS: %d Frametime: %.3f", fps, frametime)); - list.add(""); - - for (int i = 1; i < results.size(); i++) { - Profiler2.Result result = results.get(i); - list.add(result.toString()); - } + List list = buildInfo(); RenderSystem.enableBlend(); RenderSystem.setShader(GameRenderer::getPositionColorShader); @@ -88,4 +75,33 @@ protected void drawProfilerInfo(PoseStack poseStack) { bufferSource.endBatch(); } + + private List buildInfo() { + List list = new ArrayList<>(); + list.add(""); + list.add("Profiler"); + + List results = Profiler2.getMainProfiler().getResults(); + + float frametime = results.get(0).getValue(); + int fps = (int) (1000.0f / frametime); + + list.add(String.format("FPS: %d Frametime: %.3f", fps, frametime)); + list.add(""); + + for (int i = 1; i < results.size(); i++) { + Profiler2.Result result = results.get(i); + list.add(result.toString()); + } + + //Section build stats + list.add(""); + list.add(""); + list.add(String.format("Build time: %.2f ms", BuildTimeBench.getBenchTime())); + + if(ChunkTask.bench) + list.add(String.format("Total build time: %d ms for %d builds", ChunkTask.totalBuildTime.get(), ChunkTask.buildCount.get())); + + return list; + } } diff --git a/src/main/java/net/vulkanmod/render/texture/SpriteUtil.java b/common/src/main/java/net/vulkanmod/render/texture/SpriteUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/render/texture/SpriteUtil.java rename to common/src/main/java/net/vulkanmod/render/texture/SpriteUtil.java diff --git a/src/main/java/net/vulkanmod/render/util/MathUtil.java b/common/src/main/java/net/vulkanmod/render/util/MathUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/render/util/MathUtil.java rename to common/src/main/java/net/vulkanmod/render/util/MathUtil.java diff --git a/src/main/java/net/vulkanmod/render/util/SortUtil.java b/common/src/main/java/net/vulkanmod/render/util/SortUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/render/util/SortUtil.java rename to common/src/main/java/net/vulkanmod/render/util/SortUtil.java diff --git a/src/main/java/net/vulkanmod/render/vertex/CustomVertexFormat.java b/common/src/main/java/net/vulkanmod/render/vertex/CustomVertexFormat.java similarity index 100% rename from src/main/java/net/vulkanmod/render/vertex/CustomVertexFormat.java rename to common/src/main/java/net/vulkanmod/render/vertex/CustomVertexFormat.java diff --git a/src/main/java/net/vulkanmod/render/vertex/TerrainBufferBuilder.java b/common/src/main/java/net/vulkanmod/render/vertex/TerrainBufferBuilder.java similarity index 100% rename from src/main/java/net/vulkanmod/render/vertex/TerrainBufferBuilder.java rename to common/src/main/java/net/vulkanmod/render/vertex/TerrainBufferBuilder.java diff --git a/src/main/java/net/vulkanmod/render/vertex/TerrainRenderType.java b/common/src/main/java/net/vulkanmod/render/vertex/TerrainRenderType.java similarity index 100% rename from src/main/java/net/vulkanmod/render/vertex/TerrainRenderType.java rename to common/src/main/java/net/vulkanmod/render/vertex/TerrainRenderType.java diff --git a/src/main/java/net/vulkanmod/render/vertex/VertexUtil.java b/common/src/main/java/net/vulkanmod/render/vertex/VertexUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/render/vertex/VertexUtil.java rename to common/src/main/java/net/vulkanmod/render/vertex/VertexUtil.java diff --git a/src/main/java/net/vulkanmod/vulkan/Device.java b/common/src/main/java/net/vulkanmod/vulkan/Device.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/Device.java rename to common/src/main/java/net/vulkanmod/vulkan/Device.java diff --git a/src/main/java/net/vulkanmod/vulkan/DeviceInfo.java b/common/src/main/java/net/vulkanmod/vulkan/DeviceInfo.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/DeviceInfo.java rename to common/src/main/java/net/vulkanmod/vulkan/DeviceInfo.java diff --git a/src/main/java/net/vulkanmod/vulkan/Drawer.java b/common/src/main/java/net/vulkanmod/vulkan/Drawer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/Drawer.java rename to common/src/main/java/net/vulkanmod/vulkan/Drawer.java diff --git a/src/main/java/net/vulkanmod/vulkan/Renderer.java b/common/src/main/java/net/vulkanmod/vulkan/Renderer.java similarity index 98% rename from src/main/java/net/vulkanmod/vulkan/Renderer.java rename to common/src/main/java/net/vulkanmod/vulkan/Renderer.java index f6598ab8d..1e362978a 100644 --- a/src/main/java/net/vulkanmod/vulkan/Renderer.java +++ b/common/src/main/java/net/vulkanmod/vulkan/Renderer.java @@ -85,7 +85,7 @@ public Renderer() { allocateCommandBuffers(); createSyncObjects(); - AreaUploadManager.INSTANCE.createLists(framesNum); + AreaUploadManager.INSTANCE.createLists(); } private void allocateCommandBuffers() { @@ -179,7 +179,7 @@ public void beginFrame() { p.start(); p.push("Frame_ops"); - AreaUploadManager.INSTANCE.updateFrame(currentFrame); + AreaUploadManager.INSTANCE.updateFrame(); MemoryManager.getInstance().initFrame(currentFrame); drawer.setCurrentFrame(currentFrame); @@ -397,7 +397,7 @@ private void recreateSwapChain() { Pipeline.recreateDescriptorSets(framesNum); drawer.createResources(framesNum); - AreaUploadManager.INSTANCE.createLists(framesNum); + AreaUploadManager.INSTANCE.createLists(); } this.onResizeCallbacks.forEach(Runnable::run); @@ -573,6 +573,9 @@ public static void setScissor(int x, int y, int width, int height) { } public static void resetScissor() { + if(Renderer.getInstance().boundFramebuffer == null) + return; + try(MemoryStack stack = stackPush()) { VkRect2D.Buffer scissor = Renderer.getInstance().boundFramebuffer.scissor(stack); vkCmdSetScissor(INSTANCE.currentCmdBuffer, 0, scissor); diff --git a/src/main/java/net/vulkanmod/vulkan/Synchronization.java b/common/src/main/java/net/vulkanmod/vulkan/Synchronization.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/Synchronization.java rename to common/src/main/java/net/vulkanmod/vulkan/Synchronization.java diff --git a/src/main/java/net/vulkanmod/vulkan/VRenderSystem.java b/common/src/main/java/net/vulkanmod/vulkan/VRenderSystem.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/VRenderSystem.java rename to common/src/main/java/net/vulkanmod/vulkan/VRenderSystem.java diff --git a/src/main/java/net/vulkanmod/vulkan/Vulkan.java b/common/src/main/java/net/vulkanmod/vulkan/Vulkan.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/Vulkan.java rename to common/src/main/java/net/vulkanmod/vulkan/Vulkan.java diff --git a/src/main/java/net/vulkanmod/vulkan/framebuffer/Framebuffer.java b/common/src/main/java/net/vulkanmod/vulkan/framebuffer/Framebuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/framebuffer/Framebuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/framebuffer/Framebuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/framebuffer/RenderPass.java b/common/src/main/java/net/vulkanmod/vulkan/framebuffer/RenderPass.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/framebuffer/RenderPass.java rename to common/src/main/java/net/vulkanmod/vulkan/framebuffer/RenderPass.java diff --git a/src/main/java/net/vulkanmod/vulkan/framebuffer/SwapChain.java b/common/src/main/java/net/vulkanmod/vulkan/framebuffer/SwapChain.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/framebuffer/SwapChain.java rename to common/src/main/java/net/vulkanmod/vulkan/framebuffer/SwapChain.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/AutoIndexBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/AutoIndexBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/AutoIndexBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/AutoIndexBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/Buffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/Buffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/Buffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/Buffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/IndexBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/IndexBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/IndexBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/IndexBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/IndirectBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/IndirectBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/IndirectBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/IndirectBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/MemoryManager.java b/common/src/main/java/net/vulkanmod/vulkan/memory/MemoryManager.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/MemoryManager.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/MemoryManager.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/MemoryType.java b/common/src/main/java/net/vulkanmod/vulkan/memory/MemoryType.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/MemoryType.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/MemoryType.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/MemoryTypes.java b/common/src/main/java/net/vulkanmod/vulkan/memory/MemoryTypes.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/MemoryTypes.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/MemoryTypes.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/StagingBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/StagingBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/StagingBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/StagingBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/UniformBuffers.java b/common/src/main/java/net/vulkanmod/vulkan/memory/UniformBuffers.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/UniformBuffers.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/UniformBuffers.java diff --git a/src/main/java/net/vulkanmod/vulkan/memory/VertexBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/memory/VertexBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/memory/VertexBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/memory/VertexBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/passes/DefaultMainPass.java b/common/src/main/java/net/vulkanmod/vulkan/passes/DefaultMainPass.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/passes/DefaultMainPass.java rename to common/src/main/java/net/vulkanmod/vulkan/passes/DefaultMainPass.java diff --git a/src/main/java/net/vulkanmod/vulkan/passes/MainPass.java b/common/src/main/java/net/vulkanmod/vulkan/passes/MainPass.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/passes/MainPass.java rename to common/src/main/java/net/vulkanmod/vulkan/passes/MainPass.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/CommandPool.java b/common/src/main/java/net/vulkanmod/vulkan/queue/CommandPool.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/CommandPool.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/CommandPool.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/ComputeQueue.java b/common/src/main/java/net/vulkanmod/vulkan/queue/ComputeQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/ComputeQueue.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/ComputeQueue.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/GraphicsQueue.java b/common/src/main/java/net/vulkanmod/vulkan/queue/GraphicsQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/GraphicsQueue.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/GraphicsQueue.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/PresentQueue.java b/common/src/main/java/net/vulkanmod/vulkan/queue/PresentQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/PresentQueue.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/PresentQueue.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/Queue.java b/common/src/main/java/net/vulkanmod/vulkan/queue/Queue.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/Queue.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/Queue.java diff --git a/src/main/java/net/vulkanmod/vulkan/queue/TransferQueue.java b/common/src/main/java/net/vulkanmod/vulkan/queue/TransferQueue.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/queue/TransferQueue.java rename to common/src/main/java/net/vulkanmod/vulkan/queue/TransferQueue.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/GraphicsPipeline.java b/common/src/main/java/net/vulkanmod/vulkan/shader/GraphicsPipeline.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/GraphicsPipeline.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/GraphicsPipeline.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/Pipeline.java b/common/src/main/java/net/vulkanmod/vulkan/shader/Pipeline.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/Pipeline.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/Pipeline.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/PipelineState.java b/common/src/main/java/net/vulkanmod/vulkan/shader/PipelineState.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/PipelineState.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/PipelineState.java diff --git a/common/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java b/common/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java new file mode 100644 index 000000000..259e2eca3 --- /dev/null +++ b/common/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java @@ -0,0 +1,197 @@ +package net.vulkanmod.vulkan.shader; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; +import org.lwjgl.system.NativeResource; +import org.lwjgl.util.shaderc.ShadercIncludeResolveI; +import org.lwjgl.util.shaderc.ShadercIncludeResult; +import org.lwjgl.util.shaderc.ShadercIncludeResultReleaseI; +import org.lwjgl.vulkan.VK12; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.lwjgl.system.MemoryUtil.NULL; +import static org.lwjgl.system.MemoryUtil.memASCII; +import static org.lwjgl.util.shaderc.Shaderc.*; + +public class SPIRVUtils { + private static final boolean DEBUG = false; + private static final boolean OPTIMIZATIONS = false; + + private static long compiler; + private static long options; + + //The dedicated Includer and Releaser Inner Classes used to Initialise #include Support for ShaderC + private static final ShaderIncluder SHADER_INCLUDER = new ShaderIncluder(); + private static final ShaderReleaser SHADER_RELEASER = new ShaderReleaser(); + private static final long pUserData = 0; + + private static ObjectArrayList includePaths; + + private static float time = 0.0f; + + static { + initCompiler(); + } + + private static void initCompiler() { + compiler = shaderc_compiler_initialize(); + + if(compiler == NULL) { + throw new RuntimeException("Failed to create shader compiler"); + } + + options = shaderc_compile_options_initialize(); + + if(options == NULL) { + throw new RuntimeException("Failed to create compiler options"); + } + + if(OPTIMIZATIONS) + shaderc_compile_options_set_optimization_level(options, shaderc_optimization_level_performance); + + if(DEBUG) + shaderc_compile_options_set_generate_debug_info(options); + + shaderc_compile_options_set_target_env(options, shaderc_env_version_vulkan_1_2, VK12.VK_API_VERSION_1_2); + shaderc_compile_options_set_include_callbacks(options, SHADER_INCLUDER, SHADER_RELEASER, pUserData); + + includePaths = new ObjectArrayList<>(); + addIncludePath("/assets/vulkanmod/shaders/include/"); + } + + public static void addIncludePath(String path) { + URL url = SPIRVUtils.class.getResource(path); + + if(url != null) + includePaths.add(url.toExternalForm()); + } + + public static SPIRV compileShaderAbsoluteFile(String shaderFile, ShaderKind shaderKind) { + try { + String source = new String(Files.readAllBytes(Paths.get(new URI(shaderFile)))); + return compileShader(shaderFile, source, shaderKind); + } catch (IOException | URISyntaxException e) { + e.printStackTrace(); + } + return null; + } + + public static SPIRV compileShader(String filename, String source, ShaderKind shaderKind) { + long startTime = System.nanoTime(); + + long result = shaderc_compile_into_spv(compiler, source, shaderKind.kind, filename, "main", options); + + if(result == NULL) { + throw new RuntimeException("Failed to compile shader " + filename + " into SPIR-V"); + } + + if(shaderc_result_get_compilation_status(result) != shaderc_compilation_status_success) { + throw new RuntimeException("Failed to compile shader " + filename + " into SPIR-V:\n" + shaderc_result_get_error_message(result)); + } + + time += (System.nanoTime() - startTime) / 1000000.0f; + + return new SPIRV(result, shaderc_result_get_bytes(result)); + } + + private static SPIRV readFromStream(InputStream inputStream) { + try { + byte[] bytes = inputStream.readAllBytes(); + ByteBuffer buffer = MemoryUtil.memAlloc(bytes.length); + buffer.put(bytes); + buffer.position(0); + + return new SPIRV(MemoryUtil.memAddress(buffer), buffer); + } catch (Exception e) { + e.printStackTrace(); + } + throw new RuntimeException("unable to read inputStream"); + } + + public enum ShaderKind { + VERTEX_SHADER(shaderc_glsl_vertex_shader), + GEOMETRY_SHADER(shaderc_glsl_geometry_shader), + FRAGMENT_SHADER(shaderc_glsl_fragment_shader), + COMPUTE_SHADER(shaderc_glsl_compute_shader); + + private final int kind; + + ShaderKind(int kind) { + this.kind = kind; + } + } + + private static class ShaderIncluder implements ShadercIncludeResolveI { + + private static final int MAX_PATH_LENGTH = 4096; //Maximum Linux/Unix Path Length + + @Override + public long invoke(long user_data, long requested_source, int type, long requesting_source, long include_depth) { + var requesting = memASCII(requesting_source); + var requested = memASCII(requested_source); + + try(MemoryStack stack = MemoryStack.stackPush()) { + Path path; + + for(String includePath : includePaths) { + path = Paths.get(new URI(String.format("%s%s", includePath, requested))); + + if(Files.exists(path)) { + byte[] bytes = Files.readAllBytes(path); + + return ShadercIncludeResult.malloc(stack) + .source_name(stack.ASCII(requested)) + .content(stack.bytes(bytes)) + .user_data(user_data).address(); + } + } + } catch (IOException | URISyntaxException e) { + throw new RuntimeException(e); + } + + throw new RuntimeException(String.format("%s: Unable to find %s in include paths", requesting, requested)); + } + } + + //TODO: Don't actually need the Releaser at all, (MemoryStack frees this for us) + //But ShaderC won't let us create the Includer without a corresponding Releaser, (so we need it anyway) + private static class ShaderReleaser implements ShadercIncludeResultReleaseI { + + @Override + public void invoke(long user_data, long include_result) { + //TODO:Maybe dump Shader Compiled Binaries here to a .Misc Diretcory to allow easy caching.recompilation... + } + } + + public static final class SPIRV implements NativeResource { + + private final long handle; + private ByteBuffer bytecode; + + public SPIRV(long handle, ByteBuffer bytecode) { + this.handle = handle; + this.bytecode = bytecode; + } + + public ByteBuffer bytecode() { + return bytecode; + } + + @Override + public void free() { +// shaderc_result_release(handle); + bytecode = null; // Help the GC + } + } + +} \ No newline at end of file diff --git a/src/main/java/net/vulkanmod/vulkan/shader/Uniforms.java b/common/src/main/java/net/vulkanmod/vulkan/shader/Uniforms.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/Uniforms.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/Uniforms.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Descriptor.java b/common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Descriptor.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/descriptor/Descriptor.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Descriptor.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Image.java b/common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Image.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/descriptor/Image.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/Image.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/descriptor/ManualUBO.java b/common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/ManualUBO.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/descriptor/ManualUBO.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/ManualUBO.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/descriptor/UBO.java b/common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/UBO.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/descriptor/UBO.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/descriptor/UBO.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/AlignedStruct.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/AlignedStruct.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/AlignedStruct.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/AlignedStruct.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Field.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Field.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Field.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Field.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Mat4f.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Mat4f.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Mat4f.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Mat4f.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/PushConstants.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/PushConstants.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/PushConstants.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/PushConstants.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1f.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1f.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1f.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1f.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1i.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1i.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1i.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec1i.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec2f.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec2f.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Vec2f.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec2f.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec3f.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec3f.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Vec3f.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec3f.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec4f.java b/common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec4f.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/layout/Vec4f.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/layout/Vec4f.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/parser/GlslConverter.java b/common/src/main/java/net/vulkanmod/vulkan/shader/parser/GlslConverter.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/parser/GlslConverter.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/parser/GlslConverter.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/parser/InputOutputParser.java b/common/src/main/java/net/vulkanmod/vulkan/shader/parser/InputOutputParser.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/parser/InputOutputParser.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/parser/InputOutputParser.java diff --git a/src/main/java/net/vulkanmod/vulkan/shader/parser/UniformParser.java b/common/src/main/java/net/vulkanmod/vulkan/shader/parser/UniformParser.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/shader/parser/UniformParser.java rename to common/src/main/java/net/vulkanmod/vulkan/shader/parser/UniformParser.java diff --git a/src/main/java/net/vulkanmod/vulkan/texture/VTextureSelector.java b/common/src/main/java/net/vulkanmod/vulkan/texture/VTextureSelector.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/texture/VTextureSelector.java rename to common/src/main/java/net/vulkanmod/vulkan/texture/VTextureSelector.java diff --git a/src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java b/common/src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java similarity index 99% rename from src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java rename to common/src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java index aa9a7a92a..03972dc53 100644 --- a/src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java +++ b/common/src/main/java/net/vulkanmod/vulkan/texture/VulkanImage.java @@ -284,7 +284,7 @@ public void readOnlyLayout(CommandPool.CommandBuffer commandBuffer) { this.currentLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; } - private void createTextureSampler(boolean blur, boolean clamp, boolean mipmap) { + public void createTextureSampler(boolean blur, boolean clamp, boolean mipmap) { try(MemoryStack stack = stackPush()) { diff --git a/src/main/java/net/vulkanmod/vulkan/util/ColorUtil.java b/common/src/main/java/net/vulkanmod/vulkan/util/ColorUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/util/ColorUtil.java rename to common/src/main/java/net/vulkanmod/vulkan/util/ColorUtil.java diff --git a/src/main/java/net/vulkanmod/vulkan/util/DrawUtil.java b/common/src/main/java/net/vulkanmod/vulkan/util/DrawUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/util/DrawUtil.java rename to common/src/main/java/net/vulkanmod/vulkan/util/DrawUtil.java diff --git a/src/main/java/net/vulkanmod/vulkan/util/MappedBuffer.java b/common/src/main/java/net/vulkanmod/vulkan/util/MappedBuffer.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/util/MappedBuffer.java rename to common/src/main/java/net/vulkanmod/vulkan/util/MappedBuffer.java diff --git a/src/main/java/net/vulkanmod/vulkan/util/Pair.java b/common/src/main/java/net/vulkanmod/vulkan/util/Pair.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/util/Pair.java rename to common/src/main/java/net/vulkanmod/vulkan/util/Pair.java diff --git a/src/main/java/net/vulkanmod/vulkan/util/VUtil.java b/common/src/main/java/net/vulkanmod/vulkan/util/VUtil.java similarity index 100% rename from src/main/java/net/vulkanmod/vulkan/util/VUtil.java rename to common/src/main/java/net/vulkanmod/vulkan/util/VUtil.java diff --git a/common/src/main/resources/architectury.common.json b/common/src/main/resources/architectury.common.json new file mode 100644 index 000000000..681ddfad6 --- /dev/null +++ b/common/src/main/resources/architectury.common.json @@ -0,0 +1,3 @@ +{ + "accessWidener": "vulkanmod.accesswidener" +} \ No newline at end of file diff --git a/src/main/resources/assets/vulkanmod/Vlogo.png b/common/src/main/resources/assets/vulkanmod/Vlogo.png similarity index 100% rename from src/main/resources/assets/vulkanmod/Vlogo.png rename to common/src/main/resources/assets/vulkanmod/Vlogo.png diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh similarity index 64% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh index ae9df2593..81a508fd6 100644 --- a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh +++ b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.fsh @@ -1,13 +1,6 @@ #version 450 -vec4 linear_fog(vec4 inColor, float vertexDistance, float fogStart, float fogEnd, vec4 fogColor) { - if (vertexDistance <= fogStart) { - return inColor; - } - - float fogValue = vertexDistance < fogEnd ? smoothstep(fogStart, fogEnd, vertexDistance) : 1.0; - return vec4(mix(inColor.rgb, fogColor.rgb, fogValue * fogColor.a), inColor.a); -} +#include "light.glsl" layout(binding = 2) uniform sampler2D Sampler0; diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.json b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.json rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.json diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh similarity index 53% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh index aaa913505..a08f80d2f 100644 --- a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh +++ b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_direct/terrain_direct.vsh @@ -1,12 +1,6 @@ #version 460 -//light.glsl -#define MINECRAFT_LIGHT_POWER 0.6 -#define MINECRAFT_AMBIENT_LIGHT 0.4 - -vec4 minecraft_sample_lightmap(sampler2D lightMap, ivec2 uv) { - return texelFetch(lightMap, (uv & 255) >> 4, 0); -} +#include "light.glsl" layout(binding = 0) uniform UniformBufferObject { mat4 MVP; @@ -24,9 +18,7 @@ layout(location = 1) out vec4 vertexColor; layout(location = 2) out vec2 texCoord0; //layout(location = 3) out vec4 normal; -#define COMPRESSED_VERTEX -#ifdef COMPRESSED_VERTEX - +//Compressed Vertex layout(location = 0) in ivec3 Position; layout(location = 1) in vec4 Color; layout(location = 2) in uvec2 UV0; @@ -41,26 +33,23 @@ void main() { gl_Position = MVP * vec4(pos + ChunkOffset, 1.0); vertexDistance = length((ModelViewMat * vec4(pos + ChunkOffset, 1.0)).xyz); - vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); + vertexColor = Color * sample_lightmap(Sampler2, UV2); texCoord0 = UV0 * UV_INV; // normal = MVP * vec4(Normal, 0.0); } -#else - -layout(location = 0) in vec3 Position; -layout(location = 1) in vec4 Color; -layout(location = 2) in vec2 UV0; -layout(location = 3) in ivec2 UV2; -layout(location = 4) in vec3 Normal; - -void main() { - gl_Position = MVP * vec4(Position + ChunkOffset, 1.0); - - vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); - vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); - texCoord0 = UV0; - // normal = MVP * vec4(Normal, 0.0); -} +//Default Vertex +//layout(location = 0) in vec3 Position; +//layout(location = 1) in vec4 Color; +//layout(location = 2) in vec2 UV0; +//layout(location = 3) in ivec2 UV2; +//layout(location = 4) in vec3 Normal; -#endif \ No newline at end of file +//void main() { +// gl_Position = MVP * vec4(Position + ChunkOffset, 1.0); +// +// vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); +// vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); +// texCoord0 = UV0; +// // normal = MVP * vec4(Normal, 0.0); +//} \ No newline at end of file diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh similarity index 64% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh index ce60b3fb9..6880c1e94 100644 --- a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh +++ b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.fsh @@ -1,13 +1,6 @@ #version 450 -vec4 linear_fog(vec4 inColor, float vertexDistance, float fogStart, float fogEnd, vec4 fogColor) { - if (vertexDistance <= fogStart) { - return inColor; - } - - float fogValue = vertexDistance < fogEnd ? smoothstep(fogStart, fogEnd, vertexDistance) : 1.0; - return vec4(mix(inColor.rgb, fogColor.rgb, fogValue * fogColor.a), inColor.a); -} +#include "light.glsl" layout(binding = 3) uniform sampler2D Sampler0; diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.json b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.json rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.json diff --git a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh similarity index 89% rename from src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh index 17b12036d..b6bfcd991 100644 --- a/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh +++ b/common/src/main/resources/assets/vulkanmod/shaders/basic/terrain_indirect/terrain_indirect.vsh @@ -2,9 +2,7 @@ #define MAX_OFFSET_COUNT 512 -vec4 minecraft_sample_lightmap(sampler2D lightMap, ivec2 uv) { - return texelFetch(lightMap, (uv & 255) >> 4, 0); -} +#include "light.glsl" layout(binding = 0) uniform UniformBufferObject { mat4 MVP; @@ -38,7 +36,7 @@ void main() { gl_Position = MVP * vec4(pos + ChunkOffset[gl_DrawID], 1.0); vertexDistance = length((ModelViewMat * vec4(pos + ChunkOffset[gl_DrawID], 1.0)).xyz); - vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); + vertexColor = Color * sample_lightmap(Sampler2, UV2); texCoord0 = UV0 * UV_INV; // normal = MVP * vec4(Normal, 0.0); } diff --git a/common/src/main/resources/assets/vulkanmod/shaders/include/light.glsl b/common/src/main/resources/assets/vulkanmod/shaders/include/light.glsl new file mode 100644 index 000000000..d7b6b19c5 --- /dev/null +++ b/common/src/main/resources/assets/vulkanmod/shaders/include/light.glsl @@ -0,0 +1,29 @@ +//light.glsl +#define MINECRAFT_LIGHT_POWER (0.6) +#define MINECRAFT_AMBIENT_LIGHT (0.4) + +vec4 minecraft_mix_light(vec3 lightDir0, vec3 lightDir1, vec3 normal, vec4 color) { + lightDir0 = normalize(lightDir0); + lightDir1 = normalize(lightDir1); + float light0 = max(0.0, dot(lightDir0, normal)); + float light1 = max(0.0, dot(lightDir1, normal)); + float lightAccum = min(1.0, (light0 + light1) * MINECRAFT_LIGHT_POWER + MINECRAFT_AMBIENT_LIGHT); + return vec4(color.rgb * lightAccum, color.a); +} + +//vec4 minecraft_sample_lightmap(sampler2D lightMap, ivec2 uv) { +// return texture(lightMap, clamp(uv / 256.0, vec2(0.5 / 16.0), vec2(15.5 / 16.0))); +//} + +vec4 sample_lightmap(sampler2D lightMap, ivec2 uv) { + return texelFetch(lightMap, (uv & 255) >> 4, 0); +} + +vec4 linear_fog(vec4 inColor, float vertexDistance, float fogStart, float fogEnd, vec4 fogColor) { + if (vertexDistance <= fogStart) { + return inColor; + } + + float fogValue = vertexDistance < fogEnd ? smoothstep(fogStart, fogEnd, vertexDistance) : 1.0; + return vec4(mix(inColor.rgb, fogColor.rgb, fogValue * fogColor.a), inColor.a); +} \ No newline at end of file diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/blit_screen.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/particle.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_lightmap.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_normal.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_color_tex_lightmap.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/position_tex_color_normal.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_cutout_no_cull.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_entity_glint.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_armor_glint.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_beacon_beam.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_crumbling.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_cutout_mipped.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_end_portal.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_energy_swirl.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_alpha.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_cutout_no_cull_z_offset.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_decal.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_glint_direct.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_no_outline.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_shadow.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_smooth_cutout.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_solid.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_cull.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_entity_translucent_emissive.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_eyes.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_direct.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_glint_translucent.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_item_entity_translucent_cull.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_leash.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lightning.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_lines.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_outline.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_solid.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_background_see_through.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_intensity_see_through.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_text_see_through.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_moving_block.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_translucent_no_crumbling.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_tripwire.vsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.fsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.fsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.fsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.fsh diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.json b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.json similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.json rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.json diff --git a/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.vsh b/common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.vsh similarity index 100% rename from src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.vsh rename to common/src/main/resources/assets/vulkanmod/shaders/minecraft/core/rendertype_water_mask.vsh diff --git a/src/main/resources/vulkanmod.mixins.json b/common/src/main/resources/vulkanmod-common.mixins.json similarity index 97% rename from src/main/resources/vulkanmod.mixins.json rename to common/src/main/resources/vulkanmod-common.mixins.json index 3b0769901..81a0723da 100644 --- a/src/main/resources/vulkanmod.mixins.json +++ b/common/src/main/resources/vulkanmod-common.mixins.json @@ -38,7 +38,6 @@ "render.vertex.BufferBuilderM", "render.vertex.VertexBufferM", "render.vertex.VertexConsumerM", - "render.vertex.LiquidBlockRendererM", "render.vertex.VertexFormatMixin", "render.BufferUploaderM", "render.RenderTargetMixin", @@ -54,6 +53,7 @@ "screen.OptionsScreenM", + "texture.MTextureUtil", "texture.MAbstractTexture", "texture.MDynamicTexture", "texture.MFontTexture", diff --git a/src/main/resources/vulkanmod.accesswidener b/common/src/main/resources/vulkanmod.accesswidener similarity index 100% rename from src/main/resources/vulkanmod.accesswidener rename to common/src/main/resources/vulkanmod.accesswidener diff --git a/fabric/build.gradle b/fabric/build.gradle new file mode 100644 index 000000000..758d60fd7 --- /dev/null +++ b/fabric/build.gradle @@ -0,0 +1,99 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" + id 'maven-publish' +} + +architectury { + platformSetupLoomIde() + fabric() +} + +loom { + accessWidenerPath = project(":common").loom.accessWidenerPath +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common +} + +dependencies { + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + + modRuntimeOnly "maven.modrinth:modmenu:7.2.2" + + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion")) + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives")) + + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$winNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$linuxNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosArmNatives")) + + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$winNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$linuxNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosArmNatives")) + + include(implementation("com.google.code.findbugs:jsr305:3.0.2")) + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +shadowJar { + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + //classifier "dev-shadow" +} + +remapJar { + injectAccessWidener = true + input.set shadowJar.archiveFile + dependsOn shadowJar + archiveClassifier.set('fabric') +} + +jar { + archiveClassifier.set("dev") + manifest { + attributes('Main-Class': "net.vulkanmod.Initalizer") + } + + sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } + } + + components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } + } + + publishing { + publications { + mavenFabric(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + } +} \ No newline at end of file diff --git a/fabric/src/main/java/net/vulkanmod/fabric/VulkanModExpectPlatformImpl.java b/fabric/src/main/java/net/vulkanmod/fabric/VulkanModExpectPlatformImpl.java new file mode 100644 index 000000000..2ae66e09f --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/VulkanModExpectPlatformImpl.java @@ -0,0 +1,15 @@ +package net.vulkanmod.fabric; + +import net.fabricmc.loader.api.FabricLoader; + +import java.nio.file.Path; + +public class VulkanModExpectPlatformImpl { + public static Path getConfigDirectory() { + return FabricLoader.getInstance().getConfigDir(); + } + + public static String getVersion() { + return FabricLoader.getInstance().getModContainer("vulkanmod").get().getMetadata().getVersion().getFriendlyString(); + } +} diff --git a/fabric/src/main/java/net/vulkanmod/fabric/VulkanModFabric.java b/fabric/src/main/java/net/vulkanmod/fabric/VulkanModFabric.java new file mode 100644 index 000000000..5829d224b --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/VulkanModFabric.java @@ -0,0 +1,12 @@ +package net.vulkanmod.fabric; + +import net.fabricmc.api.ClientModInitializer; +import net.vulkanmod.Initializer; + +public class VulkanModFabric implements ClientModInitializer { + + @Override + public void onInitializeClient() { + Initializer.onInitializeClient(); + } +} diff --git a/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLevelRendererM.java b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLevelRendererM.java new file mode 100644 index 000000000..5c5a67e19 --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLevelRendererM.java @@ -0,0 +1,32 @@ +package net.vulkanmod.fabric.mixin; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.LightTexture; +import net.vulkanmod.render.profiling.Profiler2; +import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LevelRenderer.class) +public abstract class FabricLevelRendererM { + @Inject(method = "renderLevel", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" + , shift = At.Shift.BEFORE)) + private void pushProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { + Profiler2 profiler = Profiler2.getMainProfiler(); + profiler.push("particles"); + } + + @Inject(method = "renderLevel", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" + , shift = At.Shift.AFTER)) + private void popProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { + Profiler2 profiler = Profiler2.getMainProfiler(); + profiler.pop(); + } +} diff --git a/src/main/java/net/vulkanmod/mixin/render/vertex/LiquidBlockRendererM.java b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLiquidBlockRendererM.java similarity index 89% rename from src/main/java/net/vulkanmod/mixin/render/vertex/LiquidBlockRendererM.java rename to fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLiquidBlockRendererM.java index 74a116405..78655da87 100644 --- a/src/main/java/net/vulkanmod/mixin/render/vertex/LiquidBlockRendererM.java +++ b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricLiquidBlockRendererM.java @@ -1,4 +1,4 @@ -package net.vulkanmod.mixin.render.vertex; +package net.vulkanmod.fabric.mixin; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.renderer.block.LiquidBlockRenderer; @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Overwrite; @Mixin(LiquidBlockRenderer.class) -public class LiquidBlockRendererM { +public class FabricLiquidBlockRendererM { /** * @author diff --git a/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricMinecraftM.java b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricMinecraftM.java new file mode 100644 index 000000000..09d942141 --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricMinecraftM.java @@ -0,0 +1,19 @@ +package net.vulkanmod.fabric.mixin; + +import net.minecraft.client.Minecraft; +import net.vulkanmod.render.texture.SpriteUtil; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +@Mixin(Minecraft.class) +public class FabricMinecraftM { + @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;tick()V"), + locals = LocalCapture.CAPTURE_FAILHARD) + private void redirectResourceTick(boolean bl, CallbackInfo ci, long l, int i, int j) { + int n = Math.min(10, i) - 1; + SpriteUtil.setDoUpload(j == n); + } +} diff --git a/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricShaderInstanceM.java b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricShaderInstanceM.java new file mode 100644 index 000000000..7f98e7f56 --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricShaderInstanceM.java @@ -0,0 +1,12 @@ +package net.vulkanmod.fabric.mixin; + +import net.minecraft.client.renderer.ShaderInstance; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ShaderInstance.class) +public class FabricShaderInstanceM { + @Redirect(method = "", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/shaders/Uniform;glBindAttribLocation(IILjava/lang/CharSequence;)V")) + private void bindAttr(int program, int index, CharSequence name) {} +} diff --git a/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricWindowM.java b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricWindowM.java new file mode 100644 index 000000000..a6ec6f75d --- /dev/null +++ b/fabric/src/main/java/net/vulkanmod/fabric/mixin/FabricWindowM.java @@ -0,0 +1,22 @@ +package net.vulkanmod.fabric.mixin; + +import com.mojang.blaze3d.platform.DisplayData; +import com.mojang.blaze3d.platform.ScreenManager; +import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.platform.WindowEventHandler; +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static org.lwjgl.glfw.GLFW.GLFW_CLIENT_API; +import static org.lwjgl.glfw.GLFW.GLFW_NO_API; + +@Mixin(Window.class) +public class FabricWindowM { + @Inject(method = "", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwCreateWindow(IILjava/lang/CharSequence;JJ)J")) + private void vulkanHint(WindowEventHandler windowEventHandler, ScreenManager screenManager, DisplayData displayData, String string, String string2, CallbackInfo ci) { + GLFW.glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json similarity index 68% rename from src/main/resources/fabric.mod.json rename to fabric/src/main/resources/fabric.mod.json index b03b4eb48..eda11788d 100644 --- a/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -1,8 +1,7 @@ { "schemaVersion": 1, "id": "vulkanmod", - "version": "0.3.4_dev", - + "version": "${version}", "name": "VulkanMod", "description": "Bring Vulkan to Minecraft!", "authors": [ @@ -15,19 +14,18 @@ "icon": "assets/vulkanmod/Vlogo.png", - "environment": "client", + "environment": "*", "entrypoints": { "client": [ - "net.vulkanmod.Initializer" + "net.vulkanmod.fabric.VulkanModFabric" ] }, "mixins": [ - "vulkanmod.mixins.json" + "vulkanmod.mixins.json", + "vulkanmod-common.mixins.json" ], - "accessWidener" : "vulkanmod.accesswidener", - "depends": { - "fabricloader": ">=0.14.14", + "fabric": "*", "minecraft": ">=1.20", "java": ">=17" } diff --git a/fabric/src/main/resources/vulkanmod.mixins.json b/fabric/src/main/resources/vulkanmod.mixins.json new file mode 100644 index 000000000..d58c5840d --- /dev/null +++ b/fabric/src/main/resources/vulkanmod.mixins.json @@ -0,0 +1,18 @@ +{ + "required": true, + "package": "net.vulkanmod.fabric.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "client": [ + "FabricMinecraftM", + "FabricWindowM", + "FabricShaderInstanceM", + "FabricLiquidBlockRendererM", + "FabricLevelRendererM" + ], + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/forge/build.gradle b/forge/build.gradle new file mode 100644 index 000000000..39311846f --- /dev/null +++ b/forge/build.gradle @@ -0,0 +1,109 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" + id 'maven-publish' +} + +architectury { + platformSetupLoomIde() + forge() +} + +loom { + accessWidenerPath = project(":common").loom.accessWidenerPath + + forge { + convertAccessWideners = true + extraAccessWideners.add loom.accessWidenerPath.get().asFile.name + + mixinConfig "vulkanmod-common.mixins.json" + mixinConfig "vulkanmod.mixins.json" + } +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common +} + +dependencies { + forge "net.minecraftforge:forge:${rootProject.forge_version}" + + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vulkan:$lwjglVersion")) + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives")) + include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives")) + + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vma:$lwjglVersion")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vma:$lwjglVersion:$winNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vma:$lwjglVersion:$linuxNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-vma:$lwjglVersion:$macosArmNatives")) + + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-shaderc:$lwjglVersion")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$winNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$linuxNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosNatives")) + include(forgeRuntimeLibrary("org.lwjgl:lwjgl-shaderc:$lwjglVersion:$macosArmNatives")) + + include(implementation("com.google.code.findbugs:jsr305:3.0.2")) + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } +} + +repositories { + maven { url "https://maven.minecraftforge.net/releases/" } +} + +processResources { + inputs.property "version", project.version + + filesMatching("META-INF/mods.toml") { + expand "version": project.version + } +} + +shadowJar { + exclude "fabric.mod.json" + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + //classifier "dev-shadow" +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar +} + +jar { + //classifier "dev" +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenForge(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/forge/gradle.properties b/forge/gradle.properties new file mode 100644 index 000000000..32f842a63 --- /dev/null +++ b/forge/gradle.properties @@ -0,0 +1 @@ +loom.platform=forge \ No newline at end of file diff --git a/forge/src/main/java/net/vulkanmod/forge/VulkanModExpectPlatformImpl.java b/forge/src/main/java/net/vulkanmod/forge/VulkanModExpectPlatformImpl.java new file mode 100644 index 000000000..e54abc2b3 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/VulkanModExpectPlatformImpl.java @@ -0,0 +1,16 @@ +package net.vulkanmod.forge; + +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.FMLPaths; + +import java.nio.file.Path; + +public class VulkanModExpectPlatformImpl { + public static Path getConfigDirectory() { + return FMLPaths.CONFIGDIR.get(); + } + + public static String getVersion() { + return ModList.get().getModContainerById("vulkanmod").get().getModInfo().getVersion().toString(); + } +} diff --git a/forge/src/main/java/net/vulkanmod/forge/VulkanModForge.java b/forge/src/main/java/net/vulkanmod/forge/VulkanModForge.java new file mode 100644 index 000000000..b59abe241 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/VulkanModForge.java @@ -0,0 +1,11 @@ +package net.vulkanmod.forge; + +import net.minecraftforge.fml.common.Mod; +import net.vulkanmod.Initializer; + +@Mod(Initializer.MODID) +public class VulkanModForge { + public VulkanModForge() { + Initializer.onInitializeClient(); + } +} \ No newline at end of file diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/DisplayWindowM.java b/forge/src/main/java/net/vulkanmod/forge/mixin/DisplayWindowM.java new file mode 100644 index 000000000..e065d9686 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/DisplayWindowM.java @@ -0,0 +1,21 @@ +package net.vulkanmod.forge.mixin; + +import net.minecraftforge.fml.earlydisplay.DisplayWindow; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(DisplayWindow.class) +public class DisplayWindowM { + /** + * @author + */ + @Overwrite(remap = false) + public void render(int alpha) {} + + /** + * @author + */ + @Overwrite(remap = false) + public void initWindow(@Nullable String mcVersion) {} +} diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/ElementShaderMixin.java b/forge/src/main/java/net/vulkanmod/forge/mixin/ElementShaderMixin.java new file mode 100644 index 000000000..004af7b22 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/ElementShaderMixin.java @@ -0,0 +1,17 @@ +package net.vulkanmod.forge.mixin; + +import net.minecraftforge.fml.earlydisplay.ElementShader; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ElementShader.class) +public abstract class ElementShaderMixin implements IElementShader { + /** + * @author + * @reason + */ + @Override + public void init() { + + } + +} diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeLevelRendererM.java b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeLevelRendererM.java new file mode 100644 index 000000000..6fdda69cd --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeLevelRendererM.java @@ -0,0 +1,32 @@ +package net.vulkanmod.forge.mixin; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.LightTexture; +import net.vulkanmod.render.profiling.Profiler2; +import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LevelRenderer.class) +public abstract class ForgeLevelRendererM { +/* @Inject(method = "renderLevel", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" + , shift = At.Shift.BEFORE)) + private void pushProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { + Profiler2 profiler = Profiler2.getMainProfiler(); + profiler.push("particles"); + } + + @Inject(method = "renderLevel", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V" + , shift = At.Shift.AFTER)) + private void popProfiler3(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { + Profiler2 profiler = Profiler2.getMainProfiler(); + profiler.pop(); + }*/ +} diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeMinecraftM.java b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeMinecraftM.java new file mode 100644 index 000000000..4f5207238 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeMinecraftM.java @@ -0,0 +1,19 @@ +package net.vulkanmod.forge.mixin; + +import dev.architectury.patchedmixin.staticmixin.spongepowered.asm.mixin.injection.At; +import dev.architectury.patchedmixin.staticmixin.spongepowered.asm.mixin.injection.Inject; +import dev.architectury.patchedmixin.staticmixin.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import dev.architectury.patchedmixin.staticmixin.spongepowered.asm.mixin.injection.callback.LocalCapture; +import net.minecraft.client.Minecraft; +import net.vulkanmod.render.texture.SpriteUtil; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(Minecraft.class) +public class ForgeMinecraftM { + @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;tick()V"), + locals = LocalCapture.CAPTURE_FAILHARD) + private void redirectResourceTick(boolean bl, CallbackInfo ci, long l, Runnable runnable, int i, int j) { + int n = Math.min(10, i) - 1; + SpriteUtil.setDoUpload(j == n); + } +} diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeWindowM.java b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeWindowM.java new file mode 100644 index 000000000..6ec986811 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/ForgeWindowM.java @@ -0,0 +1,25 @@ +package net.vulkanmod.forge.mixin; + +import com.mojang.blaze3d.platform.Window; +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.function.IntSupplier; +import java.util.function.LongSupplier; +import java.util.function.Supplier; + +import static org.lwjgl.glfw.GLFW.GLFW_CLIENT_API; +import static org.lwjgl.glfw.GLFW.GLFW_NO_API; + +@Mixin(Window.class) +public class ForgeWindowM { + + @Redirect(method = "", at = @At(value = "INVOKE", + target = "Lnet/minecraftforge/fml/loading/ImmediateWindowHandler;setupMinecraftWindow(Ljava/util/function/IntSupplier;Ljava/util/function/IntSupplier;Ljava/util/function/Supplier;Ljava/util/function/LongSupplier;)J")) + private long redirectFML(IntSupplier width, IntSupplier height, Supplier title, LongSupplier monitor) { + GLFW.glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + return GLFW.glfwCreateWindow(width.getAsInt(), height.getAsInt(), title.get(), monitor.getAsLong(), 0L); + } +} \ No newline at end of file diff --git a/forge/src/main/java/net/vulkanmod/forge/mixin/IElementShader.java b/forge/src/main/java/net/vulkanmod/forge/mixin/IElementShader.java new file mode 100644 index 000000000..15a8eac94 --- /dev/null +++ b/forge/src/main/java/net/vulkanmod/forge/mixin/IElementShader.java @@ -0,0 +1,5 @@ +package net.vulkanmod.forge.mixin; + +public interface IElementShader { + void init(); +} diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml new file mode 100644 index 000000000..ef553e841 --- /dev/null +++ b/forge/src/main/resources/META-INF/mods.toml @@ -0,0 +1,28 @@ +modLoader = "javafml" +loaderVersion = "[47,)" +issueTrackerURL = "https://github.com/xCollateral/VulkanMod/issues" +license = "LGPLv3" + +[[mods]] +modId = "vulkanmod" +version = "${version}" +displayName = "VulkanMod" +authors = "Collateral" +description = ''' +Bring Vulkan to Minecraft! +''' +logoFile = "assets/vulkanmod/Vlogo.png" + +[[dependencies.vulkanmod]] +modId = "forge" +mandatory = true +versionRange = "[47,)" +ordering = "NONE" +side = "CLIENT" + +[[dependencies.vulkanmod]] +modId = "minecraft" +mandatory = true +versionRange = "[1.20,)" +ordering = "NONE" +side = "CLIENT" \ No newline at end of file diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta new file mode 100644 index 000000000..133cbf475 --- /dev/null +++ b/forge/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "VulkanMod", + "pack_format": 13 + } +} diff --git a/forge/src/main/resources/vulkanmod.mixins.json b/forge/src/main/resources/vulkanmod.mixins.json new file mode 100644 index 000000000..e7118dbc5 --- /dev/null +++ b/forge/src/main/resources/vulkanmod.mixins.json @@ -0,0 +1,18 @@ +{ + "required": true, + "package": "net.vulkanmod.forge.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "client": [ + "DisplayWindowM", + "ElementShaderMixin", + "ForgeMinecraftM", + "ForgeWindowM", + "ForgeLevelRendererM" + ], + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 1b1bd8fdb..b96490a75 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,17 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx3G -# Fabric Properties - # check these on https://fabricmc.net/develop - minecraft_version=1.20.2 - yarn_mappings=1.20.2+build.1 - loader_version=0.14.22 +minecraft_version=1.20.2 +enabled_platforms=fabric,forge - #Fabric api - fabric_version=0.89.0+1.20.2 +architectury_version=9.1.12 -# Mod Properties - mod_version = 0.3.4_dev - maven_group = net.vulkanmod - archives_base_name = VulkanMod_1.20 +yarn_mappings=1.20.2+build.1 +fabric_loader_version=0.14.22 +fabric_api_version=0.89.0+1.20.2 + +forge_version=1.20.2-48.0.7 + +mod_version = 0.3.4_dev +maven_group = net.vulkanmod +archives_base_name = VulkanMod_1.20 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 41dfb8790..59bc51a20 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index b02216baa..9ad080cbb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,14 @@ pluginManagement { repositories { - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - mavenCentral() + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.architectury.dev/" } + maven { url "https://maven.minecraftforge.net/" } gradlePluginPortal() } } + +include("common") +include("fabric") +include("forge") + +rootProject.name = "VulkanMod" diff --git a/src/main/java/net/vulkanmod/gl/Util.java b/src/main/java/net/vulkanmod/gl/Util.java deleted file mode 100644 index b7b475b82..000000000 --- a/src/main/java/net/vulkanmod/gl/Util.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.vulkanmod.gl; - -import net.vulkanmod.vulkan.shader.SPIRVUtils; - -public class Util { - - public static SPIRVUtils.ShaderKind extToShaderKind(String in) { - return switch (in) { - case ".vsh" -> SPIRVUtils.ShaderKind.VERTEX_SHADER; - case ".fsh" -> SPIRVUtils.ShaderKind.FRAGMENT_SHADER; - default -> throw new RuntimeException("unknown shader type: " + in); - }; - } -} diff --git a/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java b/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java deleted file mode 100644 index 6f13d1a98..000000000 --- a/src/main/java/net/vulkanmod/mixin/texture/MTextureUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.vulkanmod.mixin.texture; - -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.platform.NativeImage; -import com.mojang.blaze3d.platform.TextureUtil; -import com.mojang.blaze3d.systems.RenderSystem; -import net.vulkanmod.gl.GlTexture; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -@Mixin(TextureUtil.class) -public class MTextureUtil { - - /** - * @author - */ - @Overwrite(remap = false) - public static int generateTextureId() { - return GlStateManager._genTexture(); - } - - /** - * @author - */ - @Overwrite(remap = false) - public static void prepareImage(NativeImage.InternalGlFormat internalGlFormat, int id, int j, int k, int l) {} -} diff --git a/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java b/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java deleted file mode 100644 index 8238611c2..000000000 --- a/src/main/java/net/vulkanmod/vulkan/shader/SPIRVUtils.java +++ /dev/null @@ -1,114 +0,0 @@ -package net.vulkanmod.vulkan.shader; - -import org.lwjgl.system.MemoryUtil; -import org.lwjgl.system.NativeResource; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.ByteBuffer; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static org.lwjgl.system.MemoryUtil.NULL; -import static org.lwjgl.util.shaderc.Shaderc.*; - -public class SPIRVUtils { - private static final boolean DEBUG = true; - private static final boolean OPTIMIZATIONS = false; - - private static long compiler; - - public static SPIRV compileShaderAbsoluteFile(String shaderFile, ShaderKind shaderKind) { - try { - String source = new String(Files.readAllBytes(Paths.get(new URI(shaderFile)))); - return compileShader(shaderFile, source, shaderKind); - } catch (IOException | URISyntaxException e) { - e.printStackTrace(); - } - return null; - } - - public static SPIRV compileShader(String filename, String source, ShaderKind shaderKind) { - - if(compiler == 0) compiler = shaderc_compiler_initialize(); - - if(compiler == NULL) { - throw new RuntimeException("Failed to create shader compiler"); - } - - long options = shaderc_compile_options_initialize(); - - if(options == NULL) { - throw new RuntimeException("Failed to create compiler options"); - } - - if(OPTIMIZATIONS) - shaderc_compile_options_set_optimization_level(options, shaderc_optimization_level_performance); - - if(DEBUG) - shaderc_compile_options_set_generate_debug_info(options); - - long result = shaderc_compile_into_spv(compiler, source, shaderKind.kind, filename, "main", options); - - if(result == NULL) { - throw new RuntimeException("Failed to compile shader " + filename + " into SPIR-V"); - } - - if(shaderc_result_get_compilation_status(result) != shaderc_compilation_status_success) { - throw new RuntimeException("Failed to compile shader " + filename + " into SPIR-V:\n" + shaderc_result_get_error_message(result)); - } - - return new SPIRV(result, shaderc_result_get_bytes(result)); - } - - private static SPIRV readFromStream(InputStream inputStream) { - try { - byte[] bytes = inputStream.readAllBytes(); - ByteBuffer buffer = MemoryUtil.memAlloc(bytes.length); - buffer.put(bytes); - buffer.position(0); - - return new SPIRV(MemoryUtil.memAddress(buffer), buffer); - } catch (Exception e) { - e.printStackTrace(); - } - throw new RuntimeException("unable to read inputStream"); - } - - public enum ShaderKind { - VERTEX_SHADER(shaderc_glsl_vertex_shader), - GEOMETRY_SHADER(shaderc_glsl_geometry_shader), - FRAGMENT_SHADER(shaderc_glsl_fragment_shader), - COMPUTE_SHADER(shaderc_glsl_compute_shader); - - private final int kind; - - ShaderKind(int kind) { - this.kind = kind; - } - } - - public static final class SPIRV implements NativeResource { - - private final long handle; - private ByteBuffer bytecode; - - public SPIRV(long handle, ByteBuffer bytecode) { - this.handle = handle; - this.bytecode = bytecode; - } - - public ByteBuffer bytecode() { - return bytecode; - } - - @Override - public void free() { -// shaderc_result_release(handle); - bytecode = null; // Help the GC - } - } - -} \ No newline at end of file