package moe.nea.firmament.util.render import net.minecraft.client.gl.Defines import net.minecraft.client.gl.ShaderProgramKey import net.minecraft.client.render.RenderPhase import net.minecraft.client.render.VertexFormat import net.minecraft.client.render.VertexFormats import moe.nea.firmament.Firmament import moe.nea.firmament.annotations.Subscribe import moe.nea.firmament.events.DebugInstantiateEvent import moe.nea.firmament.util.MC object FirmamentShaders { val shaders = mutableListOf() private fun shader(name: String, format: VertexFormat, defines: Defines): ShaderProgramKey { val key = ShaderProgramKey(Firmament.identifier(name), format, defines) shaders.add(key) return key } val LINES = RenderPhase.ShaderProgram(shader("core/rendertype_lines", VertexFormats.LINES, Defines.EMPTY)) @Subscribe fun debugLoad(event: DebugInstantiateEvent) { shaders.forEach { MC.instance.shaderLoader.getOrCreateProgram(it) } } }