From 8ab852d18a1651e1952199ae35da60af60b80882 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 10 Dec 2021 09:36:02 +0900 Subject: [PATCH] will use 0.667f as a "kawase blur power constant" --- assets/shaders/kawasedown.frag | 2 ++ assets/shaders/kawaseup.frag | 2 ++ .../torvald/terrarum/modulebasegame/IngameRenderer.kt | 10 ++++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/assets/shaders/kawasedown.frag b/assets/shaders/kawasedown.frag index 0397f1152..23a3eecf5 100644 --- a/assets/shaders/kawasedown.frag +++ b/assets/shaders/kawasedown.frag @@ -7,6 +7,8 @@ varying vec4 v_color; varying vec2 v_texCoords; uniform sampler2D u_texture; +// recommended value: n / vec2(fbo_width, fbo_height) where n is something like {0.5, 1, 2, 4, ... } +// that, or simply 0.5, depending on how your uv coord works uniform vec2 halfpixel = vec2(0.0, 0.0); vec2 twister = vec2(1.0, -1.0); diff --git a/assets/shaders/kawaseup.frag b/assets/shaders/kawaseup.frag index 01bd55be2..77adb610d 100644 --- a/assets/shaders/kawaseup.frag +++ b/assets/shaders/kawaseup.frag @@ -7,6 +7,8 @@ varying vec4 v_color; varying vec2 v_texCoords; uniform sampler2D u_texture; +// recommended value: n / vec2(fbo_width, fbo_height) where n is something like {0.5, 1, 2, 4, ... } +// that, or simply 0.5, depending on how your uv coord works uniform vec2 halfpixel = vec2(0.0, 0.0); vec2 doublex = vec2(2.0, 0.0); diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index b33d7b585..d85fe9b79 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -674,6 +674,8 @@ object IngameRenderer : Disposable { batch.projectionMatrix = camera.combined } + private const val KAWASE_POWER = 0.667f + fun processKawaseBlur(outFbo: FrameBuffer) { // initialise readBuffer with untreated lightmap @@ -692,7 +694,7 @@ object IngameRenderer : Disposable { shaderKawaseDown.bind() shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined) shaderKawaseDown.setUniformi("u_texture", 0) - shaderKawaseDown.setUniformf("halfpixel", 1f / fboBlurHalf.width, 1f / fboBlurHalf.height) + shaderKawaseDown.setUniformf("halfpixel", KAWASE_POWER / fboBlurHalf.width, KAWASE_POWER / fboBlurHalf.height) blurWriteQuad2.render(shaderKawaseDown, GL20.GL_TRIANGLES) } @@ -702,7 +704,7 @@ object IngameRenderer : Disposable { shaderKawaseDown.bind() shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined) shaderKawaseDown.setUniformi("u_texture", 0) - shaderKawaseDown.setUniformf("halfpixel", 1f / fboBlurQuarter.width, 1f / fboBlurQuarter.height) + shaderKawaseDown.setUniformf("halfpixel", KAWASE_POWER / fboBlurQuarter.width, KAWASE_POWER / fboBlurQuarter.height) blurWriteQuad4.render(shaderKawaseDown, GL20.GL_TRIANGLES) } @@ -712,7 +714,7 @@ object IngameRenderer : Disposable { shaderKawaseUp.bind() shaderKawaseUp.setUniformMatrix("u_projTrans", camera.combined) shaderKawaseUp.setUniformi("u_texture", 0) - shaderKawaseUp.setUniformf("halfpixel", 1f / fboBlurQuarter.width, 1f / fboBlurQuarter.height) + shaderKawaseUp.setUniformf("halfpixel", KAWASE_POWER / fboBlurQuarter.width, KAWASE_POWER / fboBlurQuarter.height) blurWriteQuad2.render(shaderKawaseUp, GL20.GL_TRIANGLES) } @@ -722,7 +724,7 @@ object IngameRenderer : Disposable { shaderKawaseUp.bind() shaderKawaseUp.setUniformMatrix("u_projTrans", camera.combined) shaderKawaseUp.setUniformi("u_texture", 0) - shaderKawaseUp.setUniformf("halfpixel", 1f / fboBlurHalf.width, 1f / fboBlurHalf.height) + shaderKawaseUp.setUniformf("halfpixel", KAWASE_POWER / fboBlurHalf.width, KAWASE_POWER / fboBlurHalf.height) blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLES) } }