Add ColorTint, LumaThreshold, HorizontalWave, VerticalWave, FrameBlur filters to orx-fx

This commit is contained in:
Edwin Jakobs
2020-02-05 14:15:42 +01:00
parent 2af3b89d36
commit 4e241aca6c
9 changed files with 218 additions and 1 deletions

View File

@@ -0,0 +1,41 @@
package org.openrndr.extra.fx.blur
import org.openrndr.draw.*
import org.openrndr.extra.fx.filterFragmentCode
import org.openrndr.extra.parameters.Description
import org.openrndr.extra.parameters.DoubleParameter
import org.openrndr.extra.parameters.IntParameter
@Description("Frame blur")
class FrameBlur : Filter(Shader.createFromCode(Filter.filterVertexCode,
filterFragmentCode("blur/frame-blur.frag"))) {
@DoubleParameter("blend", 0.0, 1.0)
var blend: Double by parameters
private var intermediate: ColorBuffer? = null
init {
blend = 0.5
}
override fun apply(source: Array<ColorBuffer>, target: Array<ColorBuffer>) {
if (target.isNotEmpty()) {
intermediate?.let {
if (it.width != target[0].width || it.height != target[0].height) {
it.destroy()
intermediate = null
}
}
if (intermediate == null) {
intermediate = colorBuffer(target[0].width, target[0].height, type = ColorType.FLOAT16)
}
super.apply(arrayOf(source[0], intermediate!!), arrayOf(intermediate!!))
intermediate!!.copyTo(target[0])
}
}
}

View File

@@ -1,7 +1,21 @@
package org.openrndr.extra.fx.color
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Filter
import org.openrndr.draw.Shader
import org.openrndr.extra.fx.filterFragmentCode
import org.openrndr.extra.parameters.ColorParameter
import org.openrndr.extra.parameters.Description
class ColorMix : Filter(Shader.createFromCode(Filter.filterVertexCode, filterFragmentCode("color/color-mix.frag")))
class ColorMix : Filter(Shader.createFromCode(Filter.filterVertexCode, filterFragmentCode("color/color-mix.frag")))
@Description("Tint")
class ColorTint : Filter(Shader.createFromCode(Filter.filterVertexCode, filterFragmentCode("color/color-tint.frag"))) {
@ColorParameter("tint")
var tint: ColorRGBa by parameters
init {
tint = ColorRGBa.PINK
}
}

View File

@@ -0,0 +1,38 @@
package org.openrndr.extra.fx.color
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Filter
import org.openrndr.draw.Shader
import org.openrndr.extra.fx.filterFragmentCode
import org.openrndr.extra.parameters.BooleanParameter
import org.openrndr.extra.parameters.ColorParameter
import org.openrndr.extra.parameters.Description
import org.openrndr.extra.parameters.DoubleParameter
@Description("Luma threshold ")
class Threshold : Filter(Shader.createFromCode(Filter.filterVertexCode, filterFragmentCode("color/luma-threshold.frag"))) {
@DoubleParameter("threshold value", 0.0, 1.0)
var threshold: Double by parameters
@ColorParameter("foreground color")
var foreground: ColorRGBa by parameters
@ColorParameter("background color")
var background: ColorRGBa by parameters
@DoubleParameter("background opacity", 0.0, 1.0)
var backgroundOpacity: Double by parameters
@DoubleParameter("foreground opacity", 0.0, 1.0)
var foregroundOpacity: Double by parameters
init {
threshold = 0.5
foreground = ColorRGBa.WHITE
background = ColorRGBa.BLACK
foregroundOpacity = 1.0
backgroundOpacity = 1.0
}
}

View File

@@ -0,0 +1,44 @@
package org.openrndr.extra.fx.distort
import org.openrndr.draw.Filter
import org.openrndr.draw.Shader
import org.openrndr.extra.fx.filterFragmentCode
import org.openrndr.extra.parameters.Description
import org.openrndr.extra.parameters.DoubleParameter
@Description("Horizontal wave")
class HorizontalWave : Filter(Shader.createFromCode(filterVertexCode, filterFragmentCode("distort/horizontal-wave.frag"))) {
@DoubleParameter("frequency", 0.0, 64.0)
var frequency: Double by parameters
@DoubleParameter("amplitude", 0.0, 1.0)
var amplitude: Double by parameters
@DoubleParameter("phase", -0.5, 0.5)
var phase: Double by parameters
init {
frequency = 1.0
amplitude = 0.1
phase = 0.0
}
}
@Description("Vertical wave")
class VerticalWave : Filter(Shader.createFromCode(filterVertexCode, filterFragmentCode("distort/vertical-wave.frag"))) {
@DoubleParameter("frequency", 0.0, 64.0)
var frequency: Double by parameters
@DoubleParameter("amplitude", 0.0, 1.0)
var amplitude: Double by parameters
@DoubleParameter("phase", -0.5, 0.5)
var phase: Double by parameters
init {
frequency = 1.0
amplitude = 0.1
phase = 0.0
}
}