[orx-fx] Add radius parameter to Perturb

This commit is contained in:
Edwin Jakobs
2021-09-21 21:49:31 +02:00
parent a4cab62012
commit 299a6d086c
2 changed files with 7 additions and 2 deletions

View File

@@ -19,6 +19,9 @@ class Perturb : Filter(mppFilterShader(fx_perturb, "perturb")) {
@DoubleParameter("phase", -2.0, 2.0, order = 1)
var phase: Double by parameters
@DoubleParameter("radius", 0.0, 2.0, order = 1)
var radius: Double by parameters
/**
* lacunarity is the amount by which scale is modulated per octave, default is Vector3(2.0, 2.0, 2.0)
*/
@@ -62,6 +65,7 @@ class Perturb : Filter(mppFilterShader(fx_perturb, "perturb")) {
ySegments = 0
outputUV = false
offset = Vector2.ZERO
radius = 1.0
}
var bicubicFiltering = true

View File

@@ -2,6 +2,7 @@
uniform float gain;
uniform vec3 seed;
uniform float phase;
uniform float radius;
uniform float scale;
uniform float lacunarity;
@@ -141,8 +142,8 @@ void main() {
float _gain = gain;
float shift = 100.0;
vec3 xseed = vec3(seed.xy, seed.z+cos(phase*3.1415926535));
vec3 yseed = vec3(seed.yx, seed.z+sin(phase*3.1415926535));
vec3 xseed = vec3(seed.xy, seed.z+radius*cos(phase*3.1415926535));
vec3 yseed = vec3(seed.yx, seed.z+radius*sin(phase*3.1415926535));
vec3 uv = vec3(v_texCoord0 + offset, 1.0) * 2.0 - 1.0;
vec3 px = ((segment(uv, xSegments, ySegments) + xseed) * scale);