Shadow Compute Shaders (#1333)

This commit is contained in:
Jason Mitchell authored and GitHub committed 2026-01-28 00:03:04 -08:00
1 parent b75a5d8f7d
commit bee9541797
37 files changed
+1111 -252

No files matched your search

@@ -70,6 +70,7 @@ public class ShaderPack {
public final CustomUniforms.Builder customUniforms;
private final ProgramSet base;
private final Set<FeatureFlags> activeFeatures;
private final Map<String, String> dimensionMap;
private final Map<String, ProgramSet> dimensionProgramSets;
@@ -211,15 +212,29 @@ public class ShaderPack {
List<StringPair> finalEnvironmentDefines = new ArrayList<>();
environmentDefines.forEach(finalEnvironmentDefines::add);
for (FeatureFlags flag : FeatureFlags.values()) {
if (flag.isUsable()) {
boolean usable = flag.isUsable();
Iris.logger.info("FeatureFlag {} usable: {}", flag.name(), usable);
if (usable) {
finalEnvironmentDefines.add(new StringPair("IRIS_FEATURE_" + flag.name(), ""));
}
}
Iris.logger.info("Environment defines: {}", finalEnvironmentDefines.stream()
.map(p -> p.getKey() + "=" + p.getValue())
.collect(java.util.stream.Collectors.joining(", ")));
this.shaderProperties = Optional.ofNullable(readProperties(root, "shaders.properties"))
.map(source -> new ShaderProperties(source, shaderPackOptions, finalEnvironmentDefines))
.orElseGet(ShaderProperties::empty);
// Build the set of active feature flags from required and optional flags
this.activeFeatures = new HashSet<>();
for (String flag : shaderProperties.getRequiredFeatureFlags()) {
activeFeatures.add(FeatureFlags.getValue(flag));
}
for (String flag : shaderProperties.getOptionalFeatureFlags()) {
activeFeatures.add(FeatureFlags.getValue(flag));
}
List<FeatureFlags> invalidFlagList = shaderProperties.getRequiredFeatureFlags().stream().filter(FeatureFlags::isInvalid).map(FeatureFlags::getValue).collect(Collectors.toList());
List<String> invalidFeatureFlags = invalidFlagList.stream().map(FeatureFlags::getHumanReadableName).collect(Collectors.toList());
@@ -717,4 +732,11 @@ public class ShaderPack {
return Optional.ofNullable(customNoiseTexture);
}
public Set<FeatureFlags> getActiveFeatures() {
return activeFeatures;
}
public boolean hasFeature(FeatureFlags feature) {
return activeFeatures.contains(feature);
}
}