diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java index 9135b6fc..37e1179b 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java @@ -34,7 +34,7 @@ public class VoxyConfig implements OptionStorage { public boolean useEnvironmentalFog = false; public boolean renderStatistics = false; - public static VoxyConfig loadOrCreate() { + private static VoxyConfig loadOrCreate() { if (VoxyCommon.isAvailable()) { var path = getConfigPath(); if (Files.exists(path)) { diff --git a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java index f3c78c9e..bc831b05 100644 --- a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java +++ b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java @@ -214,6 +214,21 @@ public class IrisShaderPatch { PatchGson patchData = null; try { //TODO: basicly find any "commented out" quotation marks and escape them (if the line, when stripped starts with a // or /* then escape all quotation marks in that line) + { + StringBuilder builder = new StringBuilder(voxyPatchData.length()); + //Rebuild the patch, replacing commented out " with \" + for (var line : voxyPatchData.split("\n")) { + int idx = line.indexOf("//"); + if (idx != -1) { + builder.append(line, 0, idx); + builder.append(line.substring(idx).replace("\"","\\\"")); + } else { + builder.append(line); + } + builder.append("\n"); + } + voxyPatchData = builder.toString(); + } patchData = GSON.fromJson(voxyPatchData, PatchGson.class); if (patchData != null && !patchData.checkValid()) { throw new IllegalStateException("voxy json patch not valid: " + voxyPatchData); diff --git a/src/main/java/me/cortex/voxy/client/iris/IrisVoxyRenderPipelineData.java b/src/main/java/me/cortex/voxy/client/iris/IrisVoxyRenderPipelineData.java index e5ff9639..93e81b4d 100644 --- a/src/main/java/me/cortex/voxy/client/iris/IrisVoxyRenderPipelineData.java +++ b/src/main/java/me/cortex/voxy/client/iris/IrisVoxyRenderPipelineData.java @@ -386,7 +386,13 @@ public class IrisVoxyRenderPipelineData { int i = 0; for (var entry : samplerSet) { samplers[i]=entry; - builder.append("layout(binding=(BASE_SAMPLER_BINDING_INDEX+").append(i).append(")) uniform sampler2D ").append(entry.name).append(";\n"); + + String samplerType = "sampler2D"; + if (entry.name.startsWith("shadowtex")) { + samplerType = "sampler2DShadow"; + } + + builder.append("layout(binding=(BASE_SAMPLER_BINDING_INDEX+").append(i).append(")) uniform ").append(samplerType).append(" ").append(entry.name).append(";\n"); i++; } diff --git a/src/main/java/me/cortex/voxy/client/iris/VoxyUniforms.java b/src/main/java/me/cortex/voxy/client/iris/VoxyUniforms.java index 1c539805..e40871de 100644 --- a/src/main/java/me/cortex/voxy/client/iris/VoxyUniforms.java +++ b/src/main/java/me/cortex/voxy/client/iris/VoxyUniforms.java @@ -37,7 +37,7 @@ public class VoxyUniforms { public static void addUniforms(UniformHolder uniforms) { uniforms - .uniform1i(PER_FRAME, "vxRenderDistance", ()-> VoxyConfig.loadOrCreate().sectionRenderDistance*32)//In chunks + .uniform1i(PER_FRAME, "vxRenderDistance", ()-> VoxyConfig.CONFIG.sectionRenderDistance*32)//In chunks .uniformMatrix(PER_FRAME, "vxViewProj", VoxyUniforms::getViewProjection) .uniformMatrix(PER_FRAME, "vxViewProjInv", new Inverted(VoxyUniforms::getViewProjection)) .uniformMatrix(PER_FRAME, "vxViewProjPrev", new PreviousMat(VoxyUniforms::getViewProjection)) @@ -50,7 +50,7 @@ public class VoxyUniforms { .uniform1f(PER_FRAME, "dhNearPlane", ()->16)//Presently hardcoded in voxy .uniform1f(PER_FRAME, "dhFarPlane", ()->16*3000)//Presently hardcoded in voxy - .uniform1i(PER_FRAME, "dhRenderDistance", ()-> VoxyConfig.loadOrCreate().sectionRenderDistance*32)//In chunks + .uniform1i(PER_FRAME, "dhRenderDistance", ()-> VoxyConfig.CONFIG.sectionRenderDistance*32)//In chunks .uniformMatrix(PER_FRAME, "dhProjection", VoxyUniforms::getProjection) .uniformMatrix(PER_FRAME, "dhProjectionInverse", new Inverted(VoxyUniforms::getProjection)) .uniformMatrix(PER_FRAME, "dhPreviousProjection", new PreviousMat(VoxyUniforms::getProjection)); diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46/cmdgen.comp b/src/main/resources/assets/voxy/shaders/lod/gl46/cmdgen.comp index bf363859..673b9619 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/cmdgen.comp +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/cmdgen.comp @@ -81,6 +81,7 @@ void main() { positionBuffer[drawId] = extractRawPos(meta); uvec4 counts = meta.b; + //TODO implicit command merging uint msk = 0; msk |= uint(((counts.y &0xFFFFu)!=0) && (relative.y>-1))<<0; msk |= uint((((counts.y>>16)&0xFFFFu)!=0) && (relative.y<1 ))<<1;