From 8acf6eb572ffdc72745a8d880d5c4f8a459eb538 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Sun, 3 Oct 2021 13:36:09 +0200 Subject: [PATCH] [orx-fx] add pregain parameter to MipBloom --- orx-fx/src/commonMain/kotlin/blur/MipBloom.kt | 7 +++++++ orx-fx/src/shaders/glsl/blur/bloom-combine.frag | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt b/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt index caf6d56b..542049eb 100644 --- a/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt +++ b/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt @@ -31,11 +31,13 @@ class BloomUpscale : Filter(mppFilterShader(fx_bloom_upscale, "bloom-upscale")) class BloomCombine : Filter(mppFilterShader(fx_bloom_combine, "bloom-combine")) { var gain: Double by parameters + var pregain: Double by parameters var bias: ColorRGBa by parameters init { bias = ColorRGBa.BLACK gain = 1.0 + pregain = 1.0 } } @@ -49,6 +51,10 @@ open class MipBloom(val blur: T) : Filter(mppFilterShader(fx_bloom_c @DoubleParameter("gain", 0.0, 4.0) var gain: Double = 1.0 + @DoubleParameter("pregain", 0.0, 4.0) + var pregain: Double = 1.0 + + /** * noise gain. low noise gains will result in visible banding of the image. default value is 0.25 */ @@ -113,6 +119,7 @@ open class MipBloom(val blur: T) : Filter(mppFilterShader(fx_bloom_c upscale.apply(intermediates.toTypedArray(), arrayOf(target[0])) combine.gain = gain + combine.pregain = pregain combine.apply(arrayOf(sourceCopy!!, target[0]), target) if (sRGB) { diff --git a/orx-fx/src/shaders/glsl/blur/bloom-combine.frag b/orx-fx/src/shaders/glsl/blur/bloom-combine.frag index 399edb9a..44e68223 100644 --- a/orx-fx/src/shaders/glsl/blur/bloom-combine.frag +++ b/orx-fx/src/shaders/glsl/blur/bloom-combine.frag @@ -5,9 +5,10 @@ uniform sampler2D tex0; uniform sampler2D tex1; uniform float gain; +uniform float pregain; uniform vec4 bias; void main() { - o_output = texture(tex0, v_texCoord0) + texture(tex1, v_texCoord0)*gain; + o_output = texture(tex0, v_texCoord0) * pregain + texture(tex1, v_texCoord0)*gain; o_output.a = clamp(o_output.a, 0.0, 1.0); } \ No newline at end of file