more shader logging

This commit is contained in:
mcrcortex
2025-10-19 10:57:24 +10:00
parent a0512ef044
commit 2c62c876fa
2 changed files with 31 additions and 7 deletions

View File

@@ -9,6 +9,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
import me.cortex.voxy.common.Logger;
import net.irisshaders.iris.shaderpack.ShaderPack;
import net.irisshaders.iris.shaderpack.include.AbsolutePackPath;
import org.apache.commons.logging.Log;
import org.lwjgl.opengl.ARBDrawBuffersBlend;
import java.lang.reflect.Modifier;
@@ -140,6 +141,7 @@ public class IrisShaderPatch {
}
}
} else {
Logger.error("Unknown blend state "+val);
state = null;
}
if (bs != null) {
@@ -175,16 +177,33 @@ public class IrisShaderPatch {
public boolean excludeLodsFromVanillaDepth;
public float[] renderScale;
public boolean useViewportDims;
public boolean checkValid() {
public String checkValid() {
if (this.blending != null) {
int i = 0;
for (BlendState state : this.blending.values()) {
if (state.buffer != -1 && (state.buffer<0||this.translucentDrawBuffers.length<=state.buffer)) {
return false;
if (state.buffer<0) {
return "Blending buffer is <0 at index: " + i;
} else {
return "Blending buffer index out of bounds at "+i+" was "+state.buffer+" maximum is " +(this.translucentDrawBuffers.length-1);
}
}
i++;
}
return this.opaqueDrawBuffers != null && this.translucentDrawBuffers != null && this.uniforms != null && this.opaquePatchData != null;
}
if (this.opaquePatchData == null) {
return "Opaque patch data is null";
}
if (this.uniforms == null) {
return "Uniforms are null";
}
if (this.opaqueDrawBuffers == null) {
return "Opaque draw buffers are null";
}
if (this.translucentDrawBuffers == null) {
return "Translucent draw buffers are null";
}
return null;
}
}
@@ -319,27 +338,31 @@ public class IrisShaderPatch {
}
patchData = GSON.fromJson(voxyPatchData, PatchGson.class);
if (patchData == null) {
throw new IllegalStateException("Voxy patch json returned null");
throw new IllegalStateException("Voxy patch json returned null, this is most likely due to malformed json file");
}
{//Inject data from the auxilery files if they are present
var opaque = sourceProvider.apply(directory.resolve("voxy_opaque.glsl"));
if (opaque != null) {
Logger.info("External opaque shader patch applied");
patchData.opaquePatchData = opaque;
}
var translucent = sourceProvider.apply(directory.resolve("voxy_translucent.glsl"));
if (translucent != null) {
Logger.info("External translucent shader patch applied");
patchData.translucentPatchData = translucent;
}
//This might be ok? not.. sure if is nice or not
var taa = sourceProvider.apply(directory.resolve("voxy_taa.glsl"));
if (taa != null) {
Logger.info("External taa shader patch applied");
patchData.taaOffset = taa;
}
}
if (!patchData.checkValid()) {
throw new IllegalStateException("voxy json patch not valid: " + voxyPatchData);
var invalidPatchDataReason = patchData.checkValid();
if (invalidPatchDataReason!=null) {
throw new IllegalStateException("voxy json patch not valid: " + invalidPatchDataReason);
}
} catch (Exception e) {
patchData = null;

View File

@@ -321,6 +321,7 @@ public class IrisVoxyRenderPipelineData {
}
private static ImageSet createImageSet(IrisRenderingPipeline ipipe, IrisShaderPatch patch) {
var samplerDataSet = patch.getSamplerSet();
if (samplerDataSet == null) return null;
Set<String> samplerNameSet = new LinkedHashSet<>(samplerDataSet.keySet());
if (samplerNameSet.isEmpty()) return null;
Set<TextureWSampler> samplerSet = new LinkedHashSet<>();