[orx-fx] Fix Normal blend, add opacity parameters
This commit is contained in:
@@ -6,6 +6,7 @@ import org.openrndr.draw.Filter1to1
|
|||||||
import org.openrndr.draw.Filter2to1
|
import org.openrndr.draw.Filter2to1
|
||||||
import org.openrndr.extra.fx.*
|
import org.openrndr.extra.fx.*
|
||||||
import org.openrndr.extra.parameters.BooleanParameter
|
import org.openrndr.extra.parameters.BooleanParameter
|
||||||
|
import org.openrndr.extra.parameters.DoubleParameter
|
||||||
|
|
||||||
class ColorBurn : Filter2to1(mppFilterShader(fx_color_burn, "color-burn")) {
|
class ColorBurn : Filter2to1(mppFilterShader(fx_color_burn, "color-burn")) {
|
||||||
@BooleanParameter("source clip")
|
@BooleanParameter("source clip")
|
||||||
@@ -65,8 +66,16 @@ class Normal : Filter2to1(mppFilterShader(fx_normal, "normal")) {
|
|||||||
@BooleanParameter("source clip")
|
@BooleanParameter("source clip")
|
||||||
var clip: Boolean by parameters
|
var clip: Boolean by parameters
|
||||||
|
|
||||||
|
@DoubleParameter("opacity A", 0.0, 1.0)
|
||||||
|
var opacityA: Double by parameters
|
||||||
|
|
||||||
|
@DoubleParameter("opacity B", 0.0, 1.0)
|
||||||
|
var opacityB: Double by parameters
|
||||||
|
|
||||||
init {
|
init {
|
||||||
clip = false
|
clip = false
|
||||||
|
opacityA = 1.0
|
||||||
|
opacityB = 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ uniform sampler2D tex0;
|
|||||||
uniform sampler2D tex1;
|
uniform sampler2D tex1;
|
||||||
uniform bool clip;
|
uniform bool clip;
|
||||||
|
|
||||||
|
uniform float opacityA;
|
||||||
|
uniform float opacityB;
|
||||||
|
|
||||||
|
|
||||||
#ifndef OR_GL_FRAGCOLOR
|
#ifndef OR_GL_FRAGCOLOR
|
||||||
out vec4 o_color;
|
out vec4 o_color;
|
||||||
#endif
|
#endif
|
||||||
@@ -21,14 +25,17 @@ void main() {
|
|||||||
vec4 b = texture2D(tex1, v_texCoord0);
|
vec4 b = texture2D(tex1, v_texCoord0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
a *= opacityA;
|
||||||
|
b *= opacityB;
|
||||||
|
|
||||||
float alpha = min(1.0, max(0.0, b.a));
|
float alpha = min(1.0, max(0.0, b.a));
|
||||||
|
|
||||||
vec4 result;
|
vec4 result;
|
||||||
if (!clip) {
|
if (!clip) {
|
||||||
result = a * (1.0 - alpha) + b;
|
result = a * (1.0 - alpha) + b;
|
||||||
result.a = clamp(o_color.a, 0.0, 1.0);
|
result.a = clamp(result.a, 0.0, 1.0);
|
||||||
} else {
|
} else {
|
||||||
result = a * (1.0 - alpha) + b * a.a;
|
result = a * (1.0 - alpha) + b * clamp(a.a, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef OR_GL_FRAGCOLOR
|
#ifdef OR_GL_FRAGCOLOR
|
||||||
|
|||||||
Reference in New Issue
Block a user