rename shaders to native shaders and minosoft shaders to shaders

This commit is contained in:
Bixilon 2022-11-12 16:21:34 +01:00
parent 6bf8d35124
commit c9c618fa15
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
43 changed files with 152 additions and 153 deletions

View File

@ -139,7 +139,7 @@ class FogManager(
val color = interpolatedFogColor
val distance = end - start
for (shader in renderWindow.renderSystem.minosoftShaders) {
for (shader in renderWindow.renderSystem.shaders) {
if (shader !is FogShader || shader.fog != this) {
continue
}

View File

@ -172,7 +172,7 @@ class MatrixHandler(
}
private fun updateShaders(cameraPosition: Vec3) {
for (shader in renderWindow.renderSystem.minosoftShaders) {
for (shader in renderWindow.renderSystem.shaders) {
if (shader is ViewProjectionShader) {
shader.viewProjectionMatrix = viewProjectionMatrix
}

View File

@ -13,9 +13,9 @@
package de.bixilon.minosoft.gui.rendering.framebuffer
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
open class FramebufferShader(override val native: Shader) : MinosoftShader() {
var texture by uniform("uTexture", 0, Shader::setUInt)
open class FramebufferShader(override val native: NativeShader) : Shader() {
var texture by uniform("uTexture", 0, NativeShader::setUInt)
}

View File

@ -17,7 +17,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.data.registries.ResourceLocationAble
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.util.KUtil.toResourceLocation
interface FunEffect : ResourceLocationAble {
@ -28,8 +28,8 @@ interface FunEffect : ResourceLocationAble {
fun preDraw() {}
fun <T : FramebufferShader> createShader(vertex: ResourceLocation = "minosoft:framebuffer/world.vsh".toResourceLocation(), fragment: ResourceLocation = "minosoft:framebuffer/world.fsh".toResourceLocation(), creator: (Shader) -> T): T {
val native = renderWindow.renderSystem.createShader(vertex = vertex, fragment = fragment)
fun <T : FramebufferShader> createShader(vertex: ResourceLocation = "minosoft:framebuffer/world.vsh".toResourceLocation(), fragment: ResourceLocation = "minosoft:framebuffer/world.fsh".toResourceLocation(), creator: (NativeShader) -> T): T {
val native = renderWindow.renderSystem.createNativeShader(vertex = vertex, fragment = fragment)
val shader = creator(native)
shader.load()
shader.use()

View File

@ -15,8 +15,8 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.world.`fun`.effects.tint
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
open class TintShader(native: Shader) : FramebufferShader(native) {
open class TintShader(native: NativeShader) : FramebufferShader(native) {
var tintColor by uniform("uTintColor", ChatColors.BLACK)
}

View File

@ -13,17 +13,17 @@
package de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.weather
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class WeatherOverlayShader(
override val native: Shader,
) : MinosoftShader(), TextureShader {
override val native: NativeShader,
) : Shader(), TextureShader {
override var textures: TextureManager by textureManager()
var intensity by uniform("uIntensity", 0.0f)
var offset by uniform("uOffset", 0.0f)
var textureIndexLayer by uniform("uIndexLayer", 0, Shader::setUInt)
var textureIndexLayer by uniform("uIndexLayer", 0, NativeShader::setUInt)
}

View File

@ -13,14 +13,14 @@
package de.bixilon.minosoft.gui.rendering.gui
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.AnimatedShader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class GUIShader(
override val native: Shader,
) : MinosoftShader(), TextureShader, AnimatedShader {
override val native: NativeShader,
) : Shader(), TextureShader, AnimatedShader {
override var textures: TextureManager by textureManager()
}

View File

@ -15,20 +15,20 @@ package de.bixilon.minosoft.gui.rendering.particle
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.*
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.world.light.LightmapBuffer
class ParticleShader(
override val native: Shader,
override val native: NativeShader,
override val transparent: Boolean,
) : MinosoftShader(), TextureShader, AnimatedShader, LightShader, TransparentShader, ViewProjectionShader {
) : Shader(), TextureShader, AnimatedShader, LightShader, TransparentShader, ViewProjectionShader {
override var textures: TextureManager by textureManager()
override val lightmap: LightmapBuffer by lightmap()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
var cameraRight by uniform(ShaderUniforms.CAMERA_RIGHT, Vec3(), Shader::setVec3)
var cameraUp by uniform(ShaderUniforms.CAMERA_UP, Vec3(), Shader::setVec3)
var cameraRight by uniform(ShaderUniforms.CAMERA_RIGHT, Vec3(), NativeShader::setVec3)
var cameraUp by uniform(ShaderUniforms.CAMERA_UP, Vec3(), NativeShader::setVec3)
}

View File

@ -14,10 +14,10 @@
package de.bixilon.minosoft.gui.rendering.shader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
interface AbstractMinosoftShader {
val native: Shader
interface AbstractShader {
val native: NativeShader
fun <T> uniform(name: String, default: T, type: ShaderSetter<T> = Shader::set): ShaderUniform<T>
fun <T> uniform(name: String, default: T, type: ShaderSetter<T> = NativeShader::set): ShaderUniform<T>
}

View File

@ -16,12 +16,12 @@ package de.bixilon.minosoft.gui.rendering.shader
import de.bixilon.minosoft.gui.rendering.shader.types.TransparentShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
abstract class MinosoftShader : AbstractMinosoftShader {
abstract class Shader : AbstractShader {
private val uniforms: MutableMap<String, ShaderUniform<*>> = mutableMapOf()
fun unload() {
native.unload()
native.renderWindow.renderSystem.minosoftShaders -= this
native.renderWindow.renderSystem.shaders -= this
}
fun load() {
@ -29,7 +29,7 @@ abstract class MinosoftShader : AbstractMinosoftShader {
native.defines["TRANSPARENT"] = " "
}
native.load()
native.renderWindow.renderSystem.minosoftShaders += this
native.renderWindow.renderSystem.shaders += this
for (uniform in uniforms.values) {
uniform.upload()
}

View File

@ -13,6 +13,6 @@
package de.bixilon.minosoft.gui.rendering.shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
typealias ShaderSetter<T> = (shader: Shader, name: String, value: T) -> Unit
typealias ShaderSetter<T> = (shader: NativeShader, name: String, value: T) -> Unit

View File

@ -14,12 +14,12 @@
package de.bixilon.minosoft.gui.rendering.shader.generic
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.ViewProjectionShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
class ColorShader(
override val native: Shader,
) : MinosoftShader(), ViewProjectionShader {
override val native: NativeShader,
) : Shader(), ViewProjectionShader {
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
}

View File

@ -13,14 +13,14 @@
package de.bixilon.minosoft.gui.rendering.shader.generic
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.AnimatedShader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class Generic2dTextureShader(
override val native: Shader,
) : MinosoftShader(), TextureShader, AnimatedShader {
override val native: NativeShader,
) : Shader(), TextureShader, AnimatedShader {
override var textures: TextureManager by textureManager()
}

View File

@ -14,16 +14,16 @@
package de.bixilon.minosoft.gui.rendering.shader.generic
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.AnimatedShader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.shader.types.ViewProjectionShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class GenericTextureShader(
override val native: Shader,
) : MinosoftShader(), TextureShader, AnimatedShader, ViewProjectionShader {
override val native: NativeShader,
) : Shader(), TextureShader, AnimatedShader, ViewProjectionShader {
override var textures: TextureManager by textureManager()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
}

View File

@ -14,16 +14,16 @@
package de.bixilon.minosoft.gui.rendering.shader.types
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.shader.AbstractMinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.AbstractShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
interface CameraPositionShader : AbstractMinosoftShader {
interface CameraPositionShader : AbstractShader {
var cameraPosition: Vec3
fun cameraPosition(): ShaderUniform<Vec3> {
return uniform(ShaderUniforms.CAMERA_POSITION, Vec3(), Shader::setVec3)
return uniform(ShaderUniforms.CAMERA_POSITION, Vec3(), NativeShader::setVec3)
}
}

View File

@ -14,10 +14,10 @@
package de.bixilon.minosoft.gui.rendering.shader.types
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.AbstractMinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.AbstractShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
interface FogShader : AbstractMinosoftShader, CameraPositionShader {
interface FogShader : AbstractShader, CameraPositionShader {
var fog: FogManager
fun fog(default: FogManager = native.renderWindow.camera.fogManager): ShaderUniform<FogManager> {

View File

@ -13,11 +13,11 @@
package de.bixilon.minosoft.gui.rendering.shader.types
import de.bixilon.minosoft.gui.rendering.shader.AbstractMinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.AbstractShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
import de.bixilon.minosoft.gui.rendering.world.light.LightmapBuffer
interface LightShader : AbstractMinosoftShader {
interface LightShader : AbstractShader {
val lightmap: LightmapBuffer
fun lightmap(name: String = "uLightMapBuffer", buffer: LightmapBuffer = native.renderWindow.light.map.buffer): ShaderUniform<LightmapBuffer> {

View File

@ -13,11 +13,11 @@
package de.bixilon.minosoft.gui.rendering.shader.types
import de.bixilon.minosoft.gui.rendering.shader.AbstractMinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.AbstractShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
interface TextureShader : AbstractMinosoftShader {
interface TextureShader : AbstractShader {
var textures: TextureManager
fun textureManager(name: String = "uTextures", textureManager: TextureManager = native.renderWindow.textureManager, animated: Boolean = this is AnimatedShader): ShaderUniform<TextureManager> {

View File

@ -14,16 +14,16 @@
package de.bixilon.minosoft.gui.rendering.shader.types
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.minosoft.gui.rendering.shader.AbstractMinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.AbstractShader
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
interface ViewProjectionShader : AbstractMinosoftShader {
interface ViewProjectionShader : AbstractShader {
var viewProjectionMatrix: Mat4
fun viewProjectionMatrix(): ShaderUniform<Mat4> {
return uniform(ShaderUniforms.VIEW_PROJECTION_MATRIX, Mat4(), Shader::setMat4)
return uniform(ShaderUniforms.VIEW_PROJECTION_MATRIX, Mat4(), NativeShader::setMat4)
}
}

View File

@ -14,12 +14,12 @@
package de.bixilon.minosoft.gui.rendering.shader.uniform
import de.bixilon.minosoft.gui.rendering.shader.ShaderSetter
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
class ShaderUniform<T>(
private val native: Shader,
private val native: NativeShader,
default: T,
private val name: String,
private val setter: ShaderSetter<T>,

View File

@ -16,23 +16,23 @@ package de.bixilon.minosoft.gui.rendering.skeletal
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.*
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.FloatUniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.world.light.LightmapBuffer
class SkeletalShader(
override val native: Shader,
override val native: NativeShader,
buffer: FloatUniformBuffer,
) : MinosoftShader(), TextureShader, AnimatedShader, LightShader, ViewProjectionShader, FogShader {
) : Shader(), TextureShader, AnimatedShader, LightShader, ViewProjectionShader, FogShader {
override var textures: TextureManager by textureManager()
override val lightmap: LightmapBuffer by lightmap()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
override var cameraPosition: Vec3 by cameraPosition()
override var fog: FogManager by fog()
var light by uniform("uLight", 0x00, Shader::setUInt)
var light by uniform("uLight", 0x00, NativeShader::setUInt)
var skeletalBuffer by uniform("uSkeletalBuffer", buffer)
}

View File

@ -15,12 +15,12 @@ package de.bixilon.minosoft.gui.rendering.sky.box
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
class SkyboxColorShader(
override val native: Shader,
) : MinosoftShader() {
override val native: NativeShader,
) : Shader() {
var skyViewProjectionMatrix by uniform("uSkyViewProjectionMatrix", Mat4())
var skyColor by uniform("uSkyColor", ChatColors.BLACK)
}

View File

@ -14,16 +14,16 @@
package de.bixilon.minosoft.gui.rendering.sky.box
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class SkyboxTextureShader(
override val native: Shader,
) : MinosoftShader(), TextureShader {
override val native: NativeShader,
) : Shader(), TextureShader {
override var textures: TextureManager by textureManager()
var skyViewProjectionMatrix by uniform("uSkyViewProjectionMatrix", Mat4())
var textureIndexLayer by uniform("uIndexLayer", 0, Shader::setUInt)
var textureIndexLayer by uniform("uIndexLayer", 0, NativeShader::setUInt)
}

View File

@ -17,15 +17,15 @@ import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.kotlinglm.vec4.Vec4
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.FogShader
import de.bixilon.minosoft.gui.rendering.shader.types.ViewProjectionShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4Util.EMPTY
class CloudShader(
override val native: Shader,
) : MinosoftShader(), ViewProjectionShader, FogShader {
override val native: NativeShader,
) : Shader(), ViewProjectionShader, FogShader {
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
override var cameraPosition: Vec3 by cameraPosition()
override var fog: FogManager by fog()

View File

@ -15,14 +15,14 @@ package de.bixilon.minosoft.gui.rendering.sky.planet
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec4.Vec4
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
class PlanetShader(
override val native: Shader,
) : MinosoftShader(), TextureShader {
override val native: NativeShader,
) : Shader(), TextureShader {
var matrix: Mat4 by uniform("uMatrix", Mat4())
var tintColor: Vec4 by uniform("uTintColor", Vec4())
override var textures: TextureManager by textureManager(animated = false)

View File

@ -15,12 +15,12 @@ package de.bixilon.minosoft.gui.rendering.sky.planet.scatter
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
class SunScatterShader(
override val native: Shader,
) : MinosoftShader() {
override val native: NativeShader,
) : Shader() {
var scatterMatrix by uniform("uScatterMatrix", Mat4())
var sunPosition by uniform("uSunPosition", Vec3())
var intensity by uniform("uIntensity", 0.0f)

View File

@ -18,13 +18,13 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.data.text.formatting.color.Colors
import de.bixilon.minosoft.data.text.formatting.color.RGBColor
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.FloatUniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.IntUniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.FloatVertexBuffer
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
@ -33,10 +33,10 @@ import java.nio.ByteBuffer
import java.nio.FloatBuffer
interface RenderSystem {
val nativeShaders: MutableSet<NativeShader>
val shaders: MutableSet<Shader>
val minosoftShaders: MutableSet<MinosoftShader>
val vendor: GPUVendor
var shader: Shader?
var shader: NativeShader?
var framebuffer: Framebuffer?
val active: Boolean
@ -102,20 +102,19 @@ interface RenderSystem {
fun readPixels(start: Vec2i, end: Vec2i, type: PixelTypes): ByteBuffer
@Deprecated("Use MinosoftShader")
fun createShader(resourceLocation: ResourceLocation): Shader {
return createShader(
fun createNativeShader(resourceLocation: ResourceLocation): NativeShader {
return createNativeShader(
vertex = "$resourceLocation.vsh".toResourceLocation(),
geometry = "$resourceLocation.gsh".toResourceLocation(),
fragment = "$resourceLocation.fsh".toResourceLocation(),
)
}
fun <T : MinosoftShader> createShader(resourceLocation: ResourceLocation, creator: (native: Shader) -> T): T {
return creator(createShader(resourceLocation))
fun <T : Shader> createShader(resourceLocation: ResourceLocation, creator: (native: NativeShader) -> T): T {
return creator(createNativeShader(resourceLocation))
}
fun createShader(vertex: ResourceLocation, geometry: ResourceLocation? = null, fragment: ResourceLocation): Shader
fun createNativeShader(vertex: ResourceLocation, geometry: ResourceLocation? = null, fragment: ResourceLocation): NativeShader
fun createVertexBuffer(structure: MeshStruct, data: FloatBuffer, primitiveType: PrimitiveTypes = preferredPrimitiveType): FloatVertexBuffer
fun createIntUniformBuffer(data: IntArray = IntArray(0)): IntUniformBuffer
@ -138,7 +137,7 @@ interface RenderSystem {
}
fun reloadShaders() {
val copy = minosoftShaders.toMutableSet()
val copy = shaders.toMutableSet()
for (shader in copy) {
shader.reload()
}

View File

@ -14,12 +14,12 @@
package de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform
import de.bixilon.minosoft.gui.rendering.system.base.buffer.RenderableBuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
interface UniformBuffer : RenderableBuffer {
val bindingIndex: Int
fun upload(range: IntRange)
fun use(shader: Shader, bufferName: String)
fun use(shader: NativeShader, bufferName: String)
}

View File

@ -25,7 +25,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.UniformBuffe
import de.bixilon.minosoft.util.Previous
import kotlin.math.max
interface Shader {
interface NativeShader {
val loaded: Boolean
val renderWindow: RenderWindow
val defines: MutableMap<String, Any>
@ -37,7 +37,7 @@ interface Shader {
fun reload()
fun use(): Shader {
fun use(): NativeShader {
renderWindow.renderSystem.shader = this
return this
}

View File

@ -17,7 +17,7 @@ import de.bixilon.minosoft.assets.util.FileUtil.readAsString
import de.bixilon.minosoft.commands.util.StringReader
import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
class GLSLShaderCode(
private val renderWindow: RenderWindow,
@ -26,7 +26,7 @@ class GLSLShaderCode(
val defines: MutableMap<String, Any> = mutableMapOf()
init {
for ((name, value) in Shader.DEFAULT_DEFINES) {
for ((name, value) in NativeShader.DEFAULT_DEFINES) {
value(renderWindow)?.let { defines[name] = it }
}
defines[renderWindow.renderSystem.vendor.shaderDefine] = ""

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.system.base.texture
import de.bixilon.kutil.time.TimeUtil.millis
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.IntUniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.textures.TextureAnimation
class SpriteAnimator(val renderSystem: RenderSystem) {
@ -79,7 +79,7 @@ class SpriteAnimator(val renderSystem: RenderSystem) {
}
fun use(shader: Shader, bufferName: String = "uSpriteBuffer") {
fun use(shader: NativeShader, bufferName: String = "uSpriteBuffer") {
uniformBuffer.use(shader, bufferName)
}

View File

@ -14,8 +14,8 @@
package de.bixilon.minosoft.gui.rendering.system.base.texture
import de.bixilon.kutil.latch.CountUpAndDownLatch
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
interface TextureArray {
@ -24,6 +24,6 @@ interface TextureArray {
fun activate()
@Deprecated("safe uniforms")
fun use(shader: Shader, name: String = ShaderUniforms.TEXTURES)
fun use(shader: MinosoftShader) = use(shader.native)
fun use(shader: NativeShader, name: String = ShaderUniforms.TEXTURES)
fun use(shader: Shader) = use(shader.native)
}

View File

@ -23,7 +23,7 @@ import de.bixilon.minosoft.data.entities.entities.player.properties.textures.Pla
import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.gui.rendering.RenderConstants
import de.bixilon.minosoft.gui.rendering.gui.atlas.TextureLikeTexture
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
import de.bixilon.minosoft.gui.rendering.system.base.texture.dynamic.DynamicTexture
import de.bixilon.minosoft.gui.rendering.system.base.texture.dynamic.DynamicTextureArray
@ -105,7 +105,7 @@ abstract class TextureManager {
return alexTexture
}
fun use(shader: Shader, name: String = ShaderUniforms.TEXTURES) {
fun use(shader: NativeShader, name: String = ShaderUniforms.TEXTURES) {
staticTextures.use(shader, name)
dynamicTextures.use(shader, name)
}

View File

@ -23,7 +23,7 @@ import de.bixilon.minosoft.data.text.formatting.color.RGBColor
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.exceptions.ShaderLoadingException
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.UniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.code.glsl.GLSLShaderCode
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap
import org.lwjgl.opengl.GL11.GL_FALSE
@ -31,12 +31,12 @@ import org.lwjgl.opengl.GL43.*
import org.lwjgl.system.MemoryUtil
import java.io.FileNotFoundException
class OpenGLShader(
class OpenGLNativeShader(
override val renderWindow: RenderWindow,
private val vertex: ResourceLocation,
private val geometry: ResourceLocation?,
private val fragment: ResourceLocation,
) : Shader {
) : NativeShader {
override var loaded: Boolean = false
private set
override val defines: MutableMap<String, Any> = mutableMapOf()
@ -97,7 +97,7 @@ class OpenGLShader(
}
loaded = true
renderWindow.renderSystem.shaders += this
renderWindow.renderSystem.nativeShaders += this
}
override fun unload() {
@ -105,7 +105,7 @@ class OpenGLShader(
glDeleteProgram(this.shader)
loaded = false
this.shader = -1
renderWindow.renderSystem.shaders -= this
renderWindow.renderSystem.nativeShaders -= this
}
override fun reload() {

View File

@ -22,12 +22,12 @@ import de.bixilon.minosoft.data.text.formatting.color.RGBColor
import de.bixilon.minosoft.gui.rendering.RenderConstants
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.events.ResizeWindowEvent
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.*
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.gui.rendering.system.base.buffer.vertex.PrimitiveTypes
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader.Companion.shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader.Companion.shader
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.frame.OpenGLFramebuffer
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.uniform.FloatOpenGLUniformBuffer
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.uniform.IntOpenGLUniformBuffer
@ -52,8 +52,8 @@ class OpenGLRenderSystem(
private val renderWindow: RenderWindow,
) : RenderSystem {
private var thread: Thread? = null
override val nativeShaders: MutableSet<NativeShader> = mutableSetOf()
override val shaders: MutableSet<Shader> = mutableSetOf()
override val minosoftShaders: MutableSet<MinosoftShader> = mutableSetOf()
private val capabilities: MutableSet<RenderingCapabilities> = synchronizedSetOf()
override lateinit var vendor: OpenGLVendor
private set
@ -75,7 +75,7 @@ class OpenGLRenderSystem(
var boundBuffer = -1
var uniformBufferBindingIndex = 0
override var shader: Shader? = null
override var shader: NativeShader? = null
set(value) {
if (value === field) {
return
@ -86,9 +86,9 @@ class OpenGLRenderSystem(
return
}
check(value is OpenGLShader) { "Can not use non OpenGL shader in OpenGL render system!" }
check(value is OpenGLNativeShader) { "Can not use non OpenGL shader in OpenGL render system!" }
check(value.loaded) { "Shader not loaded!" }
check(value in shaders) { "Shader not part of this context!" }
check(value in nativeShaders) { "Shader not part of this context!" }
value.unsafeUse()
@ -254,8 +254,8 @@ class OpenGLRenderSystem(
return buffer
}
override fun createShader(vertex: ResourceLocation, geometry: ResourceLocation?, fragment: ResourceLocation): OpenGLShader {
return OpenGLShader(renderWindow, vertex.shader(), geometry?.shader(), fragment.shader())
override fun createNativeShader(vertex: ResourceLocation, geometry: ResourceLocation?, fragment: ResourceLocation): OpenGLNativeShader {
return OpenGLNativeShader(renderWindow, vertex.shader(), geometry?.shader(), fragment.shader())
}
override fun createVertexBuffer(structure: MeshStruct, data: FloatBuffer, primitiveType: PrimitiveTypes): FloatOpenGLVertexBuffer {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.system.opengl.buffer.uniform
import de.bixilon.minosoft.gui.rendering.system.base.buffer.RenderableBufferDrawTypes
import de.bixilon.minosoft.gui.rendering.system.base.buffer.RenderableBufferTypes
import de.bixilon.minosoft.gui.rendering.system.base.buffer.uniform.UniformBuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.OpenGLRenderableBuffer
import org.lwjgl.opengl.GL30.glBindBufferBase
@ -37,7 +37,7 @@ abstract class OpenGLUniformBuffer(renderSystem: OpenGLRenderSystem, override va
}
override fun use(shader: Shader, bufferName: String) {
override fun use(shader: NativeShader, bufferName: String) {
shader.use()
shader[bufferName] = this

View File

@ -19,7 +19,7 @@ import de.bixilon.kutil.latch.CountUpAndDownLatch
import de.bixilon.minosoft.assets.util.FileUtil.readAsString
import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.SpriteAnimator
import de.bixilon.minosoft.gui.rendering.system.base.texture.StaticTextureArray
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureArrayStates
@ -201,7 +201,7 @@ class OpenGLTextureArray(
}
}
override fun use(shader: Shader, name: String) {
override fun use(shader: NativeShader, name: String) {
shader.use()
activate()

View File

@ -17,7 +17,7 @@ import de.bixilon.kutil.concurrent.lock.thread.ThreadLock
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
import de.bixilon.kutil.latch.CountUpAndDownLatch
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureData
import de.bixilon.minosoft.gui.rendering.system.base.texture.dynamic.DynamicTextureArray
@ -47,7 +47,7 @@ class OpenGLDynamicTextureArray(
private var textures: Array<WeakReference<OpenGLDynamicTexture>?> = arrayOfNulls(initialSize)
private val lock = ThreadLock()
private var textureId = -1
var shaders: MutableSet<Shader> = mutableSetOf()
var shaders: MutableSet<NativeShader> = mutableSetOf()
override val size: Int
get() {
@ -139,12 +139,12 @@ class OpenGLDynamicTextureArray(
glBindTexture(GL_TEXTURE_2D_ARRAY, textureId)
}
override fun use(shader: Shader, name: String) {
override fun use(shader: NativeShader, name: String) {
shaders += shader
_use(shader, name)
}
private fun _use(shader: Shader, name: String = ShaderUniforms.TEXTURES) {
private fun _use(shader: NativeShader, name: String = ShaderUniforms.TEXTURES) {
shader.use()
activate()

View File

@ -18,17 +18,17 @@ import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.FogShader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.shader.types.ViewProjectionShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY
class WorldBorderShader(
override val native: Shader,
) : MinosoftShader(), TextureShader, ViewProjectionShader, FogShader {
override val native: NativeShader,
) : Shader(), TextureShader, ViewProjectionShader, FogShader {
override var textures: TextureManager by textureManager()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()
override var cameraPosition: Vec3 by cameraPosition()
@ -36,7 +36,7 @@ class WorldBorderShader(
var tintColor by uniform("uTintColor", ChatColors.BLACK)
var textureIndexLayer by uniform("uIndexLayer", 0, Shader::setUInt)
var textureIndexLayer by uniform("uIndexLayer", 0, NativeShader::setUInt)
var textureOffset by uniform("uTextureOffset", 0.0f)
var radius by uniform("uRadius", 0.0f)
var center by uniform("uCenter", Vec2.EMPTY)

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.world.light
import de.bixilon.minosoft.config.DebugOptions
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.world.light.updater.DebugLightUpdater
import de.bixilon.minosoft.gui.rendering.world.light.updater.FullbrightLightUpdater
import de.bixilon.minosoft.gui.rendering.world.light.updater.LightmapUpdater
@ -56,7 +56,7 @@ class Lightmap(private val light: RenderLight) {
return defaultUpdater
}
fun use(shader: Shader, bufferName: String = "uLightMapBuffer") {
fun use(shader: NativeShader, bufferName: String = "uLightMapBuffer") {
buffer.use(shader, bufferName)
}

View File

@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.world.light
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import org.lwjgl.system.MemoryUtil.memAllocFloat
@ -57,7 +57,7 @@ class LightmapBuffer(renderSystem: RenderSystem) {
upload = false
}
fun use(shader: Shader, name: String) {
fun use(shader: NativeShader, name: String) {
buffer.use(shader, name)
}

View File

@ -16,16 +16,16 @@ package de.bixilon.minosoft.gui.rendering.world.shader
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.*
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.world.light.LightmapBuffer
class WorldShader(
override val native: Shader,
override val native: NativeShader,
override val transparent: Boolean,
) : MinosoftShader(), TextureShader, AnimatedShader, LightShader, TransparentShader, ViewProjectionShader, FogShader {
) : Shader(), TextureShader, AnimatedShader, LightShader, TransparentShader, ViewProjectionShader, FogShader {
override var textures: TextureManager by textureManager()
override val lightmap: LightmapBuffer by lightmap()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()

View File

@ -16,18 +16,18 @@ package de.bixilon.minosoft.gui.rendering.world.shader
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.minosoft.gui.rendering.camera.FogManager
import de.bixilon.minosoft.gui.rendering.shader.MinosoftShader
import de.bixilon.minosoft.gui.rendering.shader.Shader
import de.bixilon.minosoft.gui.rendering.shader.types.FogShader
import de.bixilon.minosoft.gui.rendering.shader.types.LightShader
import de.bixilon.minosoft.gui.rendering.shader.types.TextureShader
import de.bixilon.minosoft.gui.rendering.shader.types.ViewProjectionShader
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
import de.bixilon.minosoft.gui.rendering.system.base.texture.TextureManager
import de.bixilon.minosoft.gui.rendering.world.light.LightmapBuffer
class WorldTextShader(
override val native: Shader,
) : MinosoftShader(), TextureShader, LightShader, ViewProjectionShader, FogShader {
override val native: NativeShader,
) : Shader(), TextureShader, LightShader, ViewProjectionShader, FogShader {
override var textures: TextureManager by textureManager()
override val lightmap: LightmapBuffer by lightmap()
override var viewProjectionMatrix: Mat4 by viewProjectionMatrix()