Verify Sanctuary shaders on Vulkan with explicit backend tests
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-18 01:59:13 +02:00
parent 91181865d5
commit 9d84a02ed9
4 changed files with 124 additions and 2 deletions
+9
View File
@@ -25,6 +25,15 @@ if (clientRenderTests) {
java.srcDir('src/clientGametest/java')
}
tasks.named('runClientGameTest') {
def graphicsBackend = providers.gradleProperty('sanctuaryClientGraphicsBackend')
if (graphicsBackend.isPresent()) {
args('--graphicsBackend', graphicsBackend.get())
systemProperty('sanctuary.test.graphicsBackend', graphicsBackend.get())
}
def improvedTransparency = providers.gradleProperty('sanctuaryClientImprovedTransparency')
if (improvedTransparency.isPresent()) {
systemProperty('sanctuary.test.improvedTransparency', improvedTransparency.get())
}
systemProperty('sanctuary.test.noVsync', providers.gradleProperty('sanctuaryClientNoVsync').getOrElse('false'))
systemProperty('sanctuary.test.quick', providers.gradleProperty('sanctuaryQuickTests').getOrElse('false'))
systemProperty('sanctuary.test.introVisualOnly', providers.gradleProperty('sanctuaryIntroVisualOnly').getOrElse('false'))
@@ -51,6 +51,14 @@ public final class PixelShadows122ClientChecks implements FabricClientGameTest {
@Override
public void runTest(ClientGameTestContext c) {
c.runOnClient(m -> {
var info = com.mojang.blaze3d.systems.RenderSystem.getDevice().getDeviceInfo();
String expected = System.getProperty("sanctuary.test.graphicsBackend", "");
check(expected.isEmpty() || info.backendName().equalsIgnoreCase(expected),
"Requested graphics backend must not silently fall back: " + expected + " / " + info.backendName());
System.out.println("SHADER139_BACKEND " + info.backendName() + " / " + info.name()
+ " / " + info.driverInfo() + " / zeroToOne=" + info.isZZeroToOne());
});
var path = FabricLoader.getInstance().getConfigDir().resolve("sanctuary-shaders.json");
final byte[] originalPreferences;
try {
@@ -82,6 +90,9 @@ public final class PixelShadows122ClientChecks implements FabricClientGameTest {
m.options.bobView().set(false);
m.options.pauseOnLostFocus = false;
m.options.setCameraType(CameraType.FIRST_PERSON);
String transparency = System.getProperty("sanctuary.test.improvedTransparency");
if (transparency != null) m.options.improvedTransparency().set(Boolean.parseBoolean(transparency));
System.out.println("SHADER139_TRANSPARENCY " + m.options.improvedTransparency().get());
checkPreferences();
});
try (var world = c.worldBuilder().adjustSettings(s -> {
@@ -653,11 +664,11 @@ public final class PixelShadows122ClientChecks implements FabricClientGameTest {
}
private record Options(int distance, int simulationDistance, int fov, boolean bob,
boolean pause, CameraType camera, String language) {
boolean pause, CameraType camera, String language, boolean improvedTransparency) {
static Options capture(Minecraft m) {
return new Options(m.options.renderDistance().get(), m.options.simulationDistance().get(), m.options.fov().get(),
m.options.bobView().get(), m.options.pauseOnLostFocus,
m.options.getCameraType(), m.getLanguageManager().getSelected());
m.options.getCameraType(), m.getLanguageManager().getSelected(), m.options.improvedTransparency().get());
}
void restore(Minecraft m) {
@@ -667,6 +678,7 @@ public final class PixelShadows122ClientChecks implements FabricClientGameTest {
m.options.bobView().set(bob);
m.options.pauseOnLostFocus = pause;
m.options.setCameraType(camera);
m.options.improvedTransparency().set(improvedTransparency);
m.getLanguageManager().setSelected(language);
m.getLanguageManager().onResourceManagerReload(m.getResourceManager());
}