diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt index cd9d627c7..62c6d103e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt @@ -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 } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt index cd959c844..08612bd19 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt @@ -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 } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferShader.kt index 3f4f367a4..2e185efb5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/FunEffect.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/FunEffect.kt index 72a983451..749043f5a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/FunEffect.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/FunEffect.kt @@ -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 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 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() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/effects/tint/TintShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/effects/tint/TintShader.kt index 81df0dbd5..74c831d5f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/effects/tint/TintShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/fun/effects/tint/TintShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/weather/WeatherOverlayShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/weather/WeatherOverlayShader.kt index d0cae42dc..6fcca102d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/weather/WeatherOverlayShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/weather/WeatherOverlayShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIShader.kt index b0066ad7e..86dde29cb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIShader.kt @@ -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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleShader.kt index 248974698..2cb526180 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractMinosoftShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractShader.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractMinosoftShader.kt rename to src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractShader.kt index 82a590f88..1d0be6069 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractMinosoftShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/AbstractShader.kt @@ -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 uniform(name: String, default: T, type: ShaderSetter = Shader::set): ShaderUniform + fun uniform(name: String, default: T, type: ShaderSetter = NativeShader::set): ShaderUniform } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/MinosoftShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/Shader.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/gui/rendering/shader/MinosoftShader.kt rename to src/main/java/de/bixilon/minosoft/gui/rendering/shader/Shader.kt index 696508d0c..f42bbc64c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/MinosoftShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/Shader.kt @@ -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> = 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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/ShaderSetter.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/ShaderSetter.kt index 45b7c660b..d93bea597 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/ShaderSetter.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/ShaderSetter.kt @@ -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 = (shader: Shader, name: String, value: T) -> Unit +typealias ShaderSetter = (shader: NativeShader, name: String, value: T) -> Unit diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/ColorShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/ColorShader.kt index 1fcc3e772..d3a57bd5b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/ColorShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/ColorShader.kt @@ -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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/Generic2dTextureShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/Generic2dTextureShader.kt index 2b75e3fa8..2f270ad11 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/Generic2dTextureShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/Generic2dTextureShader.kt @@ -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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/GenericTextureShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/GenericTextureShader.kt index 12477a11a..01c33bd79 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/GenericTextureShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/generic/GenericTextureShader.kt @@ -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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/CameraPositionShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/CameraPositionShader.kt index 32e0dea52..ed1f5058a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/CameraPositionShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/CameraPositionShader.kt @@ -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 { - return uniform(ShaderUniforms.CAMERA_POSITION, Vec3(), Shader::setVec3) + return uniform(ShaderUniforms.CAMERA_POSITION, Vec3(), NativeShader::setVec3) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/FogShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/FogShader.kt index 4630821ba..3bc5256f8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/FogShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/FogShader.kt @@ -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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/LightShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/LightShader.kt index c048a1c31..bd9303d70 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/LightShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/LightShader.kt @@ -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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/TextureShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/TextureShader.kt index 2b552ed8f..54f866172 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/TextureShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/TextureShader.kt @@ -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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/ViewProjectionShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/ViewProjectionShader.kt index 4ec60932b..74b31605d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/ViewProjectionShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/types/ViewProjectionShader.kt @@ -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 { - return uniform(ShaderUniforms.VIEW_PROJECTION_MATRIX, Mat4(), Shader::setMat4) + return uniform(ShaderUniforms.VIEW_PROJECTION_MATRIX, Mat4(), NativeShader::setMat4) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/uniform/ShaderUniform.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/uniform/ShaderUniform.kt index 4f3886871..283a9de69 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/shader/uniform/ShaderUniform.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/shader/uniform/ShaderUniform.kt @@ -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( - private val native: Shader, + private val native: NativeShader, default: T, private val name: String, private val setter: ShaderSetter, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/SkeletalShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/SkeletalShader.kt index 21e96c47a..5e6af5c4f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/SkeletalShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/SkeletalShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxColorShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxColorShader.kt index 5bc2f80a6..eb43ee61c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxColorShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxColorShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxTextureShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxTextureShader.kt index c7226f3ff..93422cae5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxTextureShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/box/SkyboxTextureShader.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/clouds/CloudShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/clouds/CloudShader.kt index 71c5d270a..40aad3e45 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/clouds/CloudShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/clouds/CloudShader.kt @@ -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() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/PlanetShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/PlanetShader.kt index 3128e4fc8..84922f0eb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/PlanetShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/PlanetShader.kt @@ -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) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/scatter/SunScatterShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/scatter/SunScatterShader.kt index e764019b9..d2c31606e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/scatter/SunScatterShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/planet/scatter/SunScatterShader.kt @@ -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) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderSystem.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderSystem.kt index dc89a1618..5f6844114 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderSystem.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderSystem.kt @@ -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 val shaders: MutableSet - val minosoftShaders: MutableSet 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 createShader(resourceLocation: ResourceLocation, creator: (native: Shader) -> T): T { - return creator(createShader(resourceLocation)) + fun 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() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/buffer/uniform/UniformBuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/buffer/uniform/UniformBuffer.kt index 9a08242d1..702422402 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/buffer/uniform/UniformBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/buffer/uniform/UniformBuffer.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/Shader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/NativeShader.kt similarity index 98% rename from src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/Shader.kt rename to src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/NativeShader.kt index 6103dca20..10fb0b3b1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/Shader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/NativeShader.kt @@ -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 @@ -37,7 +37,7 @@ interface Shader { fun reload() - fun use(): Shader { + fun use(): NativeShader { renderWindow.renderSystem.shader = this return this } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/code/glsl/GLSLShaderCode.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/code/glsl/GLSLShaderCode.kt index 9d9b2b103..1de8da75b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/code/glsl/GLSLShaderCode.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/shader/code/glsl/GLSLShaderCode.kt @@ -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 = 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] = "" diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/SpriteAnimator.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/SpriteAnimator.kt index 0025e807b..49b18dca8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/SpriteAnimator.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/SpriteAnimator.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureArray.kt index fb9792ab2..56f283126 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureArray.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt index e5efbae1d..a1151c0dd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLNativeShader.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLShader.kt rename to src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLNativeShader.kt index c55caaf5b..871d78c61 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLNativeShader.kt @@ -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 = 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() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt index 3f9d2e054..3e7a70a9f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt @@ -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 = mutableSetOf() override val shaders: MutableSet = mutableSetOf() - override val minosoftShaders: MutableSet = mutableSetOf() private val capabilities: MutableSet = 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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/buffer/uniform/OpenGLUniformBuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/buffer/uniform/OpenGLUniformBuffer.kt index 2c74b5641..c3207e8e1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/buffer/uniform/OpenGLUniformBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/buffer/uniform/OpenGLUniformBuffer.kt @@ -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 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt index 1eb7305a2..e9ad29d82 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt @@ -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() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt index f22c3a58a..c03b57e78 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt @@ -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?> = arrayOfNulls(initialSize) private val lock = ThreadLock() private var textureId = -1 - var shaders: MutableSet = mutableSetOf() + var shaders: MutableSet = 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() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/border/WorldBorderShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/border/WorldBorderShader.kt index 4c88cebdf..caa4c95f0 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/border/WorldBorderShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/border/WorldBorderShader.kt @@ -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) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/Lightmap.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/Lightmap.kt index 7dfa4079f..bdcb9c933 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/Lightmap.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/Lightmap.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/LightmapBuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/LightmapBuffer.kt index fa1463b84..64756b724 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/LightmapBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/light/LightmapBuffer.kt @@ -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) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldShader.kt index 57b9c1937..18bfe699f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldShader.kt @@ -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() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldTextShader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldTextShader.kt index 2764331e8..577943339 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldTextShader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/shader/WorldTextShader.kt @@ -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()