[orx-fx] Add Duotone, DuotoneGradient, LumaHalftone, Posterize, RgbToOkLab, OkLabToRgb
This commit is contained in:
@@ -1,9 +1,22 @@
|
||||
package org.openrndr.extra.fx.color
|
||||
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.extra.fx.*
|
||||
import org.openrndr.extra.fx.fx_rgb_to_oklab
|
||||
import org.openrndr.extra.fx.fx_rgb_to_ycbcr
|
||||
import org.openrndr.extra.fx.fx_ycbcr_to_rgb
|
||||
import org.openrndr.extra.fx.mppFilterShader
|
||||
import org.openrndr.extra.shaderphrases.preprocess
|
||||
import org.openrndr.extras.color.phrases.ColorPhraseBook
|
||||
|
||||
class RgbToYCbcr : Filter(mppFilterShader(fx_rgb_to_ycbcr, "rgb-to-ycbcr"))
|
||||
class YcbcrToRgb : Filter(mppFilterShader(fx_ycbcr_to_rgb, "ycbcr_to_rgb"))
|
||||
class YcbcrToRgb : Filter(mppFilterShader(fx_ycbcr_to_rgb, "ycbcr_to_rgb"))
|
||||
|
||||
class RgbToOkLab : Filter(mppFilterShader(run {
|
||||
ColorPhraseBook.register()
|
||||
fx_rgb_to_oklab.preprocess()
|
||||
}, "rgb-to-oklab"))
|
||||
|
||||
class OkLabToRgb : Filter(mppFilterShader(run {
|
||||
ColorPhraseBook.register()
|
||||
fx_oklab_to_rgb.preprocess()
|
||||
}, "oklab-to-rgb"))
|
||||
|
||||
37
orx-fx/src/commonMain/kotlin/color/Duotone.kt
Normal file
37
orx-fx/src/commonMain/kotlin/color/Duotone.kt
Normal file
@@ -0,0 +1,37 @@
|
||||
package org.openrndr.extra.fx.color
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.draw.filterShaderFromCode
|
||||
import org.openrndr.extra.fx.fx_duotone
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
|
||||
import org.openrndr.extra.parameters.ColorParameter
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.shaderphrases.preprocess
|
||||
import org.openrndr.extras.color.phrases.ColorPhraseBook
|
||||
import org.openrndr.extras.color.presets.CORAL
|
||||
import org.openrndr.extras.color.presets.DARK_GRAY
|
||||
import org.openrndr.extras.color.presets.NAVY
|
||||
|
||||
@Description("Duotone")
|
||||
class Duotone : Filter(filterShaderFromCode(run {
|
||||
ColorPhraseBook.register()
|
||||
fx_duotone.preprocess()
|
||||
}, "duotone")) {
|
||||
|
||||
@ColorParameter("background", order = 0)
|
||||
var backgroundColor: ColorRGBa by parameters
|
||||
|
||||
@ColorParameter("foreground", order = 1)
|
||||
var foregroundColor: ColorRGBa by parameters
|
||||
|
||||
@BooleanParameter("LAB interpolation", order = 2)
|
||||
var labInterpolation: Boolean by parameters
|
||||
|
||||
init {
|
||||
backgroundColor = ColorRGBa.NAVY
|
||||
foregroundColor = ColorRGBa.CORAL
|
||||
labInterpolation = true
|
||||
}
|
||||
}
|
||||
49
orx-fx/src/commonMain/kotlin/color/DuotoneGradient.kt
Normal file
49
orx-fx/src/commonMain/kotlin/color/DuotoneGradient.kt
Normal file
@@ -0,0 +1,49 @@
|
||||
package org.openrndr.extra.fx.color
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.draw.filterShaderFromCode
|
||||
import org.openrndr.extra.fx.fx_duotone_gradient
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
|
||||
import org.openrndr.extra.parameters.ColorParameter
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.DoubleParameter
|
||||
import org.openrndr.extra.shaderphrases.preprocess
|
||||
import org.openrndr.extras.color.phrases.ColorPhraseBook
|
||||
import org.openrndr.extras.color.presets.CORAL
|
||||
import org.openrndr.extras.color.presets.NAVY
|
||||
|
||||
@Description("Duotone Gradient")
|
||||
class DuotoneGradient : Filter(filterShaderFromCode(run {
|
||||
ColorPhraseBook.register()
|
||||
fx_duotone_gradient.preprocess()
|
||||
}, "duotone-gradient")) {
|
||||
|
||||
@ColorParameter("background 0", order = 0)
|
||||
var backgroundColor0: ColorRGBa by parameters
|
||||
|
||||
@ColorParameter("foreground 0", order = 1)
|
||||
var foregroundColor0: ColorRGBa by parameters
|
||||
|
||||
@ColorParameter("background 1", order = 2)
|
||||
var backgroundColor1: ColorRGBa by parameters
|
||||
|
||||
@ColorParameter("foreground 1", order = 3)
|
||||
var foregroundColor1: ColorRGBa by parameters
|
||||
|
||||
@BooleanParameter("LAB interpolation", order = 4)
|
||||
var labInterpolation: Boolean by parameters
|
||||
|
||||
@DoubleParameter("rotation", -180.0, 180.0, order = 5)
|
||||
var rotation: Double by parameters
|
||||
|
||||
init {
|
||||
backgroundColor0 = ColorRGBa.NAVY
|
||||
foregroundColor0 = ColorRGBa.CORAL
|
||||
backgroundColor1 = ColorRGBa.BLACK
|
||||
foregroundColor1 = ColorRGBa.WHITE
|
||||
rotation = 0.0
|
||||
labInterpolation = true
|
||||
}
|
||||
}
|
||||
32
orx-fx/src/commonMain/kotlin/color/Posterize.kt
Normal file
32
orx-fx/src/commonMain/kotlin/color/Posterize.kt
Normal file
@@ -0,0 +1,32 @@
|
||||
package org.openrndr.extra.fx.color
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.draw.filterShaderFromCode
|
||||
import org.openrndr.extra.fx.fx_duotone
|
||||
import org.openrndr.extra.fx.fx_posterize
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
|
||||
import org.openrndr.extra.parameters.ColorParameter
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.IntParameter
|
||||
import org.openrndr.extra.shaderphrases.preprocess
|
||||
import org.openrndr.extras.color.phrases.ColorPhraseBook
|
||||
import org.openrndr.extras.color.presets.CORAL
|
||||
import org.openrndr.extras.color.presets.DARK_GRAY
|
||||
import org.openrndr.extras.color.presets.NAVY
|
||||
|
||||
@Description("Posterize")
|
||||
class Posterize : Filter(filterShaderFromCode(fx_posterize, "posterize")) {
|
||||
|
||||
@IntParameter("levels", 2, 32, order = 0)
|
||||
var levels: Int by parameters
|
||||
|
||||
@IntParameter("window", 1, 8, order = 0)
|
||||
var window: Int by parameters
|
||||
|
||||
init {
|
||||
levels = 4
|
||||
window = 1
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,8 @@ class Lenses : Filter(mppFilterShader(fx_lenses, "block-repeat")) {
|
||||
rows = 6
|
||||
columns = 8
|
||||
distort = 0.0
|
||||
|
||||
scale = 1.0
|
||||
rotation = 0.0
|
||||
bicubicFiltering = true
|
||||
}
|
||||
}
|
||||
|
||||
53
orx-fx/src/commonMain/kotlin/dither/LumaHalftone.kt
Normal file
53
orx-fx/src/commonMain/kotlin/dither/LumaHalftone.kt
Normal file
@@ -0,0 +1,53 @@
|
||||
package org.openrndr.extra.fx.dither
|
||||
|
||||
import org.openrndr.draw.Filter
|
||||
import org.openrndr.draw.filterShaderFromCode
|
||||
import org.openrndr.extra.fx.fx_luma_halftone
|
||||
import org.openrndr.extra.parameters.BooleanParameter
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.DoubleParameter
|
||||
|
||||
|
||||
@Description("Luma Halftone")
|
||||
class LumaHalftone: Filter(filterShaderFromCode(fx_luma_halftone, "luma-halftone")) {
|
||||
@DoubleParameter("scale", 1.0, 30.0, precision = 4)
|
||||
var scale: Double by parameters
|
||||
|
||||
@DoubleParameter("threshold", 0.0, 1.0, precision = 4)
|
||||
var threshold: Double by parameters
|
||||
|
||||
@DoubleParameter("rotation", -180.0, 180.0)
|
||||
var rotation: Double by parameters
|
||||
|
||||
@DoubleParameter("freq0", 1.0, 400.0)
|
||||
var freq0: Double by parameters
|
||||
|
||||
@DoubleParameter("freq1", 1.0, 400.0)
|
||||
var freq1: Double by parameters
|
||||
|
||||
@DoubleParameter("gain1", -2.0, 2.0)
|
||||
var gain1: Double by parameters
|
||||
|
||||
@DoubleParameter("phase0", -1.0, 1.0)
|
||||
var phase0: Double by parameters
|
||||
|
||||
@DoubleParameter("phase1", -1.0, 1.0)
|
||||
var phase1: Double by parameters
|
||||
|
||||
|
||||
@BooleanParameter("invert")
|
||||
var invert: Boolean by parameters
|
||||
|
||||
|
||||
init {
|
||||
scale = 3.0
|
||||
rotation = 0.0
|
||||
threshold = 0.5
|
||||
freq1 = 20.0
|
||||
freq0 = 10.0
|
||||
gain1 = 0.1
|
||||
phase0 = 0.0
|
||||
phase1 = 0.0
|
||||
invert = true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user