[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.extra.fx.*
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
import org.openrndr.extra.parameters.DoubleParameter
|
||||
|
||||
class ColorBurn : Filter2to1(mppFilterShader(fx_color_burn, "color-burn")) {
|
||||
@BooleanParameter("source clip")
|
||||
@@ -65,8 +66,16 @@ class Normal : Filter2to1(mppFilterShader(fx_normal, "normal")) {
|
||||
@BooleanParameter("source clip")
|
||||
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 {
|
||||
clip = false
|
||||
opacityA = 1.0
|
||||
opacityB = 1.0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,10 @@ uniform sampler2D tex0;
|
||||
uniform sampler2D tex1;
|
||||
uniform bool clip;
|
||||
|
||||
uniform float opacityA;
|
||||
uniform float opacityB;
|
||||
|
||||
|
||||
#ifndef OR_GL_FRAGCOLOR
|
||||
out vec4 o_color;
|
||||
#endif
|
||||
@@ -21,14 +25,17 @@ void main() {
|
||||
vec4 b = texture2D(tex1, v_texCoord0);
|
||||
#endif
|
||||
|
||||
a *= opacityA;
|
||||
b *= opacityB;
|
||||
|
||||
float alpha = min(1.0, max(0.0, b.a));
|
||||
|
||||
vec4 result;
|
||||
if (!clip) {
|
||||
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 {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user