Add shader loading functionality

[no changelog]
This commit is contained in:
Linnea Gräf
2024-09-07 14:44:43 +02:00
parent 9cdc30e024
commit 26461deda4
8 changed files with 182 additions and 2 deletions

View File

@@ -0,0 +1,23 @@
package moe.nea.firmament.util.render
import net.minecraft.client.gl.ShaderProgram
import net.minecraft.client.render.RenderPhase
import net.minecraft.client.render.VertexFormats
import moe.nea.firmament.annotations.Subscribe
import moe.nea.firmament.events.RegisterCustomShadersEvent
object FirmamentShaders {
private lateinit var _LINES: ShaderProgram
val LINES = RenderPhase.ShaderProgram({ _LINES })
@Subscribe
fun registerCustomShaders(event: RegisterCustomShadersEvent) {
event.register(
"firmament_rendertype_lines",
VertexFormats.LINES,
{ _LINES = it },
)
}
}

View File

@@ -56,7 +56,7 @@ class RenderInWorldContext private constructor(
false, false, // do we need translucent? i dont think so
RenderLayer.MultiPhaseParameters.builder()
.depthTest(RenderPhase.ALWAYS_DEPTH_TEST)
.program(RenderPhase.LINES_PROGRAM)
.program(FirmamentShaders.LINES)
.build(false)
)
}
@@ -172,7 +172,7 @@ class RenderInWorldContext private constructor(
points.zipWithNext().forEach { (a, b) ->
val normal = Vector3f(b.x.toFloat(), b.y.toFloat(), b.z.toFloat())
.sub(a.x.toFloat(), a.y.toFloat(), a.z.toFloat())
.normalize()
// .normalize()
val lastNormal0 = lastNormal ?: normal
lastNormal = normal
buffer.vertex(matrix.positionMatrix, a.x.toFloat(), a.y.toFloat(), a.z.toFloat())