From 812765d877c0b0ae765c9978774f46ede5416a3f Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Fri, 1 Dec 2023 11:52:12 +1000 Subject: [PATCH] Shuffle some contexts --- .../execution/BatchedUpdateDescriptorSet.java | 2 +- .../rendering/srp/api/layout/Layout.java | 2 +- .../rendering/srp/lua/LuaConstants.java | 59 +++++++++++++++++++ .../rendering/srp/lua/LuaContextHost.java | 20 +------ .../srp/lua/LuaShaderPropertiesBuilder.java | 5 ++ .../cortex/vulkanite/lib/shader/VShader.java | 2 +- .../iris/MixinNewWorldRenderingPipeline.java | 4 ++ src/main/resources/fabric.mod.json | 3 +- 8 files changed, 74 insertions(+), 23 deletions(-) create mode 100644 src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaConstants.java create mode 100644 src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaShaderPropertiesBuilder.java diff --git a/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/execution/BatchedUpdateDescriptorSet.java b/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/execution/BatchedUpdateDescriptorSet.java index df22041..e1bd2e1 100644 --- a/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/execution/BatchedUpdateDescriptorSet.java +++ b/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/execution/BatchedUpdateDescriptorSet.java @@ -94,6 +94,6 @@ public long updateAndGetSet(VCmdBuff cmd) { } public void destroy() { - + this.pool.free(); } } diff --git a/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/layout/Layout.java b/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/layout/Layout.java index 11a45a7..9d8e4b8 100644 --- a/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/layout/Layout.java +++ b/src/main/java/me/cortex/vulkanite/client/rendering/srp/api/layout/Layout.java @@ -6,8 +6,8 @@ public class Layout { private final List bindings = new ArrayList<>(); - private final int hash; + public Layout(LayoutBinding... bindings) { this(List.of(bindings)); } diff --git a/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaConstants.java b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaConstants.java new file mode 100644 index 0000000..a392492 --- /dev/null +++ b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaConstants.java @@ -0,0 +1,59 @@ +package me.cortex.vulkanite.client.rendering.srp.lua; + + +import net.minecraft.client.MinecraftClient; +import net.minecraft.registry.RegistryKeys; +import org.luaj.vm2.LuaValue; + +import static me.cortex.vulkanite.client.rendering.srp.api.layout.LayoutBinding.ACCESS_READ; +import static me.cortex.vulkanite.client.rendering.srp.api.layout.LayoutBinding.ACCESS_WRITE; +import static org.lwjgl.vulkan.KHRAccelerationStructure.VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR; +import static org.lwjgl.vulkan.KHRRayTracingPipeline.*; +import static org.lwjgl.vulkan.VK10.*; + +//Environment about the game such as block lists, biomes etc +public class LuaConstants { + public static void addVkConstants(LuaValue env) { + env.set("SHADER_RAY_GEN", VK_SHADER_STAGE_RAYGEN_BIT_KHR); + env.set("SHADER_RAY_MISS", VK_SHADER_STAGE_MISS_BIT_KHR); + env.set("SHADER_RAY_CHIT", VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR); + env.set("SHADER_RAY_AHIT", VK_SHADER_STAGE_ANY_HIT_BIT_KHR); + env.set("SHADER_RAY_INTER", VK_SHADER_STAGE_INTERSECTION_BIT_KHR); + env.set("SHADER_COMPUTE", VK_SHADER_STAGE_COMPUTE_BIT); + + env.set("ACCESS_READ", ACCESS_READ); + env.set("ACCESS_WRITE", ACCESS_WRITE); + env.set("ACCESS_RW", ACCESS_READ|ACCESS_WRITE); + + env.set("LAYOUT_ACCELERATION", VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR); + env.set("LAYOUT_UNIFORM_BUFFER", VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER); + env.set("LAYOUT_STORAGE_BUFFER", VK_DESCRIPTOR_TYPE_STORAGE_BUFFER); + env.set("LAYOUT_STORAGE_IMAGE", VK_DESCRIPTOR_TYPE_STORAGE_IMAGE); + env.set("LAYOUT_IMAGE_SAMPLER", VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); + } + + public static void addWorldConstants(LuaValue env) { + var world = MinecraftClient.getInstance().world; + if (world == null) { + //If there is no world, cannot add world constants + return; + } + /* + var rm = world.getRegistryManager(); + { + var blockRegistry = rm.get(RegistryKeys.BLOCK); + for (var blockEntry : blockRegistry.getEntrySet()) { + + blockRegistry.getEntry(blockEntry.getKey()).get().isIn(TagK) + + } + } + var biomes = rm.get(RegistryKeys.BIOME).getEntrySet(); + */ + } + + public static void addConstants(LuaValue env) { + addVkConstants(env); + addWorldConstants(env); + } +} \ No newline at end of file diff --git a/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaContextHost.java b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaContextHost.java index f7d26e0..7296360 100644 --- a/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaContextHost.java +++ b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaContextHost.java @@ -61,24 +61,6 @@ public void run() { this.generationFunction.call(); } - private void addConstants(LuaValue env) { - env.set("SHADER_RAY_GEN", VK_SHADER_STAGE_RAYGEN_BIT_KHR); - env.set("SHADER_RAY_MISS", VK_SHADER_STAGE_MISS_BIT_KHR); - env.set("SHADER_RAY_CHIT", VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR); - env.set("SHADER_RAY_AHIT", VK_SHADER_STAGE_ANY_HIT_BIT_KHR); - env.set("SHADER_RAY_INTER", VK_SHADER_STAGE_INTERSECTION_BIT_KHR); - env.set("SHADER_COMPUTE", VK_SHADER_STAGE_COMPUTE_BIT); - - env.set("ACCESS_READ", ACCESS_READ); - env.set("ACCESS_WRITE", ACCESS_WRITE); - env.set("ACCESS_RW", ACCESS_READ|ACCESS_WRITE); - - env.set("LAYOUT_ACCELERATION", VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR); - env.set("LAYOUT_UNIFORM_BUFFER", VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER); - env.set("LAYOUT_STORAGE_BUFFER", VK_DESCRIPTOR_TYPE_STORAGE_BUFFER); - env.set("LAYOUT_STORAGE_IMAGE", VK_DESCRIPTOR_TYPE_STORAGE_IMAGE); - env.set("LAYOUT_IMAGE_SAMPLER", VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); - } private void addLuaStdLib(LuaTable table) { new Bit32Lib().call(LuaValue.valueOf("bit32"), table); @@ -90,7 +72,7 @@ private void addLuaStdLib(LuaTable table) { private LuaValue createStandardLibrary() { var env = new LuaTable(); addLuaStdLib(env); - addConstants(env); + LuaConstants.addConstants(env); env.set("ctx", createContextTable()); env.set("Buffer", new LuaJFunction(this.functions::Buffer)); env.set("Image", new LuaJFunction(this.functions::Image)); diff --git a/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaShaderPropertiesBuilder.java b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaShaderPropertiesBuilder.java new file mode 100644 index 0000000..1546cf8 --- /dev/null +++ b/src/main/java/me/cortex/vulkanite/client/rendering/srp/lua/LuaShaderPropertiesBuilder.java @@ -0,0 +1,5 @@ +package me.cortex.vulkanite.client.rendering.srp.lua; + +public class LuaShaderPropertiesBuilder { + +} diff --git a/src/main/java/me/cortex/vulkanite/lib/shader/VShader.java b/src/main/java/me/cortex/vulkanite/lib/shader/VShader.java index 6b868da..5d3dce5 100644 --- a/src/main/java/me/cortex/vulkanite/lib/shader/VShader.java +++ b/src/main/java/me/cortex/vulkanite/lib/shader/VShader.java @@ -18,7 +18,7 @@ public class VShader extends TrackedResourceObject { private final VContext ctx; public final long module; public final int stage; - public final ShaderReflection reflection; + private final ShaderReflection reflection; public ShaderReflection getReflection() { return reflection; diff --git a/src/main/java/me/cortex/vulkanite/mixin/iris/MixinNewWorldRenderingPipeline.java b/src/main/java/me/cortex/vulkanite/mixin/iris/MixinNewWorldRenderingPipeline.java index 9e3955d..5151885 100644 --- a/src/main/java/me/cortex/vulkanite/mixin/iris/MixinNewWorldRenderingPipeline.java +++ b/src/main/java/me/cortex/vulkanite/mixin/iris/MixinNewWorldRenderingPipeline.java @@ -67,6 +67,10 @@ private VGImage[] getCustomTextures() { @Inject(method = "", at = @At("TAIL")) private void injectRTShader(ProgramSet set, CallbackInfo ci) { ctx = Vulkanite.INSTANCE.getCtx(); + if (this.pipeline != null) { + this.pipeline.destory(); + } + pipeline = new VkPipeline2(ctx, new LuaContextHost(path -> { try { return Files.readAllBytes(new File("shaderpacks/testpack/shaders/" + path).toPath()); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f764737..7293121 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,5 +17,6 @@ "fabricloader": ">=0.14.21", "iris": "=1.6.10", "sodium": "=0.5.3" - } + }, + "accessWidener": "vulkanite.accesswidener" }