You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
Kotlin
61 lines
1.9 KiB
Kotlin
package me.eater.threedom.example.shader
|
|
|
|
import me.eater.threedom.gl.Shader
|
|
import me.eater.threedom.gl.ShaderPreProcessor
|
|
import me.eater.threedom.gl.ShaderProgram
|
|
|
|
class Plain private constructor(vertexShader: Shader, fragmentShader: Shader) :
|
|
ShaderProgram(vertexShader, fragmentShader) {
|
|
|
|
var objectColor by vec3()
|
|
var lightColor by vec3()
|
|
var lightPos by vec3()
|
|
var viewPos by vec3()
|
|
|
|
companion object {
|
|
fun load(preProcessor: ShaderPreProcessor): Plain {
|
|
val vertex = preProcessor.compile(
|
|
this::class.java.getResourceAsStream("/shaders/plain/vertex.glsl").readAllBytes()
|
|
.toString(Charsets.UTF_8),
|
|
Shader.ShaderType.Vertex
|
|
)
|
|
|
|
val fragment = preProcessor.compile(
|
|
this::class.java.getResourceAsStream("/shaders/plain/fragment.glsl").readAllBytes()
|
|
.toString(Charsets.UTF_8),
|
|
Shader.ShaderType.Fragment
|
|
|
|
)
|
|
return Plain(
|
|
vertex,
|
|
fragment
|
|
).also {
|
|
vertex.delete()
|
|
fragment.delete()
|
|
}
|
|
}
|
|
|
|
fun lamp(preProcessor: ShaderPreProcessor): Plain {
|
|
val vertex = preProcessor.compile(
|
|
this::class.java.getResourceAsStream("/shaders/plain/vertex.glsl").readAllBytes()
|
|
.toString(Charsets.UTF_8),
|
|
Shader.ShaderType.Vertex
|
|
)
|
|
|
|
val fragment = preProcessor.compile(
|
|
this::class.java.getResourceAsStream("/shaders/plain/fragment_lamp.glsl").readAllBytes()
|
|
.toString(Charsets.UTF_8),
|
|
Shader.ShaderType.Fragment
|
|
|
|
)
|
|
return Plain(
|
|
vertex,
|
|
fragment
|
|
).also {
|
|
vertex.delete()
|
|
fragment.delete()
|
|
}
|
|
}
|
|
}
|
|
}
|