From fd72b3d3bada02ae2886b9bdd6da3137e14b57f3 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 20 Apr 2022 20:15:26 +0900 Subject: [PATCH] this is a super jank solution but it worked (shrug) --- .../terrarum/modulebasegame/IngameRenderer.kt | 4 ++++ src/shaders/actors.frag | 1 + src/shaders/demultiply.frag | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 src/shaders/demultiply.frag diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index a64061aa9..e0ac70cd1 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -83,6 +83,7 @@ object IngameRenderer : Disposable { val shaderBlendGlow: ShaderProgram val shaderForActors: ShaderProgram + val shaderDemultiply: ShaderProgram private val WIDTH = App.scr.width private val HEIGHT = App.scr.height @@ -121,6 +122,7 @@ object IngameRenderer : Disposable { shaderForActors = App.loadShaderFromClasspath("shaders/default.vert", "shaders/actors.frag") shaderBlendGlow = App.loadShaderFromClasspath("shaders/blendGlow.vert", "shaders/blendGlow.frag") + shaderDemultiply = App.loadShaderFromClasspath("shaders/blendGlow.vert", "shaders/demultiply.frag") shaderKawaseDown = App.loadShaderFromClasspath("shaders/default.vert", "shaders/kawasedown.frag") @@ -480,6 +482,7 @@ object IngameRenderer : Disposable { blendNormal(batch) // draw world + batch.shader = shaderDemultiply batch.draw(fboRGB.colorBufferTexture, 0f, 0f) batch.flush() @@ -870,6 +873,7 @@ object IngameRenderer : Disposable { shaderBlendGlow.dispose() shaderForActors.dispose() + shaderDemultiply.dispose() try { fboRGBexport.dispose() } catch (e: GdxRuntimeException) {} diff --git a/src/shaders/actors.frag b/src/shaders/actors.frag index 8ebbfbb6e..f2f9a7468 100644 --- a/src/shaders/actors.frag +++ b/src/shaders/actors.frag @@ -30,4 +30,5 @@ void main() { vec4 selvec = vec4(0.0, 0.0, 0.0, (alpha > bayerThreshold) ? 1.0 : 0.0); gl_FragColor = inColor * boolean.yyyx + selvec; + gl_FragColor = inColor; } \ No newline at end of file diff --git a/src/shaders/demultiply.frag b/src/shaders/demultiply.frag new file mode 100644 index 000000000..145e6000c --- /dev/null +++ b/src/shaders/demultiply.frag @@ -0,0 +1,17 @@ +#version 130 +#ifdef GL_ES +precision mediump float; +#endif + +varying vec4 v_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; + +vec2 boolean = vec2(0.0, 1.0); + +void main() { + vec4 inColor = v_color * (texture2D(u_texture, v_texCoords)); + + vec4 divided = inColor / pow(inColor.aaaa, vec4(2.0)); + gl_FragColor = divided * boolean.yyyx + inColor * boolean.xxxy; +} \ No newline at end of file