mirror of
https://github.com/GTNewHorizons/Angelica.git
synced 2026-11-15 09:44:52 +00:00
116 lines
4.3 KiB
Java
116 lines
4.3 KiB
Java
package net.coderbot.iris.shaderpack.loading;
|
|
|
|
import com.gtnewhorizons.angelica.glsm.states.BlendState;
|
|
import net.coderbot.iris.gl.blending.AlphaTest;
|
|
import net.coderbot.iris.gl.blending.AlphaTestFunction;
|
|
import net.coderbot.iris.gl.blending.AlphaTestOverride;
|
|
import net.coderbot.iris.gl.blending.BlendModeOverride;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import java.util.Objects;
|
|
import java.util.Optional;
|
|
|
|
public enum ProgramId {
|
|
Shadow(ProgramGroup.Shadow, ""),
|
|
ShadowSolid(ProgramGroup.Shadow, "solid", Shadow),
|
|
ShadowCutout(ProgramGroup.Shadow, "cutout", Shadow),
|
|
|
|
Basic(ProgramGroup.Gbuffers, "basic"),
|
|
Line(ProgramGroup.Gbuffers, "line", Basic),
|
|
|
|
Textured(ProgramGroup.Gbuffers, "textured", Basic),
|
|
TexturedLit(ProgramGroup.Gbuffers, "textured_lit", Textured),
|
|
SkyBasic(ProgramGroup.Gbuffers, "skybasic", Basic),
|
|
SkyTextured(ProgramGroup.Gbuffers, "skytextured", Textured),
|
|
Clouds(ProgramGroup.Gbuffers, "clouds", Textured),
|
|
|
|
Terrain(ProgramGroup.Gbuffers, "terrain", TexturedLit),
|
|
TerrainSolid(ProgramGroup.Gbuffers, "terrain_solid", Terrain),
|
|
TerrainCutoutMip(ProgramGroup.Gbuffers, "terrain_cutout_mip", Terrain),
|
|
TerrainCutout(ProgramGroup.Gbuffers, "terrain_cutout", Terrain),
|
|
DamagedBlock(ProgramGroup.Gbuffers, "damagedblock", Terrain),
|
|
|
|
Block(ProgramGroup.Gbuffers, "block", Terrain),
|
|
BlockTrans(ProgramGroup.Gbuffers, "block_translucent", Block, BlendModeOverride.OFF),
|
|
BeaconBeam(ProgramGroup.Gbuffers, "beaconbeam", Textured),
|
|
Item(ProgramGroup.Gbuffers, "item", TexturedLit),
|
|
|
|
Entities(ProgramGroup.Gbuffers, "entities", TexturedLit),
|
|
EntitiesTrans(ProgramGroup.Gbuffers, "entities_translucent", Entities),
|
|
EntitiesGlowing(ProgramGroup.Gbuffers, "entities_glowing", Entities),
|
|
ArmorGlint(ProgramGroup.Gbuffers, "armor_glint", Textured),
|
|
SpiderEyes(ProgramGroup.Gbuffers, "spidereyes", Textured,
|
|
new BlendModeOverride(new BlendState(GL11.GL_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO, GL11.GL_ONE)),
|
|
new AlphaTestOverride(new AlphaTest(AlphaTestFunction.GREATER, 0.0001F))),
|
|
|
|
Hand(ProgramGroup.Gbuffers, "hand", TexturedLit),
|
|
Weather(ProgramGroup.Gbuffers, "weather", TexturedLit),
|
|
Water(ProgramGroup.Gbuffers, "water", Terrain),
|
|
HandWater(ProgramGroup.Gbuffers, "hand_water", Hand),
|
|
DhTerrain(ProgramGroup.Dh, "terrain"),
|
|
DhWater(ProgramGroup.Dh, "water", DhTerrain),
|
|
DhGeneric(ProgramGroup.Dh, "generic", DhTerrain),
|
|
DhShadow(ProgramGroup.Dh, "shadow"),
|
|
|
|
Final(ProgramGroup.Final, ""),
|
|
;
|
|
|
|
private final ProgramGroup group;
|
|
private final String sourceName;
|
|
private final ProgramId fallback;
|
|
private final BlendModeOverride defaultBlendOverride;
|
|
private final AlphaTestOverride defaultAlphaTestOverride;
|
|
|
|
ProgramId(ProgramGroup group, String name) {
|
|
this.group = group;
|
|
this.sourceName = name.isEmpty() ? group.getBaseName() : group.getBaseName() + "_" + name;
|
|
this.fallback = null;
|
|
this.defaultBlendOverride = null;
|
|
this.defaultAlphaTestOverride = null;
|
|
}
|
|
|
|
ProgramId(ProgramGroup group, String name, ProgramId fallback) {
|
|
this.group = group;
|
|
this.sourceName = name.isEmpty() ? group.getBaseName() : group.getBaseName() + "_" + name;
|
|
this.fallback = Objects.requireNonNull(fallback);
|
|
this.defaultBlendOverride = null;
|
|
this.defaultAlphaTestOverride = null;
|
|
}
|
|
|
|
ProgramId(ProgramGroup group, String name, ProgramId fallback, BlendModeOverride defaultBlendOverride) {
|
|
this.group = group;
|
|
this.sourceName = name.isEmpty() ? group.getBaseName() : group.getBaseName() + "_" + name;
|
|
this.fallback = Objects.requireNonNull(fallback);
|
|
this.defaultBlendOverride = defaultBlendOverride;
|
|
this.defaultAlphaTestOverride = null;
|
|
}
|
|
|
|
ProgramId(ProgramGroup group, String name, ProgramId fallback, BlendModeOverride defaultBlendOverride, AlphaTestOverride defaultAlphaTestOverride) {
|
|
this.group = group;
|
|
this.sourceName = name.isEmpty() ? group.getBaseName() : group.getBaseName() + "_" + name;
|
|
this.fallback = Objects.requireNonNull(fallback);
|
|
this.defaultBlendOverride = defaultBlendOverride;
|
|
this.defaultAlphaTestOverride = defaultAlphaTestOverride;
|
|
}
|
|
|
|
public ProgramGroup getGroup() {
|
|
return group;
|
|
}
|
|
|
|
public String getSourceName() {
|
|
return sourceName;
|
|
}
|
|
|
|
public Optional<ProgramId> getFallback() {
|
|
return Optional.ofNullable(fallback);
|
|
}
|
|
|
|
public BlendModeOverride getBlendModeOverride() {
|
|
return defaultBlendOverride;
|
|
}
|
|
|
|
public AlphaTestOverride getDefaultAlphaTestOverride() {
|
|
return defaultAlphaTestOverride;
|
|
}
|
|
}
|