[orx-fx] convert to MPP

This commit is contained in:
Edwin Jakobs
2021-06-27 21:07:44 +02:00
parent 7d524df2de
commit 4dfc5c31c8
144 changed files with 1197 additions and 847 deletions

View File

@@ -0,0 +1,75 @@
package org.openrndr.extra.fx.distort
import org.openrndr.draw.*
import org.openrndr.extra.fx.fx_perturb
import org.openrndr.extra.fx.mppFilterShader
import org.openrndr.extra.parameters.*
import org.openrndr.math.Vector2
import org.openrndr.math.Vector3
@Description("Perturb")
class Perturb : Filter(mppFilterShader(fx_perturb, "perturb")) {
var seed: Vector3 by parameters
/**
* base noise scale, default is Vector3(1.0, 1.0, 1.0)
*/
@DoubleParameter("scale", 0.01, 8.0, order = 0)
var scale: Double by parameters
@DoubleParameter("phase", -2.0, 2.0, order = 1)
var phase: Double by parameters
/**
* lacunarity is the amount by which scale is modulated per octave, default is Vector3(2.0, 2.0, 2.0)
*/
@DoubleParameter("lacunarity", 0.0, 1.0, order = 2)
var lacunarity: Double by parameters
@DoubleParameter("gain", 0.0, 1.0, order = 3)
var gain: Double by parameters
@DoubleParameter("decay", 0.0, 1.0, order = 4)
var decay: Double by parameters
/**
* the number of octaves of noise to generate, default is 4
*/
@IntParameter("octaves", 1, 10, order = 5)
var octaves: Int by parameters
@IntParameter("x segments", 0, 256, order = 6)
var xSegments: Int by parameters
@IntParameter("y segments", 0, 256, order = 7)
var ySegments: Int by parameters
@BooleanParameter("output UV", order = 8)
var outputUV: Boolean by parameters
@Vector2Parameter("offset", -1.0, 1.0, order = 9)
var offset: Vector2 by parameters
init {
seed = Vector3.ZERO
scale = 1.0
lacunarity = 2.0
gain = 0.5
decay = 0.5
octaves = 4
phase = 0.0
xSegments = 0
ySegments = 0
outputUV = false
offset = Vector2.ZERO
}
var bicubicFiltering = true
override fun apply(source: Array<ColorBuffer>, target: Array<ColorBuffer>) {
if (bicubicFiltering && source.isNotEmpty()) {
source[0].generateMipmaps()
source[0].filter(MinifyingFilter.LINEAR_MIPMAP_LINEAR, MagnifyingFilter.LINEAR)
}
super.apply(source, target)
}
}