[orx-fx] Add Invert fx filter (#214)
This commit is contained in:
18
orx-fx/src/commonMain/kotlin/color/Invert.kt
Normal file
18
orx-fx/src/commonMain/kotlin/color/Invert.kt
Normal file
@@ -0,0 +1,18 @@
|
||||
package org.openrndr.extra.fx.color
|
||||
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.extra.fx.fx_invert
|
||||
import org.openrndr.extra.fx.fx_sepia
|
||||
import org.openrndr.extra.fx.mppFilterShader
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.DoubleParameter
|
||||
|
||||
@Description("Invert")
|
||||
class Invert : Filter(mppFilterShader(fx_invert, "invert")) {
|
||||
@DoubleParameter("amount", 0.0, 1.0)
|
||||
var amount: Double by parameters
|
||||
|
||||
init {
|
||||
amount = 1.0
|
||||
}
|
||||
}
|
||||
14
orx-fx/src/shaders/glsl/color/invert.frag
Normal file
14
orx-fx/src/shaders/glsl/color/invert.frag
Normal file
@@ -0,0 +1,14 @@
|
||||
in vec2 v_texCoord0;
|
||||
uniform sampler2D tex0; // input
|
||||
uniform float amount;
|
||||
out vec4 o_color;
|
||||
|
||||
void main() {
|
||||
vec4 color = texture(tex0, v_texCoord0);
|
||||
|
||||
float a = color.a;
|
||||
vec3 rgb = a > 0.0 ? color.rgb / a : vec3(0.0);
|
||||
rgb = mix(rgb, 1.0 - rgb, amount);
|
||||
|
||||
o_color = vec4(rgb * a, a);
|
||||
}
|
||||
Reference in New Issue
Block a user