Add parameters to TapeNoise
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
package org.openrndr.extra.fx.distort
|
||||
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.draw.filterShaderFromUrl
|
||||
import org.openrndr.extra.fx.filterFragmentUrl
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
import org.openrndr.extra.parameters.ColorParameter
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.DoubleParameter
|
||||
|
||||
@@ -21,9 +24,36 @@ class TapeNoise : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tape-noi
|
||||
@DoubleParameter("noise high", 0.0, 1.0)
|
||||
var noiseHigh: Double by parameters
|
||||
|
||||
@DoubleParameter("gap frequency", 0.0, 2.0)
|
||||
var gapFrequency: Double by parameters
|
||||
|
||||
@DoubleParameter("gap low", -1.0, 1.0)
|
||||
var gapLow: Double by parameters
|
||||
@DoubleParameter("gap high", -1.0, 1.0)
|
||||
var gapHigh: Double by parameters
|
||||
|
||||
@DoubleParameter("deform amplitude", 0.0, 1.0)
|
||||
var deformAmplitude: Double by parameters
|
||||
|
||||
@DoubleParameter("deform frequency", 0.0, 1.0)
|
||||
var deformFrequency: Double by parameters
|
||||
|
||||
|
||||
@ColorParameter("tint")
|
||||
var tint: ColorRGBa by parameters
|
||||
|
||||
@BooleanParameter("monochrome")
|
||||
var monochrome: Boolean by parameters
|
||||
|
||||
init {
|
||||
gain = 0.5
|
||||
noiseLow = 0.5
|
||||
noiseHigh = 0.8
|
||||
}
|
||||
tint = ColorRGBa.WHITE
|
||||
monochrome = false
|
||||
gapFrequency = 10.0
|
||||
gapLow = -1.0
|
||||
gapHigh = -0.99
|
||||
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,13 @@ uniform float time;
|
||||
uniform float gain;
|
||||
uniform float noiseLow;
|
||||
uniform float noiseHigh;
|
||||
uniform vec4 tint;
|
||||
uniform bool monochrome;
|
||||
uniform float deformAmplitude;
|
||||
uniform float deformFrequency;
|
||||
uniform float gapFrequency;
|
||||
uniform float gapLow;
|
||||
uniform float gapHigh;
|
||||
|
||||
#define HASHSCALE 443.8975
|
||||
vec2 hash22(vec2 p) {
|
||||
@@ -26,10 +33,11 @@ vec3 aberrationColor(float f) {
|
||||
|
||||
void main() {
|
||||
float dk = 1.0/600.0;
|
||||
o_output = vec4(0.0);
|
||||
for (int k = 0; k < 10; ++k ) {
|
||||
vec2 duv = v_texCoord0;
|
||||
duv.y += smoothstep(pow(cos(time+k*dk+v_texCoord0.y*1.0),10.0)*0.1+0.1, 0.0, v_texCoord0.x)*0.1 * cos(time+k*dk);
|
||||
duv.y += smoothstep(pow(1.0-cos(time+k*dk+v_texCoord0.y*1.0),10.0)*0.1+0.1, 0.9, v_texCoord0.x)*0.1 * cos(time+k*dk);
|
||||
duv.y += smoothstep(pow(cos(time+k*dk+v_texCoord0.y*1.0),10.0)*0.1+0.1, 0.0, v_texCoord0.x)*deformAmplitude * cos((time+k*dk)*deformFrequency);
|
||||
duv.y += smoothstep(pow(1.0-cos(time+k*dk+v_texCoord0.y*1.0),10.0)*0.1+0.1, 0.9, v_texCoord0.x)*deformAmplitude * cos((time+k*dk)*deformFrequency);
|
||||
duv.y += sin(v_texCoord0.x*3.1415926535)*0.0;
|
||||
float bc = floor(hash22(vec2(time+k*dk, (time+k*dk)*0.1)).x*20.0);
|
||||
|
||||
@@ -40,13 +48,17 @@ void main() {
|
||||
vec2 v2b = hash22(duv.yx*0.03+time+k*dk);
|
||||
float stretch = (cos(time+k*dk)*0.001+0.002)*0.3+0.001;
|
||||
vec2 h = hash22(duv.yy*stretch+time+k*dk);
|
||||
float gap = smoothstep(-1.0, -0.99, cos(gb3*(10.0+duv.y*10.0 + (time+k*dk)*10.0) +duv.x*10.0)) * (cos(gb3)*0.5+0.5);
|
||||
float gap = smoothstep(gapLow, gapHigh, cos(gb3*(gapFrequency+duv.y*gapFrequency + (time+k*dk)*gapFrequency) +duv.x*gapFrequency)) * (cos(gb3)*0.5+0.5);
|
||||
|
||||
float r = smoothstep(noiseLow, noiseHigh, h.x*gap*v2.x)*1.0;
|
||||
float g = smoothstep(noiseLow, noiseHigh, h.x*gap*v2.y)*1.0;
|
||||
float b = smoothstep(noiseLow, noiseHigh, h.x*gap*v2b.x)*1.0;
|
||||
float a = smoothstep(noiseLow, noiseHigh, h.x*gap*v2b.y)*1.0;
|
||||
o_output += vec4(r,g,b,a)*gain;
|
||||
if (!monochrome) {
|
||||
o_output += vec4(r, g, b, a)*gain * tint;
|
||||
} else {
|
||||
o_output += vec4(r, r, r, a)*gain * tint;
|
||||
}
|
||||
}
|
||||
o_output *= o_output.a;
|
||||
o_output += texture(tex0, v_texCoord0);
|
||||
|
||||
Reference in New Issue
Block a user