diff --git a/orx-fx/build.gradle b/orx-fx/build.gradle deleted file mode 100644 index 4fb7d132..00000000 --- a/orx-fx/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -sourceSets { - demo { - java { - srcDirs = ["src/demo/kotlin"] - compileClasspath += main.getCompileClasspath() - runtimeClasspath += main.getRuntimeClasspath() - } - } -} - -dependencies { - api project(":orx-parameters") - implementation project(":orx-noise") - implementation("org.openrndr:openrndr-filter:$openrndrVersion") - demoImplementation("org.openrndr:openrndr-ffmpeg:$openrndrVersion") - demoImplementation("org.openrndr:openrndr-application:$openrndrVersion") - demoImplementation("org.openrndr:openrndr-extensions:$openrndrVersion") - demoImplementation(project(":orx-gui")) - demoImplementation(project(":orx-compositor")) - demoRuntimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion") - demoRuntimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion") - demoImplementation(sourceSets.getByName("main").output) -} \ No newline at end of file diff --git a/orx-fx/build.gradle.kts b/orx-fx/build.gradle.kts new file mode 100644 index 00000000..ea793285 --- /dev/null +++ b/orx-fx/build.gradle.kts @@ -0,0 +1,116 @@ +import Orx_embed_shaders_gradle.EmbedShadersTask + +plugins { + kotlin("multiplatform") + kotlin("plugin.serialization") + id("orx.embed-shaders") +} + +val kotlinxSerializationVersion: String by rootProject.extra +val kotestVersion: String by rootProject.extra +val junitJupiterVersion: String by rootProject.extra +val jvmTarget: String by rootProject.extra +val kotlinApiVersion: String by rootProject.extra +val kotlinVersion: String by rootProject.extra +val kotlinLoggingVersion: String by rootProject.extra +val kluentVersion: String by rootProject.extra +val openrndrVersion: String by rootProject.extra +val openrndrOS: String by rootProject.extra +val spekVersion: String by rootProject.extra + +kotlin { + jvm { + compilations { + val demo by creating { + defaultSourceSet { + kotlin.srcDir("src/demo") + dependencies { + implementation(project(":orx-camera")) + implementation("org.openrndr:openrndr-application:$openrndrVersion") + implementation("org.openrndr:openrndr-extensions:$openrndrVersion") + runtimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion") + runtimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion") + implementation(compilations["main"]!!.output.allOutputs) + } + } + } + } + compilations.all { + kotlinOptions.jvmTarget = jvmTarget + kotlinOptions.apiVersion = kotlinApiVersion + } + testRuns["test"].executionTask.configure { + useJUnitPlatform() + } + } + js(IR) { + browser() + nodejs() + } + + sourceSets { + val shaderKotlin by creating { + this.kotlin.srcDir("$projectDir/build/generated/shaderKotlin") + } + @Suppress("UNUSED_VARIABLE") + val commonMain by getting { + dependencies { + implementation(project(":orx-parameters")) + implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion") + implementation("org.openrndr:openrndr-application:$openrndrVersion") + implementation("org.openrndr:openrndr-draw:$openrndrVersion") + implementation("org.openrndr:openrndr-filter:$openrndrVersion") + implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") + implementation("io.github.microutils:kotlin-logging:$kotlinLoggingVersion") + api(shaderKotlin.kotlin) + } + } + commonMain.dependsOn(shaderKotlin) + @Suppress("UNUSED_VARIABLE") + val commonTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion") + implementation("io.kotest:kotest-assertions-core:$kotestVersion") + } + } + @Suppress("UNUSED_VARIABLE") + val jvmMain by getting + + @Suppress("UNUSED_VARIABLE") + val jvmTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + implementation(kotlin("test-junit5")) + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion") + runtimeOnly("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion") + runtimeOnly("org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion") + implementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion") + implementation("org.amshove.kluent:kluent:$kluentVersion") + } + } + + @Suppress("UNUSED_VARIABLE") + val jsMain by getting + + @Suppress("UNUSED_VARIABLE") + val jsTest by getting { + dependencies { + implementation(kotlin("test-js")) + } + } + } +} + +val embedShaders = tasks.register("embedShaders") { + inputDir.set(file("$projectDir/src/shaders/glsl")) + outputDir.set(file("$buildDir/generated/shaderKotlin")) + defaultPackage.set("org.openrndr.extra.fx") + defaultVisibility.set("internal") + namePrefix.set("fx_") +}.get() + +tasks.getByName("compileKotlinJvm").dependsOn(embedShaders) +tasks.getByName("compileKotlinJs").dependsOn(embedShaders) diff --git a/orx-fx/src/main/kotlin/FilterTools.kt b/orx-fx/src/commonMain/kotlin/FilterTools.kt similarity index 52% rename from orx-fx/src/main/kotlin/FilterTools.kt rename to orx-fx/src/commonMain/kotlin/FilterTools.kt index d0c90a54..96f594b6 100644 --- a/orx-fx/src/main/kotlin/FilterTools.kt +++ b/orx-fx/src/commonMain/kotlin/FilterTools.kt @@ -2,13 +2,12 @@ package org.openrndr.extra.fx import org.openrndr.draw.ColorFormat import org.openrndr.draw.ColorType +import org.openrndr.draw.Shader +import org.openrndr.draw.filterShaderFromCode +import org.openrndr.internal.Driver import org.openrndr.resourceUrl -internal class FilterTools - - -internal fun filterFragmentUrl(resourceId: String): String { - return resourceUrl("gl3/$resourceId", FilterTools::class) -} +fun mppFilterShader(code: String, name: String) : Shader = + filterShaderFromCode("${Driver.instance.shaderConfiguration()}\n${code}", name) internal data class ColorBufferDescription(val width: Int, val height: Int, val contentScale: Double, val format: ColorFormat, val type: ColorType) diff --git a/orx-fx/src/main/kotlin/antialias/FXAA.kt b/orx-fx/src/commonMain/kotlin/antialias/FXAA.kt similarity index 86% rename from orx-fx/src/main/kotlin/antialias/FXAA.kt rename to orx-fx/src/commonMain/kotlin/antialias/FXAA.kt index c3f24149..ec2e727b 100644 --- a/orx-fx/src/main/kotlin/antialias/FXAA.kt +++ b/orx-fx/src/commonMain/kotlin/antialias/FXAA.kt @@ -1,8 +1,8 @@ package org.openrndr.extra.fx.antialias import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_fxaa +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @@ -10,7 +10,7 @@ import org.openrndr.extra.parameters.DoubleParameter * FXAA approximate antialiasing filter. Only works on LDR inputs */ @Description("FXAA") -class FXAA : Filter(filterShaderFromUrl(filterFragmentUrl("antialias/fxaa.frag"))) { +class FXAA : Filter( mppFilterShader(fx_fxaa, "fxaa")) { /** * luma threshold, default value is 0.5 */ diff --git a/orx-fx/src/commonMain/kotlin/blend/BlendFilters.kt b/orx-fx/src/commonMain/kotlin/blend/BlendFilters.kt new file mode 100644 index 00000000..fff9add8 --- /dev/null +++ b/orx-fx/src/commonMain/kotlin/blend/BlendFilters.kt @@ -0,0 +1,115 @@ +package org.openrndr.extra.fx.blend + +import org.openrndr.draw.Filter +import org.openrndr.extra.fx.* +import org.openrndr.extra.parameters.BooleanParameter + +class ColorBurn : Filter(mppFilterShader(fx_color_burn, "color-burn")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class ColorDodge : Filter(mppFilterShader(fx_color_dodge, "color-dodge")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Darken : Filter(mppFilterShader(fx_darken, "darken")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class HardLight : Filter(mppFilterShader(fx_hard_light, "hard-light")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Lighten : Filter(mppFilterShader(fx_lighten, "lighten")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Multiply : Filter(mppFilterShader(fx_multiply,"multiply")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Normal : Filter(mppFilterShader(fx_normal, "normal")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Overlay : Filter(mppFilterShader(fx_overlay, "overlay")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + +class Screen : Filter(mppFilterShader(fx_screen, "screen")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} + + +class SourceIn : Filter(mppFilterShader(fx_source_in, "source-in")) +class SourceOut : Filter(mppFilterShader(fx_source_out,"source-out")) +class SourceAtop : Filter(mppFilterShader(fx_source_atop, "source-atop")) +class DestinationIn : Filter(mppFilterShader(fx_destination_in, "destination-in")) +class DestinationOut : Filter(mppFilterShader(fx_destination_out, "destination-out")) +class DestinationAtop : Filter(mppFilterShader(fx_destination_atop, "destination-atop")) +class Xor : Filter(mppFilterShader(fx_xor, "xor")) + +class MultiplyContrast : Filter(mppFilterShader(fx_multiply_contrast, "multiply-contrast")) + +class Passthrough : Filter(mppFilterShader(fx_passthrough, "passthrough")) +class Add : Filter(mppFilterShader(fx_add, "add")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} +class Subtract : Filter(mppFilterShader(fx_subtract,"subtract")) { + @BooleanParameter("source clip") + var clip: Boolean by parameters + + init { + clip = false + } +} \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/blur/ApproximateGaussianBlur.kt b/orx-fx/src/commonMain/kotlin/blur/ApproximateGaussianBlur.kt similarity index 89% rename from orx-fx/src/main/kotlin/blur/ApproximateGaussianBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/ApproximateGaussianBlur.kt index 895667fa..5a59e7a3 100644 --- a/orx-fx/src/main/kotlin/blur/ApproximateGaussianBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/ApproximateGaussianBlur.kt @@ -2,7 +2,8 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.* import org.openrndr.extra.fx.ColorBufferDescription -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_approximate_gaussian_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @@ -13,7 +14,7 @@ import org.openrndr.math.Vector2 * Approximate separated Gaussian blur */ @Description("Approximate Gaussian blur") -class ApproximateGaussianBlur : Filter(filterShaderFromUrl(filterFragmentUrl(("blur/approximate-gaussian-blur.frag")))) { +class ApproximateGaussianBlur : Filter(mppFilterShader(fx_approximate_gaussian_blur, "approximate gaussian blur")) { /** * blur sample window, default value is 5 */ diff --git a/orx-fx/src/main/kotlin/blur/Bloom.kt b/orx-fx/src/commonMain/kotlin/blur/Bloom.kt similarity index 84% rename from orx-fx/src/main/kotlin/blur/Bloom.kt rename to orx-fx/src/commonMain/kotlin/blur/Bloom.kt index 7dce1145..d79215e8 100644 --- a/orx-fx/src/main/kotlin/blur/Bloom.kt +++ b/orx-fx/src/commonMain/kotlin/blur/Bloom.kt @@ -2,13 +2,14 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.* import org.openrndr.extra.fx.blend.Add -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_bloom +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @Description("Bloom") -class Bloom(blur: Filter = ApproximateGaussianBlur()) : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom.frag"))) { +class Bloom(blur: Filter = ApproximateGaussianBlur()) : Filter(mppFilterShader(fx_bloom, "bloom")) { /** * the blur filter to use for the bloom, default is Approximate Gaussian Blur */ @@ -59,8 +60,8 @@ class Bloom(blur: Filter = ApproximateGaussianBlur()) : Filter(filterShaderFromU for (downsample in 0 until downsamples) { val div = 1 shl downsample - val bufferA = colorBuffer(dest.width/div, dest.height/div, 1.0, target[0].format, ColorType.FLOAT16) - val bufferB = colorBuffer(dest.width/div, dest.height/div, 1.0, target[0].format, ColorType.FLOAT16) + val bufferA = colorBuffer(dest.width / div, dest.height / div, 1.0, target[0].format, ColorType.FLOAT16) + val bufferB = colorBuffer(dest.width / div, dest.height / div, 1.0, target[0].format, ColorType.FLOAT16) samplers.add(Pair(bufferA, bufferB)) } } diff --git a/orx-fx/src/main/kotlin/blur/BoxBlur.kt b/orx-fx/src/commonMain/kotlin/blur/BoxBlur.kt similarity index 91% rename from orx-fx/src/main/kotlin/blur/BoxBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/BoxBlur.kt index 586cfa28..0540258a 100644 --- a/orx-fx/src/main/kotlin/blur/BoxBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/BoxBlur.kt @@ -1,7 +1,8 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_box_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @@ -12,7 +13,7 @@ import org.openrndr.math.Vector2 * BoxBlur implemented as a separable filter */ @Description("Box-blur") -class BoxBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/box-blur.frag"))) { +class BoxBlur : Filter(mppFilterShader(fx_box_blur,"box-blur")) { data class ColorBufferDescription(val width: Int, val height: Int, val contentScale: Double, val format: ColorFormat, val type: ColorType) diff --git a/orx-fx/src/main/kotlin/blur/FrameBlur.kt b/orx-fx/src/commonMain/kotlin/blur/FrameBlur.kt similarity index 79% rename from orx-fx/src/main/kotlin/blur/FrameBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/FrameBlur.kt index b15a014d..49759f88 100644 --- a/orx-fx/src/main/kotlin/blur/FrameBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/FrameBlur.kt @@ -2,12 +2,13 @@ package org.openrndr.extra.fx.blur import org.openrndr.color.ColorRGBa import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_frame_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Frame blur") -class FrameBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/frame-blur.frag"))) { +class FrameBlur : Filter(mppFilterShader(fx_frame_blur, "frame-blur")) { @DoubleParameter("blend", 0.0, 1.0) var blend: Double by parameters @@ -25,17 +26,16 @@ class FrameBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/frame-blur. it.destroy() intermediate = null } - } if (intermediate == null) { intermediate = colorBuffer(target[0].width, target[0].height, type = ColorType.FLOAT16) - intermediate?.fill(ColorRGBa.TRANSPARENT) + //intermediate?.fill(ColorRGBa.TRANSPARENT) + TODO("no mpp colorbuffer.fill") } super.apply(arrayOf(source[0], intermediate!!), arrayOf(intermediate!!)) intermediate!!.copyTo(target[0]) } } - } diff --git a/orx-fx/src/main/kotlin/blur/GaussianBlur.kt b/orx-fx/src/commonMain/kotlin/blur/GaussianBlur.kt similarity index 83% rename from orx-fx/src/main/kotlin/blur/GaussianBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/GaussianBlur.kt index f9befd6c..464d1288 100644 --- a/orx-fx/src/main/kotlin/blur/GaussianBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/GaussianBlur.kt @@ -1,8 +1,8 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_gaussian_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @@ -12,7 +12,7 @@ import org.openrndr.extra.parameters.IntParameter * Exact Gaussian blur, implemented as a single pass filter */ @Description("Gaussian blur") -class GaussianBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/gaussian-blur.frag"))) { +class GaussianBlur : Filter(mppFilterShader(fx_gaussian_blur,"gaussian-blur")) { /** * The sample window, default value is 5 diff --git a/orx-fx/src/main/kotlin/blur/HashBlur.kt b/orx-fx/src/commonMain/kotlin/blur/HashBlur.kt similarity index 82% rename from orx-fx/src/main/kotlin/blur/HashBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/HashBlur.kt index 699c061a..a66203fc 100644 --- a/orx-fx/src/main/kotlin/blur/HashBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/HashBlur.kt @@ -1,14 +1,14 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_hash_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @Description("Hash blur") -class HashBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/hash-blur.frag"))) { +class HashBlur : Filter(mppFilterShader(fx_hash_blur, "hash-blur")) { /** * Blur radius in pixels, default is 5.0 */ diff --git a/orx-fx/src/main/kotlin/blur/LaserBlur.kt b/orx-fx/src/commonMain/kotlin/blur/LaserBlur.kt similarity index 85% rename from orx-fx/src/main/kotlin/blur/LaserBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/LaserBlur.kt index 648c4c52..97f90dc9 100644 --- a/orx-fx/src/main/kotlin/blur/LaserBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/LaserBlur.kt @@ -1,14 +1,13 @@ package org.openrndr.extra.fx.blur -import org.openrndr.draw.ColorBuffer -import org.openrndr.draw.ColorType -import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.draw.* +import org.openrndr.extra.fx.fx_laser_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.* import org.openrndr.math.Vector2 +import kotlin.math.pow -private class LaserBlurPass : Filter(filterShaderFromUrl(filterFragmentUrl("blur/laser-blur.frag"))) { +private class LaserBlurPass : Filter(mppFilterShader(fx_laser_blur, "laser-blur")) { var radius: Double by parameters var amp0: Double by parameters var amp1: Double by parameters @@ -96,7 +95,7 @@ class LaserBlur : Filter() { intermediates.add(source[0].createEquivalent(type = ColorType.FLOAT16)) } - pass.radius = 1.0 + Math.pow(exp, 0.0) * radius + pass.radius = 1.0 + pow(exp, 0.0) * radius pass.linearInput = linearInput pass.linearOutput = true @@ -105,12 +104,16 @@ class LaserBlur : Filter() { pass.linearInput = true pass.linearOutput = true - pass.radius = 1.0 + Math.pow(exp, i + 1.0) * radius //(1.0 + simplex(0, phase + i)) / 2.0 + pass.radius = 1.0 + pow(exp, i + 1.0) * radius //(1.0 + simplex(0, phase + i)) / 2.0 pass.apply(intermediates[i % 2], intermediates[(i + 1) % 2]) } - pass.radius = 1.0 + Math.pow(exp, (passes) * 1.0) * radius + pass.radius = 1.0 + pow(exp, (passes) * 1.0) * radius pass.linearInput = true pass.linearOutput = linearOutput pass.apply(intermediates[(passes + 1) % 2], target[0]) } +} + +private fun pow(a: Double, x: Double): Double { + return a.pow(x) } \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/blur/MipBloom.kt b/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt similarity index 88% rename from orx-fx/src/main/kotlin/blur/MipBloom.kt rename to orx-fx/src/commonMain/kotlin/blur/MipBloom.kt index b25231f7..caf6d56b 100644 --- a/orx-fx/src/main/kotlin/blur/MipBloom.kt +++ b/orx-fx/src/commonMain/kotlin/blur/MipBloom.kt @@ -2,7 +2,10 @@ package org.openrndr.extra.fx.blur import org.openrndr.color.ColorRGBa import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_bloom_combine +import org.openrndr.extra.fx.fx_bloom_downscale +import org.openrndr.extra.fx.fx_bloom_upscale +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.BooleanParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @@ -10,9 +13,9 @@ import org.openrndr.extra.parameters.IntParameter import org.openrndr.filter.color.delinearize import org.openrndr.filter.color.linearize -class BloomDownscale : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-downscale.frag"))) +class BloomDownscale : Filter(mppFilterShader(fx_bloom_downscale,"bloom-downscale")) -class BloomUpscale : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-upscale.frag"))) { +class BloomUpscale : Filter(mppFilterShader(fx_bloom_upscale, "bloom-upscale")) { var gain: Double by parameters var shape: Double by parameters var noiseSeed: Double by parameters @@ -26,7 +29,7 @@ class BloomUpscale : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-up } } -class BloomCombine : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-combine.frag"))) { +class BloomCombine : Filter(mppFilterShader(fx_bloom_combine, "bloom-combine")) { var gain: Double by parameters var bias: ColorRGBa by parameters @@ -37,7 +40,7 @@ class BloomCombine : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-co } @Description("MipBloom") -open class MipBloom(val blur: T) : Filter(filterShaderFromUrl(filterFragmentUrl("blur/bloom-combine.frag"))) { +open class MipBloom(val blur: T) : Filter(mppFilterShader(fx_bloom_combine, "bloom-combine")) { var passes = 6 @DoubleParameter("shape", 0.0, 4.0) @@ -154,7 +157,6 @@ class GaussianBloom : MipBloom(blur = GaussianBlur()) { @DoubleParameter("kernel sigma", 0.0, 25.0) var sigma: Double = 1.0 - override fun apply(source: Array, target: Array) { blur.window = window blur.sigma = sigma diff --git a/orx-fx/src/main/kotlin/blur/ZoomBlur.kt b/orx-fx/src/commonMain/kotlin/blur/ZoomBlur.kt similarity index 76% rename from orx-fx/src/main/kotlin/blur/ZoomBlur.kt rename to orx-fx/src/commonMain/kotlin/blur/ZoomBlur.kt index e8753aaa..2bb7bed4 100644 --- a/orx-fx/src/main/kotlin/blur/ZoomBlur.kt +++ b/orx-fx/src/commonMain/kotlin/blur/ZoomBlur.kt @@ -1,13 +1,14 @@ package org.openrndr.extra.fx.blur import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_zoom_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.math.Vector2 @Description("Zoom Blur") -class ZoomBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/zoom-blur.frag"))) { +class ZoomBlur : Filter(mppFilterShader(fx_zoom_blur, "zoom-blur")) { var center: Vector2 by parameters @DoubleParameter("strength", 0.0, 1.0) @@ -28,7 +29,8 @@ class ZoomBlur : Filter(filterShaderFromUrl(filterFragmentUrl("blur/zoom-blur.fr } if (intermediate == null) { - intermediate = colorBuffer(target[0].width, target[0].height, target[0].contentScale, target[0].format, target[0].type) + intermediate = + colorBuffer(target[0].width, target[0].height, target[0].contentScale, target[0].format, target[0].type) } intermediate?.let { diff --git a/orx-fx/src/main/kotlin/color/ChromaticAberration.kt b/orx-fx/src/commonMain/kotlin/color/ChromaticAberration.kt similarity index 85% rename from orx-fx/src/main/kotlin/color/ChromaticAberration.kt rename to orx-fx/src/commonMain/kotlin/color/ChromaticAberration.kt index 556bbb01..a92bda46 100644 --- a/orx-fx/src/main/kotlin/color/ChromaticAberration.kt +++ b/orx-fx/src/commonMain/kotlin/color/ChromaticAberration.kt @@ -1,14 +1,14 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_chromatic_aberration +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.math.Vector2 -import org.openrndr.resourceUrl @Description("Chromatic Aberration") -class ChromaticAberration : Filter(filterShaderFromUrl(filterFragmentUrl("color/chromatic-aberration.frag"))){ +class ChromaticAberration : Filter(mppFilterShader(fx_chromatic_aberration, "chromatic-aberration")) { /** * aberration factor, default value is 8.0 */ diff --git a/orx-fx/src/main/kotlin/color/ColorCorrection.kt b/orx-fx/src/commonMain/kotlin/color/ColorCorrection.kt similarity index 85% rename from orx-fx/src/main/kotlin/color/ColorCorrection.kt rename to orx-fx/src/commonMain/kotlin/color/ColorCorrection.kt index e2eff8ab..1abdf020 100644 --- a/orx-fx/src/main/kotlin/color/ColorCorrection.kt +++ b/orx-fx/src/commonMain/kotlin/color/ColorCorrection.kt @@ -1,13 +1,14 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_color_correction +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.BooleanParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Color correction") -class ColorCorrection : Filter(filterShaderFromUrl(filterFragmentUrl("color/color-correction.frag"))) { +class ColorCorrection : Filter(mppFilterShader(fx_color_correction, "color-correction")) { @DoubleParameter("brightness", -1.0, 1.0, order = 0) var brightness: Double by parameters diff --git a/orx-fx/src/main/kotlin/color/ColorLookup.kt b/orx-fx/src/commonMain/kotlin/color/ColorLookup.kt similarity index 77% rename from orx-fx/src/main/kotlin/color/ColorLookup.kt rename to orx-fx/src/commonMain/kotlin/color/ColorLookup.kt index 24b36d69..9473203a 100644 --- a/orx-fx/src/main/kotlin/color/ColorLookup.kt +++ b/orx-fx/src/commonMain/kotlin/color/ColorLookup.kt @@ -1,9 +1,10 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_color_lookup +import org.openrndr.extra.fx.mppFilterShader -class ColorLookup(lookup: ColorBuffer) : Filter(filterShaderFromUrl(filterFragmentUrl("color/color-lookup.frag"))) { +class ColorLookup(lookup: ColorBuffer) : Filter(mppFilterShader(fx_color_lookup, "color-lookup")) { /** a color look-up texture */ var lookup: ColorBuffer by parameters diff --git a/orx-fx/src/main/kotlin/color/ColorMix.kt b/orx-fx/src/commonMain/kotlin/color/ColorMix.kt similarity index 55% rename from orx-fx/src/main/kotlin/color/ColorMix.kt rename to orx-fx/src/commonMain/kotlin/color/ColorMix.kt index 3a7c7cd6..1704cf53 100644 --- a/orx-fx/src/main/kotlin/color/ColorMix.kt +++ b/orx-fx/src/commonMain/kotlin/color/ColorMix.kt @@ -2,20 +2,20 @@ package org.openrndr.extra.fx.color 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.fx.fx_color_mix +import org.openrndr.extra.fx.fx_color_tint +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description -class ColorMix : Filter(filterShaderFromUrl(filterFragmentUrl("color/color-mix.frag"))) +class ColorMix : Filter(mppFilterShader(fx_color_mix, "color-mix")) @Description("Tint") -class ColorTint : Filter(filterShaderFromUrl(filterFragmentUrl("color/color-tint.frag"))) { +class ColorTint : Filter(mppFilterShader(fx_color_tint, "color-tint")) { @ColorParameter("tint") var tint: ColorRGBa by parameters init { tint = ColorRGBa.PINK } - } diff --git a/orx-fx/src/commonMain/kotlin/color/Colorspaces.kt b/orx-fx/src/commonMain/kotlin/color/Colorspaces.kt new file mode 100644 index 00000000..65318c49 --- /dev/null +++ b/orx-fx/src/commonMain/kotlin/color/Colorspaces.kt @@ -0,0 +1,9 @@ +package org.openrndr.extra.fx.color + +import org.openrndr.draw.Filter +import org.openrndr.extra.fx.fx_rgb_to_ycbcr +import org.openrndr.extra.fx.fx_ycbcr_to_rgb +import org.openrndr.extra.fx.mppFilterShader + +class RgbToYCbcr : Filter(mppFilterShader(fx_rgb_to_ycbcr, "rgb-to-ycbcr")) +class YcbcrToRgb : Filter(mppFilterShader(fx_ycbcr_to_rgb, "ycbcr_to_rgb")) \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/color/LumaMap.kt b/orx-fx/src/commonMain/kotlin/color/LumaMap.kt similarity index 81% rename from orx-fx/src/main/kotlin/color/LumaMap.kt rename to orx-fx/src/commonMain/kotlin/color/LumaMap.kt index 64365475..6c4d8b1e 100644 --- a/orx-fx/src/main/kotlin/color/LumaMap.kt +++ b/orx-fx/src/commonMain/kotlin/color/LumaMap.kt @@ -2,14 +2,14 @@ package org.openrndr.extra.fx.color 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.fx.fx_luma_map +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Luma map ") -class LumaMap : Filter(filterShaderFromUrl(filterFragmentUrl("color/luma-map.frag"))) { +class LumaMap : Filter(mppFilterShader(fx_luma_map, "luma-map")) { @ColorParameter("foreground color") var foreground: ColorRGBa by parameters diff --git a/orx-fx/src/main/kotlin/color/LumaOpacity.kt b/orx-fx/src/commonMain/kotlin/color/LumaOpacity.kt similarity index 80% rename from orx-fx/src/main/kotlin/color/LumaOpacity.kt rename to orx-fx/src/commonMain/kotlin/color/LumaOpacity.kt index 06376f19..285ca00f 100644 --- a/orx-fx/src/main/kotlin/color/LumaOpacity.kt +++ b/orx-fx/src/commonMain/kotlin/color/LumaOpacity.kt @@ -1,13 +1,13 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_luma_opacity +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Luma map ") -class LumaOpacity : Filter(filterShaderFromUrl(filterFragmentUrl("color/luma-opacity.frag"))) { +class LumaOpacity : Filter(mppFilterShader(fx_luma_opacity, "luma-opacity")) { @DoubleParameter("foreground luma",0.0, 1.0) var foregroundLuma: Double by parameters diff --git a/orx-fx/src/main/kotlin/color/LumaThreshold.kt b/orx-fx/src/commonMain/kotlin/color/LumaThreshold.kt similarity index 82% rename from orx-fx/src/main/kotlin/color/LumaThreshold.kt rename to orx-fx/src/commonMain/kotlin/color/LumaThreshold.kt index 5399788a..6f83c677 100644 --- a/orx-fx/src/main/kotlin/color/LumaThreshold.kt +++ b/orx-fx/src/commonMain/kotlin/color/LumaThreshold.kt @@ -2,14 +2,14 @@ package org.openrndr.extra.fx.color 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.fx.fx_luma_threshold +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Luma threshold ") -class LumaThreshold : Filter(filterShaderFromUrl(filterFragmentUrl("color/luma-threshold.frag"))) { +class LumaThreshold : Filter(mppFilterShader(fx_luma_threshold, "luma-threshold")) { @DoubleParameter("threshold value", 0.0, 1.0) var threshold: Double by parameters diff --git a/orx-fx/src/main/kotlin/color/Pal.kt b/orx-fx/src/commonMain/kotlin/color/Pal.kt similarity index 79% rename from orx-fx/src/main/kotlin/color/Pal.kt rename to orx-fx/src/commonMain/kotlin/color/Pal.kt index df44526a..e44c3089 100644 --- a/orx-fx/src/main/kotlin/color/Pal.kt +++ b/orx-fx/src/commonMain/kotlin/color/Pal.kt @@ -1,13 +1,13 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_pal +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Pal TV Effect") -class Pal : Filter(filterShaderFromUrl(filterFragmentUrl("color/pal.frag"))) { +class Pal : Filter(mppFilterShader(fx_pal,"pal")) { @DoubleParameter("amount", 0.0, 1.0) var amount: Double by parameters @DoubleParameter("pixelation", 0.0, 1.0) diff --git a/orx-fx/src/main/kotlin/color/Sepia.kt b/orx-fx/src/commonMain/kotlin/color/Sepia.kt similarity index 64% rename from orx-fx/src/main/kotlin/color/Sepia.kt rename to orx-fx/src/commonMain/kotlin/color/Sepia.kt index 066bb746..413e2fe8 100644 --- a/orx-fx/src/main/kotlin/color/Sepia.kt +++ b/orx-fx/src/commonMain/kotlin/color/Sepia.kt @@ -1,13 +1,13 @@ package org.openrndr.extra.fx.color import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_sepia +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Sepia") -class Sepia : Filter(filterShaderFromUrl(filterFragmentUrl("color/sepia.frag"))) { +class Sepia : Filter(mppFilterShader(fx_sepia, "sepia")) { @DoubleParameter("amount", 0.0, 1.0) var amount: Double by parameters diff --git a/orx-fx/src/main/kotlin/color/SetBackground.kt b/orx-fx/src/commonMain/kotlin/color/SetBackground.kt similarity index 74% rename from orx-fx/src/main/kotlin/color/SetBackground.kt rename to orx-fx/src/commonMain/kotlin/color/SetBackground.kt index 27f634e3..9ea7e449 100644 --- a/orx-fx/src/main/kotlin/color/SetBackground.kt +++ b/orx-fx/src/commonMain/kotlin/color/SetBackground.kt @@ -2,15 +2,14 @@ package org.openrndr.extra.fx.color 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.fx.fx_set_background +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Set background") -class SetBackground : Filter(filterShaderFromUrl(filterFragmentUrl("color/set-background.frag"))) { - +class SetBackground : Filter(mppFilterShader(fx_set_background, "set-background")) { @ColorParameter("background color") var background: ColorRGBa by parameters diff --git a/orx-fx/src/main/kotlin/color/SubtractConstant.kt b/orx-fx/src/commonMain/kotlin/color/SubtractConstant.kt similarity index 52% rename from orx-fx/src/main/kotlin/color/SubtractConstant.kt rename to orx-fx/src/commonMain/kotlin/color/SubtractConstant.kt index 19f3db99..02af157a 100644 --- a/orx-fx/src/main/kotlin/color/SubtractConstant.kt +++ b/orx-fx/src/commonMain/kotlin/color/SubtractConstant.kt @@ -2,10 +2,10 @@ package org.openrndr.extra.fx.color 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.fx.fx_subtract_constant +import org.openrndr.extra.fx.mppFilterShader -class SubtractConstant : Filter(filterShaderFromUrl(filterFragmentUrl("color/subtract-constant.frag"))) { +class SubtractConstant : Filter(mppFilterShader(fx_subtract_constant, "subtract-constant")) { var constant: ColorRGBa by parameters init { diff --git a/orx-fx/src/main/kotlin/distort/BlockRepeat.kt b/orx-fx/src/commonMain/kotlin/distort/BlockRepeat.kt similarity index 86% rename from orx-fx/src/main/kotlin/distort/BlockRepeat.kt rename to orx-fx/src/commonMain/kotlin/distort/BlockRepeat.kt index 773338fa..b9fc9066 100644 --- a/orx-fx/src/main/kotlin/distort/BlockRepeat.kt +++ b/orx-fx/src/commonMain/kotlin/distort/BlockRepeat.kt @@ -1,13 +1,13 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_block_repeat +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Block repeat") -class BlockRepeat : Filter(filterShaderFromUrl(filterFragmentUrl("distort/block-repeat.frag"))) { +class BlockRepeat : Filter(mppFilterShader(fx_block_repeat, "block-repeat")) { @DoubleParameter("block width", 0.0, 1.0, order = 0) var blockWidth: Double by parameters diff --git a/orx-fx/src/main/kotlin/distort/DisplaceBlend.kt b/orx-fx/src/commonMain/kotlin/distort/DisplaceBlend.kt similarity index 89% rename from orx-fx/src/main/kotlin/distort/DisplaceBlend.kt rename to orx-fx/src/commonMain/kotlin/distort/DisplaceBlend.kt index a80fbaa3..af62a319 100644 --- a/orx-fx/src/main/kotlin/distort/DisplaceBlend.kt +++ b/orx-fx/src/commonMain/kotlin/distort/DisplaceBlend.kt @@ -1,13 +1,14 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_displace_blend +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.math.Vector3 -@Description("Perturb") -class DisplaceBlend : Filter(filterShaderFromUrl(filterFragmentUrl("distort/displace-blend.frag"))) { +@Description("Displace blend") +class DisplaceBlend : Filter(mppFilterShader(fx_displace_blend, "displace-blend")) { var seed: Vector3 by parameters @DoubleParameter("offset", -1.0, 1.0) diff --git a/orx-fx/src/main/kotlin/distort/Fisheye.kt b/orx-fx/src/commonMain/kotlin/distort/Fisheye.kt similarity index 84% rename from orx-fx/src/main/kotlin/distort/Fisheye.kt rename to orx-fx/src/commonMain/kotlin/distort/Fisheye.kt index 4f15e909..4da528ac 100644 --- a/orx-fx/src/main/kotlin/distort/Fisheye.kt +++ b/orx-fx/src/commonMain/kotlin/distort/Fisheye.kt @@ -1,25 +1,24 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_fisheye +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Fisheye") -class Fisheye : Filter(filterShaderFromUrl(filterFragmentUrl("distort/fisheye.frag"))) { +class Fisheye : Filter(mppFilterShader(fx_fisheye, "fisheye")) { @DoubleParameter("strength", -1.0, 1.0, order = 0) var strength: Double by parameters @DoubleParameter("scale", 0.0, 2.0, order = 0) var scale: Double by parameters - @DoubleParameter("feather", 0.0, 100.0, order = 1) var feather: Double by parameters @DoubleParameter("rotation", -180.0, 180.0, order = 1) - var rotation : Double by parameters - + var rotation: Double by parameters init { strength = 0.1 @@ -35,6 +34,5 @@ class Fisheye : Filter(filterShaderFromUrl(filterFragmentUrl("distort/fisheye.fr source[0].filter(MinifyingFilter.LINEAR_MIPMAP_LINEAR, MagnifyingFilter.LINEAR) } super.apply(source, target) - } } diff --git a/orx-fx/src/main/kotlin/distort/FluidDistort.kt b/orx-fx/src/commonMain/kotlin/distort/FluidDistort.kt similarity index 80% rename from orx-fx/src/main/kotlin/distort/FluidDistort.kt rename to orx-fx/src/commonMain/kotlin/distort/FluidDistort.kt index 9f4f5295..70e91ec9 100644 --- a/orx-fx/src/main/kotlin/distort/FluidDistort.kt +++ b/orx-fx/src/commonMain/kotlin/distort/FluidDistort.kt @@ -2,22 +2,22 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.ColorBuffer import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.draw.createEquivalent +import org.openrndr.draw.isEquivalentTo +import org.openrndr.extra.fx.fx_fluid_distort +import org.openrndr.extra.fx.fx_uvmap +import org.openrndr.extra.fx.mppFilterShader import kotlin.math.cos -private class UVMap: Filter(filterShaderFromUrl(filterFragmentUrl("distort/uvmap.frag"))) { +private class UVMap: Filter( mppFilterShader(fx_uvmap, "uvmap")) -} - -private class FluidDistortFilter : Filter(filterShaderFromUrl(filterFragmentUrl("distort/fluid-distort.frag"))) { +private class FluidDistortFilter : Filter(mppFilterShader(fx_fluid_distort, "fluid-distort")) { var blend : Double by parameters var random: Double by parameters init { blend = 0.0 random = 0.0 } - } class FluidDistort : Filter() { diff --git a/orx-fx/src/main/kotlin/distort/Raycast.kt b/orx-fx/src/commonMain/kotlin/distort/PerspectivePlane.kt similarity index 91% rename from orx-fx/src/main/kotlin/distort/Raycast.kt rename to orx-fx/src/commonMain/kotlin/distort/PerspectivePlane.kt index e2a38ca0..5021d0f8 100644 --- a/orx-fx/src/main/kotlin/distort/Raycast.kt +++ b/orx-fx/src/commonMain/kotlin/distort/PerspectivePlane.kt @@ -1,7 +1,8 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_perspective_plane +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.BooleanParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @@ -9,7 +10,7 @@ import org.openrndr.math.Vector3 import org.openrndr.math.transforms.transform @Description("Perspective plane") -class PerspectivePlane : Filter(filterShaderFromUrl(filterFragmentUrl("distort/perspective-plane.frag"))) { +class PerspectivePlane : Filter(mppFilterShader(fx_perspective_plane, "perspective-plane")) { // @DoubleParameter("camera x", -1.0, 1.0, order = 0) var cameraX: Double = 0.0 // @DoubleParameter("camera y", -1.0, 1.0, order = 1) diff --git a/orx-fx/src/main/kotlin/distort/Perturb.kt b/orx-fx/src/commonMain/kotlin/distort/Perturb.kt similarity index 92% rename from orx-fx/src/main/kotlin/distort/Perturb.kt rename to orx-fx/src/commonMain/kotlin/distort/Perturb.kt index 1a670805..84befc74 100644 --- a/orx-fx/src/main/kotlin/distort/Perturb.kt +++ b/orx-fx/src/commonMain/kotlin/distort/Perturb.kt @@ -1,16 +1,15 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +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 -import org.openrndr.math.Vector4 @Description("Perturb") -class Perturb : Filter(filterShaderFromUrl(filterFragmentUrl("distort/perturb.frag"))) { +class Perturb : Filter(mppFilterShader(fx_perturb, "perturb")) { var seed: Vector3 by parameters - /** * base noise scale, default is Vector3(1.0, 1.0, 1.0) */ diff --git a/orx-fx/src/main/kotlin/distort/StackRepeat.kt b/orx-fx/src/commonMain/kotlin/distort/StackRepeat.kt similarity index 89% rename from orx-fx/src/main/kotlin/distort/StackRepeat.kt rename to orx-fx/src/commonMain/kotlin/distort/StackRepeat.kt index aca11507..4de00a9d 100644 --- a/orx-fx/src/main/kotlin/distort/StackRepeat.kt +++ b/orx-fx/src/commonMain/kotlin/distort/StackRepeat.kt @@ -1,23 +1,26 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_stack_repeat +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @Description("Stack repeat") -class StackRepeat : Filter(filterShaderFromUrl(filterFragmentUrl("distort/stack-repeat.frag"))) { +class StackRepeat : Filter(mppFilterShader(fx_stack_repeat, "stack-repeat")) { @DoubleParameter("zoom", -1.0, 1.0, order = 0) var zoom: Double by parameters @DoubleParameter("x-origin", -1.0, 1.0, order = 1) var xOrigin: Double by parameters + @DoubleParameter("y-origin", -1.0, 1.0, order = 2) var yOrigin: Double by parameters @DoubleParameter("x-offset", -1.0, 1.0, order = 3) var xOffset: Double by parameters + @DoubleParameter("y-offset", -1.0, 1.0, order = 4) var yOffset: Double by parameters @@ -36,6 +39,7 @@ class StackRepeat : Filter(filterShaderFromUrl(filterFragmentUrl("distort/stack- yOrigin = 0.0 rotation = 0.0 } + var bicubicFiltering = true override fun apply(source: Array, target: Array) { if (bicubicFiltering && source.isNotEmpty()) { @@ -44,5 +48,4 @@ class StackRepeat : Filter(filterShaderFromUrl(filterFragmentUrl("distort/stack- } super.apply(source, target) } - } diff --git a/orx-fx/src/main/kotlin/distort/StretchWaves.kt b/orx-fx/src/commonMain/kotlin/distort/StretchWaves.kt similarity index 86% rename from orx-fx/src/main/kotlin/distort/StretchWaves.kt rename to orx-fx/src/commonMain/kotlin/distort/StretchWaves.kt index 20e31e31..9fdc100f 100644 --- a/orx-fx/src/main/kotlin/distort/StretchWaves.kt +++ b/orx-fx/src/commonMain/kotlin/distort/StretchWaves.kt @@ -1,12 +1,13 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_stretch_waves +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Stretch waves") -class StretchWaves : Filter(filterShaderFromUrl(filterFragmentUrl("distort/stretch-waves.frag"))) { +class StretchWaves : Filter(mppFilterShader(fx_stretch_waves, "stretch-waves")) { @DoubleParameter("distortion", -0.0,1.0, 1) var distortion: Double by parameters diff --git a/orx-fx/src/main/kotlin/distort/TapeNoise.kt b/orx-fx/src/commonMain/kotlin/distort/TapeNoise.kt similarity index 88% rename from orx-fx/src/main/kotlin/distort/TapeNoise.kt rename to orx-fx/src/commonMain/kotlin/distort/TapeNoise.kt index 41093045..c34ac3cc 100644 --- a/orx-fx/src/main/kotlin/distort/TapeNoise.kt +++ b/orx-fx/src/commonMain/kotlin/distort/TapeNoise.kt @@ -1,18 +1,16 @@ 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.fx.fx_tape_noise +import org.openrndr.extra.fx.mppFilterShader 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("Tape noise") -class TapeNoise : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tape-noise.frag"))) { +class TapeNoise : Filter(mppFilterShader(fx_tape_noise, "tape-noise")) { var time: Double by parameters @DoubleParameter("gain", 0.0, 1.0) @@ -38,7 +36,6 @@ class TapeNoise : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tape-noi @DoubleParameter("deform frequency", 0.0, 1.0) var deformFrequency: Double by parameters - @ColorParameter("tint") var tint: ColorRGBa by parameters @@ -54,6 +51,5 @@ class TapeNoise : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tape-noi gapFrequency = 10.0 gapLow = -1.0 gapHigh = -0.99 - } } \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/distort/Tiles.kt b/orx-fx/src/commonMain/kotlin/distort/Tiles.kt similarity index 87% rename from orx-fx/src/main/kotlin/distort/Tiles.kt rename to orx-fx/src/commonMain/kotlin/distort/Tiles.kt index c4f18e60..17297343 100644 --- a/orx-fx/src/main/kotlin/distort/Tiles.kt +++ b/orx-fx/src/commonMain/kotlin/distort/Tiles.kt @@ -1,14 +1,14 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_tiles +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @Description("Tiles") -class Tiles : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tiles.frag"))) { - +class Tiles : Filter(mppFilterShader(fx_tiles, "tiles")) { @DoubleParameter("rotation", -180.0, 180.0, order = 2) var rotation: Double by parameters @@ -18,8 +18,6 @@ class Tiles : Filter(filterShaderFromUrl(filterFragmentUrl("distort/tiles.frag") @IntParameter("y segments", 0, 256, order = 0) var ySegments: Int by parameters - - init { rotation = 0.0 xSegments = 32 diff --git a/orx-fx/src/main/kotlin/distort/VideoGlitch.kt b/orx-fx/src/commonMain/kotlin/distort/VideoGlitch.kt similarity index 88% rename from orx-fx/src/main/kotlin/distort/VideoGlitch.kt rename to orx-fx/src/commonMain/kotlin/distort/VideoGlitch.kt index 9f869411..dbf635e1 100644 --- a/orx-fx/src/main/kotlin/distort/VideoGlitch.kt +++ b/orx-fx/src/commonMain/kotlin/distort/VideoGlitch.kt @@ -1,14 +1,14 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_video_glitch +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.BooleanParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Video glitch") -class VideoGlitch : Filter(filterShaderFromUrl(filterFragmentUrl("distort/video-glitch.frag"))) { +class VideoGlitch : Filter(mppFilterShader(fx_video_glitch, "video-glitch")) { var time: Double by parameters @DoubleParameter("amplitude", 0.0, 10.0) diff --git a/orx-fx/src/main/kotlin/distort/Wave.kt b/orx-fx/src/commonMain/kotlin/distort/Wave.kt similarity index 86% rename from orx-fx/src/main/kotlin/distort/Wave.kt rename to orx-fx/src/commonMain/kotlin/distort/Wave.kt index 56febc32..6ec60932 100644 --- a/orx-fx/src/main/kotlin/distort/Wave.kt +++ b/orx-fx/src/commonMain/kotlin/distort/Wave.kt @@ -1,13 +1,15 @@ package org.openrndr.extra.fx.distort import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_horizontal_wave +import org.openrndr.extra.fx.fx_vertical_wave +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter @Description("Horizontal wave") -class HorizontalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/horizontal-wave.frag"))) { +class HorizontalWave : Filter(mppFilterShader(fx_horizontal_wave, "horizontal-wave")) { @DoubleParameter("frequency", 0.0, 64.0, order = 1) var frequency: Double by parameters @@ -20,7 +22,6 @@ class HorizontalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/hor @IntParameter("segments", 0, 256, order = 3) var segments: Int by parameters - init { frequency = 1.0 amplitude = 0.1 @@ -39,7 +40,7 @@ class HorizontalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/hor } @Description("Vertical wave") -class VerticalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/vertical-wave.frag"))) { +class VerticalWave : Filter(mppFilterShader(fx_vertical_wave, "vertical-wave")) { @DoubleParameter("frequency", 0.0, 64.0, order = 1) var frequency: Double by parameters @@ -52,7 +53,6 @@ class VerticalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/verti @IntParameter("segments", 0, 256, order = 3) var segments: Int by parameters - init { frequency = 1.0 amplitude = 0.1 @@ -60,6 +60,7 @@ class VerticalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/verti segments = 0 } var bicubicFiltering = true + override fun apply(source: Array, target: Array) { if (bicubicFiltering && source.isNotEmpty()) { source[0].generateMipmaps() @@ -67,5 +68,4 @@ class VerticalWave : Filter(filterShaderFromUrl(filterFragmentUrl("distort/verti } super.apply(source, target) } - } \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/dither/ADither.kt b/orx-fx/src/commonMain/kotlin/dither/ADither.kt similarity index 68% rename from orx-fx/src/main/kotlin/dither/ADither.kt rename to orx-fx/src/commonMain/kotlin/dither/ADither.kt index 0215c024..48286784 100644 --- a/orx-fx/src/main/kotlin/dither/ADither.kt +++ b/orx-fx/src/commonMain/kotlin/dither/ADither.kt @@ -1,13 +1,13 @@ package org.openrndr.extra.fx.dither import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_a_dither +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.IntParameter @Description("ADither") -class ADither: Filter(filterShaderFromUrl(filterFragmentUrl("dither/a-dither.frag"))) { +class ADither: Filter(mppFilterShader(fx_a_dither, "a-dither")) { @IntParameter("pattern index", 0, 3) var pattern: Int by parameters diff --git a/orx-fx/src/main/kotlin/dither/CMYKHalftone.kt b/orx-fx/src/commonMain/kotlin/dither/CMYKHalftone.kt similarity index 74% rename from orx-fx/src/main/kotlin/dither/CMYKHalftone.kt rename to orx-fx/src/commonMain/kotlin/dither/CMYKHalftone.kt index 3368551d..929940cc 100644 --- a/orx-fx/src/main/kotlin/dither/CMYKHalftone.kt +++ b/orx-fx/src/commonMain/kotlin/dither/CMYKHalftone.kt @@ -1,21 +1,19 @@ package org.openrndr.extra.fx.dither import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_cmyk_halftone +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("CMYK Halftone") -class CMYKHalftone: Filter(filterShaderFromUrl(filterFragmentUrl("dither/cmyk-halftone.frag"))) { - +class CMYKHalftone: Filter(mppFilterShader(fx_cmyk_halftone, "cmyk-halftone")) { @DoubleParameter("scale", 1.0, 30.0, precision = 4) var scale: Double by parameters @DoubleParameter("dotSize", 1.0, 3.0, precision = 4) var dotSize: Double by parameters - @DoubleParameter("rotation", -180.0, 180.0) var rotation: Double by parameters diff --git a/orx-fx/src/main/kotlin/dither/Crosshatch.kt b/orx-fx/src/commonMain/kotlin/dither/Crosshatch.kt similarity index 76% rename from orx-fx/src/main/kotlin/dither/Crosshatch.kt rename to orx-fx/src/commonMain/kotlin/dither/Crosshatch.kt index 57efb4e7..b8aeb027 100644 --- a/orx-fx/src/main/kotlin/dither/Crosshatch.kt +++ b/orx-fx/src/commonMain/kotlin/dither/Crosshatch.kt @@ -1,14 +1,13 @@ package org.openrndr.extra.fx.dither import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_crosshatch +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter - @Description("Crosshatch") -class Crosshatch: Filter(filterShaderFromUrl(filterFragmentUrl("dither/crosshatch.frag"))) { +class Crosshatch : Filter(mppFilterShader(fx_crosshatch, "crosshatch")) { @DoubleParameter("threshold 1", 0.0, 1.0) var t1: Double by parameters diff --git a/orx-fx/src/main/kotlin/edges/Contour.kt b/orx-fx/src/commonMain/kotlin/edges/Contour.kt similarity index 80% rename from orx-fx/src/main/kotlin/edges/Contour.kt rename to orx-fx/src/commonMain/kotlin/edges/Contour.kt index 53a65d6c..a0ef1491 100644 --- a/orx-fx/src/main/kotlin/edges/Contour.kt +++ b/orx-fx/src/commonMain/kotlin/edges/Contour.kt @@ -1,19 +1,18 @@ -package org.openrndr.extra.vfx +package org.openrndr.extra.fx.edges 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.fx.fx_contour +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Contour") -class Contour : Filter(filterShaderFromUrl(filterFragmentUrl("edges/contour.frag"))) { +class Contour : Filter(mppFilterShader(fx_contour, "contour")) { @DoubleParameter("levels", 1.0, 16.0) var levels: Double by parameters - @DoubleParameter("contour width", 0.0, 4.0) var contourWidth: Double by parameters @@ -23,11 +22,9 @@ class Contour : Filter(filterShaderFromUrl(filterFragmentUrl("edges/contour.frag @DoubleParameter("background opacity", 0.0, 1.0) var backgroundOpacity: Double by parameters - @ColorParameter("contour color") var contourColor: ColorRGBa by parameters - init { levels = 6.0 contourWidth = 0.4 diff --git a/orx-fx/src/main/kotlin/edges/EdgesWork.kt b/orx-fx/src/commonMain/kotlin/edges/EdgesWork.kt similarity index 71% rename from orx-fx/src/main/kotlin/edges/EdgesWork.kt rename to orx-fx/src/commonMain/kotlin/edges/EdgesWork.kt index 8b8e1237..1d15eeaf 100644 --- a/orx-fx/src/main/kotlin/edges/EdgesWork.kt +++ b/orx-fx/src/commonMain/kotlin/edges/EdgesWork.kt @@ -2,13 +2,14 @@ package org.openrndr.extra.fx.edges import org.openrndr.draw.* import org.openrndr.extra.fx.ColorBufferDescription -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_edges_work_1 +import org.openrndr.extra.fx.fx_edges_work_2 +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.IntParameter import org.openrndr.math.Vector2 - -internal class EdgesWork1 : Filter(filterShaderFromUrl(filterFragmentUrl("edges/edges-work-1.frag"))) { +internal class EdgesWork1 : Filter(mppFilterShader(fx_edges_work_1, "edges-work-1")) { var delta: Vector2 by parameters init { @@ -17,7 +18,7 @@ internal class EdgesWork1 : Filter(filterShaderFromUrl(filterFragmentUrl("edges/ } @Description("Edges Work") -open class EdgesWork : Filter(filterShaderFromUrl(filterFragmentUrl("edges/edges-work-2.frag"))) { +open class EdgesWork : Filter(mppFilterShader(fx_edges_work_2, "edges-work-2")) { /** * radius, default value is 1.0 */ @@ -36,7 +37,13 @@ open class EdgesWork : Filter(filterShaderFromUrl(filterFragmentUrl("edges/edges } override fun apply(source: Array, target: Array) { - val intermediateDescription = ColorBufferDescription(target[0].width, target[0].height, target[0].contentScale, target[0].format, target[0].type) + val intermediateDescription = ColorBufferDescription( + target[0].width, + target[0].height, + target[0].contentScale, + target[0].format, + target[0].type + ) val intermediate = intermediateCache.getOrPut(intermediateDescription) { colorBuffer(target[0].width, target[0].height, target[0].contentScale, target[0].format, target[0].type) } diff --git a/orx-fx/src/main/kotlin/edges/LumaSobel.kt b/orx-fx/src/commonMain/kotlin/edges/LumaSobel.kt similarity index 72% rename from orx-fx/src/main/kotlin/edges/LumaSobel.kt rename to orx-fx/src/commonMain/kotlin/edges/LumaSobel.kt index 899a2fad..dc7aeab2 100644 --- a/orx-fx/src/main/kotlin/edges/LumaSobel.kt +++ b/orx-fx/src/commonMain/kotlin/edges/LumaSobel.kt @@ -2,15 +2,14 @@ package org.openrndr.extra.fx.edges 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.fx.fx_luma_sobel +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Luma Sobel") -class LumaSobel : Filter(filterShaderFromUrl(filterFragmentUrl("edges/luma-sobel.frag"))) { - +class LumaSobel : Filter(mppFilterShader(fx_luma_sobel, "luma-sobel")) { @ColorParameter("background color") var backgroundColor: ColorRGBa by parameters @@ -18,10 +17,10 @@ class LumaSobel : Filter(filterShaderFromUrl(filterFragmentUrl("edges/luma-sobel var edgeColor: ColorRGBa by parameters @DoubleParameter("background opacity", 0.0, 1.0) - var backgroundOpacity:Double by parameters + var backgroundOpacity: Double by parameters @DoubleParameter("edge opacity", 0.0, 1.0) - var edgeOpacity:Double by parameters + var edgeOpacity: Double by parameters init { backgroundColor = ColorRGBa.BLACK diff --git a/orx-fx/src/main/kotlin/grain/FilmGrain.kt b/orx-fx/src/commonMain/kotlin/grain/FilmGrain.kt similarity index 81% rename from orx-fx/src/main/kotlin/grain/FilmGrain.kt rename to orx-fx/src/commonMain/kotlin/grain/FilmGrain.kt index 0e6ab863..dfc963f4 100644 --- a/orx-fx/src/main/kotlin/grain/FilmGrain.kt +++ b/orx-fx/src/commonMain/kotlin/grain/FilmGrain.kt @@ -1,17 +1,14 @@ import org.openrndr.draw.Filter -import org.openrndr.draw.Shader -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_film_grain +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.BooleanParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter - /** * Film grain filter */ @Description("film grain") -class FilmGrain : Filter(filterShaderFromUrl(filterFragmentUrl("grain/film-grain.frag"))) { - +class FilmGrain : Filter(mppFilterShader(fx_film_grain, "film-grain")) { @BooleanParameter("use color") var useColor: Boolean by parameters @@ -40,5 +37,4 @@ class FilmGrain : Filter(filterShaderFromUrl(filterFragmentUrl("grain/film-grain grainPitch = 1.0 colorLevel = 1.0 } - } \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/patterns/Checkers.kt b/orx-fx/src/commonMain/kotlin/patterns/Checkers.kt similarity index 74% rename from orx-fx/src/main/kotlin/patterns/Checkers.kt rename to orx-fx/src/commonMain/kotlin/patterns/Checkers.kt index 38d53df4..1af933d0 100644 --- a/orx-fx/src/main/kotlin/patterns/Checkers.kt +++ b/orx-fx/src/commonMain/kotlin/patterns/Checkers.kt @@ -2,22 +2,24 @@ package org.openrndr.extra.fx.patterns 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.fx.fx_checkers +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @Description("Checkers pattern") -class Checkers : Filter(filterShaderFromUrl(filterFragmentUrl("patterns/checkers.frag"))) { +class Checkers : Filter(mppFilterShader(fx_checkers, "checkers")) { var background: ColorRGBa by parameters var foreground: ColorRGBa by parameters + @DoubleParameter("size", 0.0, 1.0) var size: Double by parameters + @DoubleParameter("opacity", 0.0, 1.0) var opacity: Double by parameters init { - size = 1.0/64.0 + size = 1.0 / 64.0 opacity = 1.0 foreground = ColorRGBa.WHITE.shade(0.9) background = ColorRGBa.WHITE.shade(0.8) diff --git a/orx-fx/src/main/kotlin/shadow/DropShadow.kt b/orx-fx/src/commonMain/kotlin/shadow/DropShadow.kt similarity index 87% rename from orx-fx/src/main/kotlin/shadow/DropShadow.kt rename to orx-fx/src/commonMain/kotlin/shadow/DropShadow.kt index 4ea4dfe6..11f0ffde 100644 --- a/orx-fx/src/main/kotlin/shadow/DropShadow.kt +++ b/orx-fx/src/commonMain/kotlin/shadow/DropShadow.kt @@ -1,22 +1,22 @@ package org.openrndr.extra.fx.shadow - import org.openrndr.color.ColorRGBa import org.openrndr.draw.* -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_dropshadow_blend +import org.openrndr.extra.fx.fx_dropshadow_blur +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.ColorParameter import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter import org.openrndr.extra.parameters.IntParameter import org.openrndr.math.Vector2 -private class Blend : Filter(filterShaderFromUrl(filterFragmentUrl("shadow/dropshadow-blend.frag"))) { +private class Blend : Filter(mppFilterShader(fx_dropshadow_blend, "dropshadow-blend")) { var shift: Vector2 by parameters } @Description("Drop shadow") -class DropShadow : Filter(filterShaderFromUrl(filterFragmentUrl("shadow/dropshadow-blur.frag"))) { - +class DropShadow : Filter(mppFilterShader(fx_dropshadow_blur, "dropshadow-blur")) { @IntParameter("blur window", 1, 25) var window: Int by parameters var spread: Double by parameters diff --git a/orx-fx/src/main/kotlin/tonemap/Uncharted2Tonemap.kt b/orx-fx/src/commonMain/kotlin/tonemap/Uncharted2Tonemap.kt similarity index 65% rename from orx-fx/src/main/kotlin/tonemap/Uncharted2Tonemap.kt rename to orx-fx/src/commonMain/kotlin/tonemap/Uncharted2Tonemap.kt index 5c7ad0e3..5b3f1cb5 100644 --- a/orx-fx/src/main/kotlin/tonemap/Uncharted2Tonemap.kt +++ b/orx-fx/src/commonMain/kotlin/tonemap/Uncharted2Tonemap.kt @@ -1,8 +1,8 @@ package org.openrndr.extra.fx.tonemap import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl +import org.openrndr.extra.fx.fx_uncharted2_tonemap +import org.openrndr.extra.fx.mppFilterShader import org.openrndr.extra.parameters.Description import org.openrndr.extra.parameters.DoubleParameter @@ -10,8 +10,7 @@ import org.openrndr.extra.parameters.DoubleParameter * Uncharted 2 tonemap filter */ @Description("Uncharted 2 tonemap") -class Uncharted2Tonemap : Filter(filterShaderFromUrl(filterFragmentUrl("tonemap/uncharted2-tonemap.frag"))) { - +class Uncharted2Tonemap : Filter(mppFilterShader(fx_uncharted2_tonemap, "uncharted2-tonemap")) { @DoubleParameter("exposure bias", 0.0, 128.0) var exposureBias:Double by parameters init { diff --git a/orx-fx/src/commonMain/kotlin/transform/FlipVertically.kt b/orx-fx/src/commonMain/kotlin/transform/FlipVertically.kt new file mode 100644 index 00000000..3a2d565f --- /dev/null +++ b/orx-fx/src/commonMain/kotlin/transform/FlipVertically.kt @@ -0,0 +1,10 @@ +package org.openrndr.extra.fx.transform + +import org.openrndr.draw.Filter +import org.openrndr.extra.fx.fx_flip_vertically +import org.openrndr.extra.fx.mppFilterShader + +/** + * Vertically flips in the input image + */ +class FlipVertically : Filter(mppFilterShader(fx_flip_vertically, "flip-vertically")) \ No newline at end of file diff --git a/orx-fx/src/demo/kotlin/DemoBlend01.kt b/orx-fx/src/demo/kotlin/DemoBlend01.kt new file mode 100644 index 00000000..06f1e5eb --- /dev/null +++ b/orx-fx/src/demo/kotlin/DemoBlend01.kt @@ -0,0 +1,31 @@ +package org.openrndr.extra.fx.demo + +import org.openrndr.applicationSynchronous +import org.openrndr.extra.fx.blend.* +fun main() { + applicationSynchronous { + program { + val add = Add() + val colorBurn = ColorBurn() + val colorDodge = ColorDodge() + val darken = Darken() + val destIn = DestinationIn() + val destOut = DestinationOut() + val destAtop = DestinationAtop() + val hardLight = HardLight() + val lighten = Lighten() + val multiply = Multiply() + val multiplyContrast = MultiplyContrast() + val normal = Normal() + val overlay = Overlay() + val passthrough = Passthrough() + val screen = Screen() + val sourceIn = SourceIn() + val sourceAtop = SourceAtop() + val sourceOut = SourceOut() + val subtract = Subtract() + val xor = Xor() + application.exit() + } + } +} \ No newline at end of file diff --git a/orx-fx/src/demo/kotlin/DemoFluidDistort01.kt b/orx-fx/src/demo/kotlin/DemoFluidDistort01.kt index 8c40c24a..0278d784 100644 --- a/orx-fx/src/demo/kotlin/DemoFluidDistort01.kt +++ b/orx-fx/src/demo/kotlin/DemoFluidDistort01.kt @@ -1,5 +1,6 @@ import org.openrndr.application import org.openrndr.draw.colorBuffer +import org.openrndr.draw.createEquivalent import org.openrndr.extensions.SingleScreenshot import org.openrndr.extra.fx.distort.FluidDistort import org.openrndr.extra.fx.patterns.Checkers diff --git a/orx-fx/src/demo/kotlin/DemoLaserBlur01.kt b/orx-fx/src/demo/kotlin/DemoLaserBlur01.kt index 325285d1..ceeffd8c 100644 --- a/orx-fx/src/demo/kotlin/DemoLaserBlur01.kt +++ b/orx-fx/src/demo/kotlin/DemoLaserBlur01.kt @@ -1,64 +1,64 @@ -import org.openrndr.application -import org.openrndr.color.ColorRGBa -import org.openrndr.extensions.SingleScreenshot -import org.openrndr.extra.compositor.compose -import org.openrndr.extra.compositor.draw -import org.openrndr.extra.compositor.layer -import org.openrndr.extra.compositor.post -import org.openrndr.extra.fx.blur.GaussianBloom -import org.openrndr.extra.fx.blur.LaserBlur -import org.openrndr.extra.gui.GUI -import org.openrndr.extra.gui.addTo -import org.openrndr.extra.noise.simplex -import org.openrndr.math.Vector2 -import kotlin.math.absoluteValue - -suspend fun main() = application { - configure { - width = 1280 - height = 720 - } - - program { - if (System.getProperty("takeScreenshot") == "true") { - extend(SingleScreenshot()) { - this.outputFile = System.getProperty("screenshotPath") - } - } - - val gui = GUI() - val c = compose { - layer { - draw { - drawer.fill = null - drawer.strokeWeight = 4.0 - drawer.translate(width/2.0, height/2.0) - drawer.rotate(seconds*45.0 + simplex(0, seconds)*45.0) - drawer.translate(-width/2.0, -height/2.0) - for (y in -1..1) { - for (x in -1..1) { - drawer.stroke = ColorRGBa.RED.toHSVa() - .shiftHue(0.0 + simplex(500+x+y,seconds)*5.0) - .shade(0.5 + 0.5 * simplex(300+x+y,seconds*4.0).absoluteValue) - .toRGBa() - val r = simplex(400+x+y, seconds) * 150.0 + 150.0 - drawer.circle(width / 2.0 + x * 100.0, height / 2.0 + y * 100.0, r) - } - } - } - post(LaserBlur()) { - center = Vector2(simplex(2, seconds*0.1), simplex(100, seconds*0.1)) - aberration = simplex(5, seconds) * 0.01 - radius = simplex(7, seconds) - }.addTo(gui) - post(GaussianBloom()).addTo(gui) - } - } - extend(gui) { - doubleBind = true - } - extend { - c.draw(drawer) - } - } -} \ No newline at end of file +//import org.openrndr.application +//import org.openrndr.color.ColorRGBa +//import org.openrndr.extensions.SingleScreenshot +//import org.openrndr.extra.compositor.compose +//import org.openrndr.extra.compositor.draw +//import org.openrndr.extra.compositor.layer +//import org.openrndr.extra.compositor.post +//import org.openrndr.extra.fx.blur.GaussianBloom +//import org.openrndr.extra.fx.blur.LaserBlur +//import org.openrndr.extra.gui.GUI +//import org.openrndr.extra.gui.addTo +//import org.openrndr.extra.noise.simplex +//import org.openrndr.math.Vector2 +//import kotlin.math.absoluteValue +// +//suspend fun main() = application { +// configure { +// width = 1280 +// height = 720 +// } +// +// program { +// if (System.getProperty("takeScreenshot") == "true") { +// extend(SingleScreenshot()) { +// this.outputFile = System.getProperty("screenshotPath") +// } +// } +// +// val gui = GUI() +// val c = compose { +// layer { +// draw { +// drawer.fill = null +// drawer.strokeWeight = 4.0 +// drawer.translate(width/2.0, height/2.0) +// drawer.rotate(seconds*45.0 + simplex(0, seconds)*45.0) +// drawer.translate(-width/2.0, -height/2.0) +// for (y in -1..1) { +// for (x in -1..1) { +// drawer.stroke = ColorRGBa.RED.toHSVa() +// .shiftHue(0.0 + simplex(500+x+y,seconds)*5.0) +// .shade(0.5 + 0.5 * simplex(300+x+y,seconds*4.0).absoluteValue) +// .toRGBa() +// val r = simplex(400+x+y, seconds) * 150.0 + 150.0 +// drawer.circle(width / 2.0 + x * 100.0, height / 2.0 + y * 100.0, r) +// } +// } +// } +// post(LaserBlur()) { +// center = Vector2(simplex(2, seconds*0.1), simplex(100, seconds*0.1)) +// aberration = simplex(5, seconds) * 0.01 +// radius = simplex(7, seconds) +// }.addTo(gui) +// post(GaussianBloom()).addTo(gui) +// } +// } +// extend(gui) { +// doubleBind = true +// } +// extend { +// c.draw(drawer) +// } +// } +//} \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/blend/BlendFilters.kt b/orx-fx/src/main/kotlin/blend/BlendFilters.kt deleted file mode 100644 index 6545db19..00000000 --- a/orx-fx/src/main/kotlin/blend/BlendFilters.kt +++ /dev/null @@ -1,116 +0,0 @@ -package org.openrndr.extra.fx.blend - -import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl -import org.openrndr.extra.parameters.BooleanParameter - -class ColorBurn : Filter(filterShaderFromUrl(filterFragmentUrl("blend/color-burn.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class ColorDodge : Filter(filterShaderFromUrl(filterFragmentUrl("blend/color-dodge.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Darken : Filter(filterShaderFromUrl(filterFragmentUrl("blend/darken.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class HardLight : Filter(filterShaderFromUrl(filterFragmentUrl("blend/hard-light.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Lighten : Filter(filterShaderFromUrl(filterFragmentUrl("blend/lighten.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Multiply : Filter(filterShaderFromUrl(filterFragmentUrl("blend/multiply.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Normal : Filter(filterShaderFromUrl(filterFragmentUrl("blend/normal.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Overlay : Filter(filterShaderFromUrl(filterFragmentUrl("blend/overlay.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - -class Screen : Filter(filterShaderFromUrl(filterFragmentUrl("blend/screen.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} - - -class SourceIn : Filter(filterShaderFromUrl(filterFragmentUrl("blend/source-in.frag"))) -class SourceOut : Filter(filterShaderFromUrl(filterFragmentUrl("blend/source-out.frag"))) -class SourceAtop : Filter(filterShaderFromUrl(filterFragmentUrl("blend/source-atop.frag"))) -class DestinationIn : Filter(filterShaderFromUrl(filterFragmentUrl("blend/destination-in.frag"))) -class DestinationOut : Filter(filterShaderFromUrl(filterFragmentUrl("blend/destination-out.frag"))) -class DestinationAtop : Filter(filterShaderFromUrl(filterFragmentUrl("blend/destination-atop.frag"))) -class Xor : Filter(filterShaderFromUrl(filterFragmentUrl("blend/xor.frag"))) - -class MultiplyContrast : Filter(filterShaderFromUrl(filterFragmentUrl("blend/multiply-contrast.frag"))) - -class Passthrough : Filter(filterShaderFromUrl(filterFragmentUrl("blend/passthrough.frag"))) -class Add : Filter(filterShaderFromUrl(filterFragmentUrl("blend/add.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} -class Subtract : Filter(filterShaderFromUrl(filterFragmentUrl("blend/subtract.frag"))) { - @BooleanParameter("source clip") - var clip: Boolean by parameters - - init { - clip = false - } -} diff --git a/orx-fx/src/main/kotlin/color/Colorspaces.kt b/orx-fx/src/main/kotlin/color/Colorspaces.kt deleted file mode 100644 index 63de2580..00000000 --- a/orx-fx/src/main/kotlin/color/Colorspaces.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.openrndr.extra.fx.color - -import org.openrndr.draw.Filter -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl - -class RgbToYCbcr : Filter(filterShaderFromUrl(filterFragmentUrl("color/rgb-to-ycbcr.frag"))) -class YcbcrToRgb : Filter(filterShaderFromUrl(filterFragmentUrl("color/ycbcr-to-rgb.frag"))) \ No newline at end of file diff --git a/orx-fx/src/main/kotlin/transform/FlipVertically.kt b/orx-fx/src/main/kotlin/transform/FlipVertically.kt deleted file mode 100644 index 79a1253b..00000000 --- a/orx-fx/src/main/kotlin/transform/FlipVertically.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.openrndr.extra.fx.transform - -import org.openrndr.draw.Filter -import org.openrndr.draw.Shader -import org.openrndr.draw.filterShaderFromUrl -import org.openrndr.extra.fx.filterFragmentUrl - -/** - * Vertically flips in the input image - */ -class FlipVertically : Filter(filterShaderFromUrl(filterFragmentUrl("transform/flip-vertically.frag"))) \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/add.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/add.frag deleted file mode 100644 index a408eda7..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/add.frag +++ /dev/null @@ -1,23 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform bool clip; -out vec4 o_color; - - -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - vec3 na = a.a > 0 ? a.rgb/a.a : vec3(0.0); - vec3 nb = b.a > 0 ? b.rgb/b.a : vec3(0.0); - - vec3 addColor = b.rgb; //mix(vec3(0.0), nb, b.a); - - if (clip) { - o_color = vec4((na + addColor), 1) * a.a; - } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(min(na + nb, vec3(1.0)), 1.0) + (1.0-b.a) * a; - } -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/darken.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/darken.frag deleted file mode 100644 index 5e756edd..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/darken.frag +++ /dev/null @@ -1,26 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform bool clip; - -out vec4 o_color; -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - - vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; - vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; - - vec3 m = vec3( - nb.r <= na.r? nb.r : na.r, - nb.g <= na.g? nb.g : na.g, - nb.b <= na.b? nb.b : na.b); - - if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; - } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; - } -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-atop.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-atop.frag deleted file mode 100644 index 9248ac93..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-atop.frag +++ /dev/null @@ -1,17 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; - -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float lsrc = src.a * (1.0 - dest.a); - float lboth = src.a * dest.a; - - o_color = src * lsrc + dest * 0.0 + dest * lboth; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-in.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-in.frag deleted file mode 100644 index b0b58b61..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-in.frag +++ /dev/null @@ -1,16 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; - -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float lboth = src.a * dest.a; - - o_color = dest * lboth; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-out.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-out.frag deleted file mode 100644 index 8cc1de0b..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/destination-out.frag +++ /dev/null @@ -1,15 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float ldest = dest.a * (1.0 - src.a); - - o_color = dest * ldest; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/lighten.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/lighten.frag deleted file mode 100644 index fe29a7f3..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/lighten.frag +++ /dev/null @@ -1,26 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform bool clip; - -out vec4 o_color; -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - - vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; - vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; - - vec3 m = vec3( - nb.r >= na.r? nb.r : na.r, - nb.g >= na.g? nb.g : na.g, - nb.b >= na.b? nb.b : na.b); - - if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; - } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; - } -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply-contrast.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply-contrast.frag deleted file mode 100644 index 070b1b19..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply-contrast.frag +++ /dev/null @@ -1,32 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - - - -out vec4 o_color; -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - - - - //float ai = dot(vec3(1.0), a.rgb)/3.0; - //float bi = dot(vec3(1.0), b.rgb)/3.0; - - - float ai = max(a.z, max(a.x, a.y)); - float bi = max(b.z, max(b.x, b.y)); - - //vec3 f = bi < 0.5? vec3(0.0) : a.rgb; - -// vec3 f = smoothstep(0.5, 0.9, bi) * a.rgb; - - vec3 f = a.rgb - (1.0-b.rgb)*2.0*b.a; - - o_color.rgb = max(vec3(0.0), f) * (1.0) + b.rgb * (1.0-a.a);; - - o_color.a = 1.0; //min(1.0, a.a + b.a); -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply.frag deleted file mode 100644 index d161a3cb..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/multiply.frag +++ /dev/null @@ -1,28 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -uniform bool clip; - -out vec4 o_color; - -vec3 u(vec4 x) { - return x.a == 0.0? vec3(0.0) : x.rgb / x.a; -} - -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - vec3 na = u(a); - vec3 nb = u(b); - vec3 mulColor = mix(vec3(1.0), nb, b.a); - - if (clip) { - o_color = vec4(a.rgb * mulColor, a.a); - } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(na * nb, 1.0) + (1.0-b.a) * a; - } -} - diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/normal.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/normal.frag deleted file mode 100644 index 869ef901..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/normal.frag +++ /dev/null @@ -1,20 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform bool clip; - -out vec4 o_color; -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - float alpha = min(1,max(0, b.a)); - - if (!clip) { - o_color = a * (1.0-alpha) + b; - o_color.a = clamp(o_color.a, 0.0, 1.0); - } else { - o_color = a * (1.0-alpha) + b * a.a; - } -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/passthrough.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/passthrough.frag deleted file mode 100644 index 45867b2e..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/passthrough.frag +++ /dev/null @@ -1,9 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; - -out vec4 o_color; -void main() { - o_color = texture(tex0, v_texCoord0); -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-atop.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-atop.frag deleted file mode 100644 index dae24d7d..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-atop.frag +++ /dev/null @@ -1,17 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; - -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float ldest = dest.a * (1.0 - src.a); - float lboth = src.a * dest.a; - - o_color = dest * ldest + src * lboth; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-in.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-in.frag deleted file mode 100644 index 297568b8..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-in.frag +++ /dev/null @@ -1,15 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float lboth = src.a * dest.a; - - o_color = src * lboth; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-out.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-out.frag deleted file mode 100644 index dcb793fc..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/source-out.frag +++ /dev/null @@ -1,15 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float lsrc = src.a * (1.0 - dest.a); - - o_color = src * lsrc; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/subtract.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/subtract.frag deleted file mode 100644 index 2c9c3ce6..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/subtract.frag +++ /dev/null @@ -1,20 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform bool clip; - -out vec4 o_color; -void main() { - vec4 a = texture(tex0, v_texCoord0); - vec4 b = texture(tex1, v_texCoord0); - vec3 na = a.a > 0 ? a.rgb/a.a : vec3(0.0); - vec3 nb = b.a > 0 ? b.rgb/b.a : vec3(0.0); - vec3 subColor = b.rgb; - if (clip) { - o_color = vec4(max(na - subColor, vec3(0.0)), 1) * a.a; - } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(max(na - nb, vec3(0.0)), 1.0) + (1.0-b.a) * a; - } -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/xor.frag b/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/xor.frag deleted file mode 100644 index 2fd1e3eb..00000000 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/xor.frag +++ /dev/null @@ -1,16 +0,0 @@ -#version 330 - -in vec2 v_texCoord0; -uniform sampler2D tex0; -uniform sampler2D tex1; - -out vec4 o_color; -void main() { - vec4 src = texture(tex0, v_texCoord0); - vec4 dest = texture(tex1, v_texCoord0); - - float lsrc = src.a * (1.0 - dest.a); - float ldest = dest.a * (1.0 - src.a); - - o_color = src * lsrc + dest * ldest; -} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/antialias/fxaa.frag b/orx-fx/src/shaders/glsl/antialias/fxaa.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/antialias/fxaa.frag rename to orx-fx/src/shaders/glsl/antialias/fxaa.frag index 7b58931f..bf854232 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/antialias/fxaa.frag +++ b/orx-fx/src/shaders/glsl/antialias/fxaa.frag @@ -1,18 +1,13 @@ -#version 330 core - - - -//uniform vec2 u_texelStep; - - uniform float lumaThreshold; uniform float maxSpan; uniform float directionReduceMultiplier; uniform float directionReduceMinimum; uniform sampler2D tex0; + in vec2 v_texCoord0; + out vec4 fragColor; // see FXAA @@ -20,14 +15,10 @@ out vec4 fragColor; // http://iryoku.com/aacourse/downloads/09-FXAA-3.11-in-15-Slides.pdf // http://horde3d.org/wiki/index.php5?title=Shading_Technique_-_FXAA -void main(void) -{ +void main(void) { const int u_showEdges = 0; const int u_fxaaOn = 1; - - - vec2 u_texelStep = 1.0 / textureSize(tex0, 0); vec3 rgbM = min(vec3(1), texture(tex0, v_texCoord0).rgb); @@ -35,7 +26,6 @@ void main(void) if (u_fxaaOn == 0) { fragColor = vec4(rgbM, 1.0); - return; } diff --git a/orx-fx/src/shaders/glsl/blend/add.frag b/orx-fx/src/shaders/glsl/blend/add.frag new file mode 100644 index 00000000..c2a5f43d --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/add.frag @@ -0,0 +1,40 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + vec3 na = a.a > 0 ? a.rgb/a.a : vec3(0.0); + vec3 nb = b.a > 0 ? b.rgb/b.a : vec3(0.0); + + vec3 addColor = b.rgb; + + vec4 result; + if (clip) { + result = vec4((na + addColor), 1) * a.a; + } else { + result = (1.0-a.a) * b + a.a * b.a * vec4(min(na + nb, vec3(1.0)), 1.0) + (1.0-b.a) * a; + } + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-burn.frag b/orx-fx/src/shaders/glsl/blend/color-burn.frag similarity index 56% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-burn.frag rename to orx-fx/src/shaders/glsl/blend/color-burn.frag index 7223d94c..509bb390 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-burn.frag +++ b/orx-fx/src/shaders/glsl/blend/color-burn.frag @@ -1,6 +1,9 @@ -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform sampler2D tex0; uniform sampler2D tex1; uniform bool clip; @@ -9,11 +12,17 @@ float blendColorBurn(float base, float blend) { return (blend==0.0) ? blend : max((1.0 - ((1.0 - base) / blend)), 0.0); } - +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif void main() { + #ifndef OR_GL_TEXTURE2D vec4 a = texture(tex0, v_texCoord0); vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; @@ -24,9 +33,16 @@ void main() { blendColorBurn(na.b, nb.b) ); + vec4 result; if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif } \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-dodge.frag b/orx-fx/src/shaders/glsl/blend/color-dodge.frag similarity index 53% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-dodge.frag rename to orx-fx/src/shaders/glsl/blend/color-dodge.frag index 45f43dba..6effa55d 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/color-dodge.frag +++ b/orx-fx/src/shaders/glsl/blend/color-dodge.frag @@ -1,6 +1,9 @@ -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform sampler2D tex0; uniform sampler2D tex1; uniform bool clip; @@ -9,10 +12,18 @@ float dodge(float base, float blend) { return (blend==1.0)?blend:min(base/(1.0-blend),1.0); } +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif + void main() { + #ifndef OR_GL_TEXTURE2D vec4 a = texture(tex0, v_texCoord0); vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; @@ -23,9 +34,17 @@ void main() { dodge(na.b, nb.b) ); + vec4 result; if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif + } \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/darken.frag b/orx-fx/src/shaders/glsl/blend/darken.frag new file mode 100644 index 00000000..b2b6e8d4 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/darken.frag @@ -0,0 +1,43 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; + vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; + + vec3 m = vec3( + nb.r <= na.r? nb.r : na.r, + nb.g <= na.g? nb.g : na.g, + nb.b <= na.b? nb.b : na.b); + + vec4 result; + if (clip) { + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + } else { + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/destination-atop.frag b/orx-fx/src/shaders/glsl/blend/destination-atop.frag new file mode 100644 index 00000000..d727961d --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/destination-atop.frag @@ -0,0 +1,32 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float lsrc = src.a * (1.0 - dest.a); + float lboth = src.a * dest.a; + + vec4 result = src * lsrc + dest * 0.0 + dest * lboth; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/destination-in.frag b/orx-fx/src/shaders/glsl/blend/destination-in.frag new file mode 100644 index 00000000..6b0a58c6 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/destination-in.frag @@ -0,0 +1,30 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float lboth = src.a * dest.a; + vec4 result = dest * lboth; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/destination-out.frag b/orx-fx/src/shaders/glsl/blend/destination-out.frag new file mode 100644 index 00000000..ab5a6d3e --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/destination-out.frag @@ -0,0 +1,31 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float ldest = dest.a * (1.0 - src.a); + + vec4 result = dest * ldest; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/hard-light.frag b/orx-fx/src/shaders/glsl/blend/hard-light.frag similarity index 55% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/hard-light.frag rename to orx-fx/src/shaders/glsl/blend/hard-light.frag index bc5fdb65..a45a82c7 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/hard-light.frag +++ b/orx-fx/src/shaders/glsl/blend/hard-light.frag @@ -1,13 +1,25 @@ -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform sampler2D tex0; uniform sampler2D tex1; uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif + void main() { + #ifndef OR_GL_TEXTURE2D vec4 a = texture(tex0, v_texCoord0); vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; @@ -18,9 +30,15 @@ void main() { nb.b <= 0.5? 2*na.b * nb.b : 1.0 - 2.0*(1.0 - na.b)*(1.0 - nb.b) ); + vec4 result; if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; } + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif } \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/lighten.frag b/orx-fx/src/shaders/glsl/blend/lighten.frag new file mode 100644 index 00000000..5484d5b1 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/lighten.frag @@ -0,0 +1,44 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; + vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; + + vec3 m = vec3( + nb.r >= na.r? nb.r : na.r, + nb.g >= na.g? nb.g : na.g, + nb.b >= na.b? nb.b : na.b); + + vec4 result; + if (clip) { + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + } else { + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/multiply-contrast.frag b/orx-fx/src/shaders/glsl/blend/multiply-contrast.frag new file mode 100644 index 00000000..a0b1e12e --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/multiply-contrast.frag @@ -0,0 +1,37 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + float ai = max(a.z, max(a.x, a.y)); + float bi = max(b.z, max(b.x, b.y)); + + vec3 f = a.rgb - (1.0-b.rgb)*2.0*b.a; + + vec4 result; + result.rgb = max(vec3(0.0), f) * (1.0) + b.rgb * (1.0-a.a); + result.a = 1.0; + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/multiply.frag b/orx-fx/src/shaders/glsl/blend/multiply.frag new file mode 100644 index 00000000..0c25658f --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/multiply.frag @@ -0,0 +1,46 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +vec3 u(vec4 x) { + return x.a == 0.0? vec3(0.0) : x.rgb / x.a; +} + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + vec3 na = u(a); + vec3 nb = u(b); + vec3 mulColor = mix(vec3(1.0), nb, b.a); + + vec4 result; + if (clip) { + result = vec4(a.rgb * mulColor, a.a); + } else { + result = (1.0-a.a) * b + a.a * b.a * vec4(na * nb, 1.0) + (1.0-b.a) * a; + } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} + diff --git a/orx-fx/src/shaders/glsl/blend/normal.frag b/orx-fx/src/shaders/glsl/blend/normal.frag new file mode 100644 index 00000000..199d2ff5 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/normal.frag @@ -0,0 +1,39 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + float alpha = min(1,max(0, b.a)); + + vec4 result; + if (!clip) { + result = a * (1.0-alpha) + b; + result.a = clamp(o_color.a, 0.0, 1.0); + } else { + result = a * (1.0-alpha) + b * a.a; + } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/overlay.frag b/orx-fx/src/shaders/glsl/blend/overlay.frag similarity index 62% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/overlay.frag rename to orx-fx/src/shaders/glsl/blend/overlay.frag index 27cac3c5..ece28e0e 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/overlay.frag +++ b/orx-fx/src/shaders/glsl/blend/overlay.frag @@ -1,12 +1,16 @@ - -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform sampler2D tex0; uniform sampler2D tex1; uniform bool clip; +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif vec3 demul(vec4 c) { if (c.a == 0) { @@ -17,8 +21,13 @@ vec3 demul(vec4 c) { } void main() { + #ifndef OR_GL_TEXTURE2D vec4 a = texture(tex0, v_texCoord0); vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif vec3 na = demul(a); vec3 nb = demul(b); @@ -29,10 +38,18 @@ void main() { na.b <= 0.5? 2.0 * na.b * nb.b : (1.0 - 2.0 * (1.0 - na.b) * (1.0 - nb.b)) ); + vec4 result; if (clip) { vec3 fc = na * (1.0 - b.a) + m * b.a; - o_color = vec4(fc, 1.0) * a.a; + result = vec4(fc, 1.0) * a.a; } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif + } \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/passthrough.frag b/orx-fx/src/shaders/glsl/blend/passthrough.frag new file mode 100644 index 00000000..667ad4fb --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/passthrough.frag @@ -0,0 +1,25 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 result = texture(tex0, v_texCoord0); + #else + vec4 result = texture2D(tex0, v_texCoord0); + #endif + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/screen.frag b/orx-fx/src/shaders/glsl/blend/screen.frag similarity index 50% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/screen.frag rename to orx-fx/src/shaders/glsl/blend/screen.frag index 0480c015..cd946913 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blend/screen.frag +++ b/orx-fx/src/shaders/glsl/blend/screen.frag @@ -1,14 +1,25 @@ -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform sampler2D tex0; uniform sampler2D tex1; uniform bool clip; +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif + void main() { + #ifndef OR_GL_TEXTURE2D vec4 a = texture(tex0, v_texCoord0); vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif vec3 na = a.a == 0.0 ? vec3(0.0): a.rgb / a.a; vec3 nb = b.a == 0.0 ? vec3(0.0): b.rgb / b.a; @@ -18,9 +29,16 @@ void main() { 1.0-((1.0-na.g)*(1.0-nb.g)), 1.0-((1.0-na.b)*(1.0-nb.b))); + vec4 result; if (clip) { - o_color = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; + result = vec4(na * (1.0 - b.a) + b.a * m, 1.0) * a.a; } else { - o_color = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; + result = (1.0-a.a) * b + a.a * b.a * vec4(m, 1.0) + (1.0-b.a) * a; } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif } \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/source-atop.frag b/orx-fx/src/shaders/glsl/blend/source-atop.frag new file mode 100644 index 00000000..e157a6b0 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/source-atop.frag @@ -0,0 +1,32 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float ldest = dest.a * (1.0 - src.a); + float lboth = src.a * dest.a; + + vec4 result = dest * ldest + src * lboth; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/source-in.frag b/orx-fx/src/shaders/glsl/blend/source-in.frag new file mode 100644 index 00000000..572786bd --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/source-in.frag @@ -0,0 +1,31 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float lboth = src.a * dest.a; + vec4 result = src * lboth; + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/source-out.frag b/orx-fx/src/shaders/glsl/blend/source-out.frag new file mode 100644 index 00000000..49ff7168 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/source-out.frag @@ -0,0 +1,31 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float lsrc = src.a * (1.0 - dest.a); + + vec4 result = src * lsrc; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/subtract.frag b/orx-fx/src/shaders/glsl/blend/subtract.frag new file mode 100644 index 00000000..e5cce4dc --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/subtract.frag @@ -0,0 +1,39 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform bool clip; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 a = texture(tex0, v_texCoord0); + vec4 b = texture(tex1, v_texCoord0); + #else + vec4 a = texture2D(tex0, v_texCoord0); + vec4 b = texture2D(tex1, v_texCoord0); + #endif + + vec3 na = a.a > 0 ? a.rgb/a.a : vec3(0.0); + vec3 nb = b.a > 0 ? b.rgb/b.a : vec3(0.0); + vec3 subColor = b.rgb; + vec4 result; + if (clip) { + result = vec4(max(na - subColor, vec3(0.0)), 1) * a.a; + } else { + result = (1.0-a.a) * b + a.a * b.a * vec4(max(na - nb, vec3(0.0)), 1.0) + (1.0-b.a) * a; + } + + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/shaders/glsl/blend/xor.frag b/orx-fx/src/shaders/glsl/blend/xor.frag new file mode 100644 index 00000000..7159d843 --- /dev/null +++ b/orx-fx/src/shaders/glsl/blend/xor.frag @@ -0,0 +1,32 @@ +#ifdef OR_IN_OUT +in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + +uniform sampler2D tex0; +uniform sampler2D tex1; + +#ifndef OR_GL_FRAGCOLOR +out vec4 o_color; +#endif + +void main() { + #ifndef OR_GL_TEXTURE2D + vec4 src = texture(tex0, v_texCoord0); + vec4 dest = texture(tex1, v_texCoord0); + #else + vec4 src = texture2D(tex0, v_texCoord0); + vec4 dest = texture2D(tex1, v_texCoord0); + #endif + + float lsrc = src.a * (1.0 - dest.a); + float ldest = dest.a * (1.0 - src.a); + + vec4 result = src * lsrc + dest * ldest; + #ifdef OR_GL_FRAGCOLOR + gl_FragColor = result; + #else + o_color = result; + #endif +} \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/approximate-gaussian-blur.frag b/orx-fx/src/shaders/glsl/blur/approximate-gaussian-blur.frag similarity index 90% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/approximate-gaussian-blur.frag rename to orx-fx/src/shaders/glsl/blur/approximate-gaussian-blur.frag index 0c77731c..ab7462b2 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/approximate-gaussian-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/approximate-gaussian-blur.frag @@ -1,7 +1,3 @@ -// openrndr - gl3 - approximate-gaussian-blur - -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; uniform vec2 blurDirection; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-combine.frag b/orx-fx/src/shaders/glsl/blur/bloom-combine.frag similarity index 93% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-combine.frag rename to orx-fx/src/shaders/glsl/blur/bloom-combine.frag index a8438ac2..399edb9a 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-combine.frag +++ b/orx-fx/src/shaders/glsl/blur/bloom-combine.frag @@ -1,5 +1,3 @@ -#version 330 core - out vec4 o_output; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-downscale.frag b/orx-fx/src/shaders/glsl/blur/bloom-downscale.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-downscale.frag rename to orx-fx/src/shaders/glsl/blur/bloom-downscale.frag index 44372aad..a4d3583f 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-downscale.frag +++ b/orx-fx/src/shaders/glsl/blur/bloom-downscale.frag @@ -1,5 +1,3 @@ -#version 330 - out vec4 o_output; in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-upscale.frag b/orx-fx/src/shaders/glsl/blur/bloom-upscale.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-upscale.frag rename to orx-fx/src/shaders/glsl/blur/bloom-upscale.frag index 3e70de42..09daaca0 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom-upscale.frag +++ b/orx-fx/src/shaders/glsl/blur/bloom-upscale.frag @@ -1,5 +1,3 @@ -#version 330 - float nrand(vec2 n) { return fract(sin(dot(n.xy, vec2(12.9898, 78.233))) * 43758.5453); } diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom.frag b/orx-fx/src/shaders/glsl/blur/bloom.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom.frag rename to orx-fx/src/shaders/glsl/blur/bloom.frag index 720523d9..607c0733 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/bloom.frag +++ b/orx-fx/src/shaders/glsl/blur/bloom.frag @@ -1,5 +1,3 @@ -#version 330 - in vec2 v_texCoord0; out vec4 o_color; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/box-blur.frag b/orx-fx/src/shaders/glsl/blur/box-blur.frag similarity index 92% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/box-blur.frag rename to orx-fx/src/shaders/glsl/blur/box-blur.frag index 49625f92..a84c6d6e 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/box-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/box-blur.frag @@ -1,7 +1,3 @@ -// openrndr - gl3 - box-blur - -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; uniform vec2 blurDirection; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/frame-blur.frag b/orx-fx/src/shaders/glsl/blur/frame-blur.frag similarity index 86% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/frame-blur.frag rename to orx-fx/src/shaders/glsl/blur/frame-blur.frag index 7bcf05ba..c6b44797 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/frame-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/frame-blur.frag @@ -1,7 +1,3 @@ -// openrndr - gl3 - frame-blur - -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input image uniform sampler2D tex1; // accumulator image diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/gaussian-blur.frag b/orx-fx/src/shaders/glsl/blur/gaussian-blur.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/gaussian-blur.frag rename to orx-fx/src/shaders/glsl/blur/gaussian-blur.frag index b4b49126..f769d71f 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/gaussian-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/gaussian-blur.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/hash-blur.frag b/orx-fx/src/shaders/glsl/blur/hash-blur.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/hash-blur.frag rename to orx-fx/src/shaders/glsl/blur/hash-blur.frag index 62dfddab..f705118b 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/hash-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/hash-blur.frag @@ -1,5 +1,3 @@ -#version 330 core - // based on Hashed blur by David Hoskins. // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/kawase-blur.frag b/orx-fx/src/shaders/glsl/blur/kawase-blur.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/kawase-blur.frag rename to orx-fx/src/shaders/glsl/blur/kawase-blur.frag index 05400ce3..6c22905e 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/kawase-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/kawase-blur.frag @@ -1,5 +1,3 @@ -#version 330 - out vec4 o_color; in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/laser-blur.frag b/orx-fx/src/shaders/glsl/blur/laser-blur.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/laser-blur.frag rename to orx-fx/src/shaders/glsl/blur/laser-blur.frag index 9089cd10..6aedbd21 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/laser-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/laser-blur.frag @@ -1,4 +1,3 @@ -#version 330 core out vec4 o_output; uniform sampler2D tex0; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/zoom-blur.frag b/orx-fx/src/shaders/glsl/blur/zoom-blur.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/zoom-blur.frag rename to orx-fx/src/shaders/glsl/blur/zoom-blur.frag index f29f4800..7230d4f3 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/blur/zoom-blur.frag +++ b/orx-fx/src/shaders/glsl/blur/zoom-blur.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform vec2 center; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/chromatic-aberration.frag b/orx-fx/src/shaders/glsl/color/chromatic-aberration.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/chromatic-aberration.frag rename to orx-fx/src/shaders/glsl/color/chromatic-aberration.frag index f74a633b..52d5490e 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/chromatic-aberration.frag +++ b/orx-fx/src/shaders/glsl/color/chromatic-aberration.frag @@ -1,5 +1,3 @@ -#version 330 - in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-correction.frag b/orx-fx/src/shaders/glsl/color/color-correction.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-correction.frag rename to orx-fx/src/shaders/glsl/color/color-correction.frag index 32fd34ec..6b6b96b6 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-correction.frag +++ b/orx-fx/src/shaders/glsl/color/color-correction.frag @@ -1,7 +1,4 @@ /* based on "Brightness, contrast, saturation" by WojtaZam: https://www.shadertoy.com/view/XdcXzn */ - -#version 330 core - uniform float brightness; uniform float saturation; uniform float contrast; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-lookup.frag b/orx-fx/src/shaders/glsl/color/color-lookup.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-lookup.frag rename to orx-fx/src/shaders/glsl/color/color-lookup.frag index 13758d3b..7e57abf3 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-lookup.frag +++ b/orx-fx/src/shaders/glsl/color/color-lookup.frag @@ -1,4 +1,3 @@ -#version 330 in vec2 v_texCoord0; uniform sampler2D tex0; uniform sampler2D lookup; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-mix.frag b/orx-fx/src/shaders/glsl/color/color-mix.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-mix.frag rename to orx-fx/src/shaders/glsl/color/color-mix.frag index 28e17375..9c1edbf9 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-mix.frag +++ b/orx-fx/src/shaders/glsl/color/color-mix.frag @@ -1,5 +1,3 @@ -#version 330 - uniform float[25] colorMatrix; vec4 colorTransform(vec4 color, float[25] matrix) { diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-tint.frag b/orx-fx/src/shaders/glsl/color/color-tint.frag similarity index 93% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-tint.frag rename to orx-fx/src/shaders/glsl/color/color-tint.frag index 2bdd1414..b7377985 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/color-tint.frag +++ b/orx-fx/src/shaders/glsl/color/color-tint.frag @@ -1,5 +1,3 @@ -#version 330 - uniform vec4 tint; in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-map.frag b/orx-fx/src/shaders/glsl/color/luma-map.frag similarity index 95% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-map.frag rename to orx-fx/src/shaders/glsl/color/luma-map.frag index fdc5174d..64c63ed2 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-map.frag +++ b/orx-fx/src/shaders/glsl/color/luma-map.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform vec4 foreground; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-opacity.frag b/orx-fx/src/shaders/glsl/color/luma-opacity.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-opacity.frag rename to orx-fx/src/shaders/glsl/color/luma-opacity.frag index a3b9d9d9..2cbb16b0 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-opacity.frag +++ b/orx-fx/src/shaders/glsl/color/luma-opacity.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform float foregroundLuma; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-threshold.frag b/orx-fx/src/shaders/glsl/color/luma-threshold.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-threshold.frag rename to orx-fx/src/shaders/glsl/color/luma-threshold.frag index c82b1f75..557c803a 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/luma-threshold.frag +++ b/orx-fx/src/shaders/glsl/color/luma-threshold.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform vec4 foreground; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/pal.frag b/orx-fx/src/shaders/glsl/color/pal.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/pal.frag rename to orx-fx/src/shaders/glsl/color/pal.frag index 054de266..e2a86a0e 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/pal.frag +++ b/orx-fx/src/shaders/glsl/color/pal.frag @@ -1,5 +1,3 @@ -#version 330 core - // based on https://github.com/svofski/CRT in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/rgb-to-ycbcr.frag b/orx-fx/src/shaders/glsl/color/rgb-to-ycbcr.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/rgb-to-ycbcr.frag rename to orx-fx/src/shaders/glsl/color/rgb-to-ycbcr.frag index 4dbbf715..c3a66eae 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/rgb-to-ycbcr.frag +++ b/orx-fx/src/shaders/glsl/color/rgb-to-ycbcr.frag @@ -1,5 +1,3 @@ -#version 330 - uniform vec4 tint; in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/sepia.frag b/orx-fx/src/shaders/glsl/color/sepia.frag similarity index 96% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/sepia.frag rename to orx-fx/src/shaders/glsl/color/sepia.frag index 7a954112..0149c8fb 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/sepia.frag +++ b/orx-fx/src/shaders/glsl/color/sepia.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform float amount; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/set-background.frag b/orx-fx/src/shaders/glsl/color/set-background.frag similarity index 92% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/set-background.frag rename to orx-fx/src/shaders/glsl/color/set-background.frag index 323591a2..f00e7f85 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/set-background.frag +++ b/orx-fx/src/shaders/glsl/color/set-background.frag @@ -1,5 +1,3 @@ -#version 330 core - uniform vec4 background; uniform float backgroundOpacity; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/subtract-constant.frag b/orx-fx/src/shaders/glsl/color/subtract-constant.frag similarity index 93% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/subtract-constant.frag rename to orx-fx/src/shaders/glsl/color/subtract-constant.frag index 2bec0732..3c865a43 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/subtract-constant.frag +++ b/orx-fx/src/shaders/glsl/color/subtract-constant.frag @@ -1,5 +1,3 @@ -#version 330 - in vec2 v_texCoord0; uniform sampler2D tex0; uniform vec4 constant; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/ycbcr-to-rgb.frag b/orx-fx/src/shaders/glsl/color/ycbcr-to-rgb.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/ycbcr-to-rgb.frag rename to orx-fx/src/shaders/glsl/color/ycbcr-to-rgb.frag index e98391cf..acf90020 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/color/ycbcr-to-rgb.frag +++ b/orx-fx/src/shaders/glsl/color/ycbcr-to-rgb.frag @@ -1,5 +1,3 @@ -#version 330 - uniform vec4 tint; in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/block-repeat.frag b/orx-fx/src/shaders/glsl/distort/block-repeat.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/block-repeat.frag rename to orx-fx/src/shaders/glsl/distort/block-repeat.frag index 14a9055d..2da055bf 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/block-repeat.frag +++ b/orx-fx/src/shaders/glsl/distort/block-repeat.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0;// input uniform float blockWidth; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/displace-blend.frag b/orx-fx/src/shaders/glsl/distort/displace-blend.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/displace-blend.frag rename to orx-fx/src/shaders/glsl/distort/displace-blend.frag index 800fb5ab..9b56b4d4 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/displace-blend.frag +++ b/orx-fx/src/shaders/glsl/distort/displace-blend.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0;// input uniform sampler2D tex1;// input diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fisheye.frag b/orx-fx/src/shaders/glsl/distort/fisheye.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fisheye.frag rename to orx-fx/src/shaders/glsl/distort/fisheye.frag index e1f4d4d0..9e411434 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fisheye.frag +++ b/orx-fx/src/shaders/glsl/distort/fisheye.frag @@ -1,4 +1,3 @@ -#version 330 core uniform sampler2D tex0; uniform float strength; uniform float feather; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fluid-distort.frag b/orx-fx/src/shaders/glsl/distort/fluid-distort.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fluid-distort.frag rename to orx-fx/src/shaders/glsl/distort/fluid-distort.frag index 7d31b7c4..ac3cca01 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/fluid-distort.frag +++ b/orx-fx/src/shaders/glsl/distort/fluid-distort.frag @@ -1,5 +1,3 @@ -#version 330 - // created by florian berger (flockaroo) - 2016 // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/horizontal-wave.frag b/orx-fx/src/shaders/glsl/distort/horizontal-wave.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/horizontal-wave.frag rename to orx-fx/src/shaders/glsl/distort/horizontal-wave.frag index 23f94819..08713145 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/horizontal-wave.frag +++ b/orx-fx/src/shaders/glsl/distort/horizontal-wave.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform float phase; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perspective-plane.frag b/orx-fx/src/shaders/glsl/distort/perspective-plane.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perspective-plane.frag rename to orx-fx/src/shaders/glsl/distort/perspective-plane.frag index 1c3663ad..e1fde908 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perspective-plane.frag +++ b/orx-fx/src/shaders/glsl/distort/perspective-plane.frag @@ -1,5 +1,3 @@ -#version 330 core - // based on https://www.shadertoy.com/view/wsBSWG by bloxard uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perturb.frag b/orx-fx/src/shaders/glsl/distort/perturb.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perturb.frag rename to orx-fx/src/shaders/glsl/distort/perturb.frag index 87adcd7a..ec3f4311 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/perturb.frag +++ b/orx-fx/src/shaders/glsl/distort/perturb.frag @@ -1,5 +1,3 @@ -#version 330 - // uniforms uniform float gain; uniform vec3 seed; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stack-repeat.frag b/orx-fx/src/shaders/glsl/distort/stack-repeat.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stack-repeat.frag rename to orx-fx/src/shaders/glsl/distort/stack-repeat.frag index b851fad0..3a9198f1 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stack-repeat.frag +++ b/orx-fx/src/shaders/glsl/distort/stack-repeat.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0;// input uniform int repeats; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stretch-waves.frag b/orx-fx/src/shaders/glsl/distort/stretch-waves.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stretch-waves.frag rename to orx-fx/src/shaders/glsl/distort/stretch-waves.frag index 82f49eaa..62d4fbe5 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/stretch-waves.frag +++ b/orx-fx/src/shaders/glsl/distort/stretch-waves.frag @@ -1,5 +1,3 @@ -#version 330 core - uniform sampler2D tex0; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tape-noise.frag b/orx-fx/src/shaders/glsl/distort/tape-noise.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tape-noise.frag rename to orx-fx/src/shaders/glsl/distort/tape-noise.frag index c1509da0..d9c93d0c 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tape-noise.frag +++ b/orx-fx/src/shaders/glsl/distort/tape-noise.frag @@ -1,4 +1,3 @@ -#version 330 core out vec4 o_output; uniform sampler2D tex0; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tiles.frag b/orx-fx/src/shaders/glsl/distort/tiles.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tiles.frag rename to orx-fx/src/shaders/glsl/distort/tiles.frag index 78ea0b31..d68a7f7a 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/tiles.frag +++ b/orx-fx/src/shaders/glsl/distort/tiles.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform float rotation; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/uvmap.frag b/orx-fx/src/shaders/glsl/distort/uvmap.frag similarity index 91% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/uvmap.frag rename to orx-fx/src/shaders/glsl/distort/uvmap.frag index 422c4b79..482012cf 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/uvmap.frag +++ b/orx-fx/src/shaders/glsl/distort/uvmap.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0;// uvmap uniform sampler2D tex1;// input diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/vertical-wave.frag b/orx-fx/src/shaders/glsl/distort/vertical-wave.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/vertical-wave.frag rename to orx-fx/src/shaders/glsl/distort/vertical-wave.frag index e1bee811..f17331a4 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/vertical-wave.frag +++ b/orx-fx/src/shaders/glsl/distort/vertical-wave.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; // input uniform float phase; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/video-glitch.frag b/orx-fx/src/shaders/glsl/distort/video-glitch.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/video-glitch.frag rename to orx-fx/src/shaders/glsl/distort/video-glitch.frag index 1feedd46..a1cfda36 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/distort/video-glitch.frag +++ b/orx-fx/src/shaders/glsl/distort/video-glitch.frag @@ -1,4 +1,3 @@ -#version 330 core out vec4 o_output; uniform sampler2D tex0; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/a-dither.frag b/orx-fx/src/shaders/glsl/dither/a-dither.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/a-dither.frag rename to orx-fx/src/shaders/glsl/dither/a-dither.frag index d7851cbe..e92f2972 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/a-dither.frag +++ b/orx-fx/src/shaders/glsl/dither/a-dither.frag @@ -1,5 +1,3 @@ -#version 330 - // this shader is based on the "a dither" work by Øyvind Kolås // https://pippin.gimp.org/a_dither/ diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/cmyk-halftone.frag b/orx-fx/src/shaders/glsl/dither/cmyk-halftone.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/cmyk-halftone.frag rename to orx-fx/src/shaders/glsl/dither/cmyk-halftone.frag index abfdff65..55ebf991 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/cmyk-halftone.frag +++ b/orx-fx/src/shaders/glsl/dither/cmyk-halftone.frag @@ -1,7 +1,4 @@ -/* Based on CMYK Halftone by tsone https://www.shadertoy.com/view/Mdf3Dn -*/ -#version 330 core - +/* Based on CMYK Halftone by tsone https://www.shadertoy.com/view/Mdf3Dn */ uniform float dotSize; #define SST 0.888 diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/crosshatch.frag b/orx-fx/src/shaders/glsl/dither/crosshatch.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/crosshatch.frag rename to orx-fx/src/shaders/glsl/dither/crosshatch.frag index 6b5fc0e5..f2847c17 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/dither/crosshatch.frag +++ b/orx-fx/src/shaders/glsl/dither/crosshatch.frag @@ -1,5 +1,3 @@ -#version 330 - in vec2 v_texCoord0; uniform sampler2D tex0; out vec4 o_color; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/contour.frag b/orx-fx/src/shaders/glsl/edges/contour.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/contour.frag rename to orx-fx/src/shaders/glsl/edges/contour.frag index 6d09caab..0d00c4a0 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/contour.frag +++ b/orx-fx/src/shaders/glsl/edges/contour.frag @@ -1,4 +1,3 @@ -#version 330 core uniform sampler2D tex0; in vec2 v_texCoord0; out vec4 o_output; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-1.frag b/orx-fx/src/shaders/glsl/edges/edges-work-1.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-1.frag rename to orx-fx/src/shaders/glsl/edges/edges-work-1.frag index fc4429d5..f47c2f21 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-1.frag +++ b/orx-fx/src/shaders/glsl/edges/edges-work-1.frag @@ -1,4 +1,3 @@ -#version 330 core uniform sampler2D tex0; in vec2 v_texCoord0; out vec4 o_color; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-2.frag b/orx-fx/src/shaders/glsl/edges/edges-work-2.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-2.frag rename to orx-fx/src/shaders/glsl/edges/edges-work-2.frag index d0b56c02..35d697e9 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/edges-work-2.frag +++ b/orx-fx/src/shaders/glsl/edges/edges-work-2.frag @@ -1,4 +1,3 @@ -#version 330 core uniform sampler2D tex0; in vec2 v_texCoord0; out vec4 o_color; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/luma-sobel.frag b/orx-fx/src/shaders/glsl/edges/luma-sobel.frag similarity index 98% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/luma-sobel.frag rename to orx-fx/src/shaders/glsl/edges/luma-sobel.frag index ff425b75..67fd3cdf 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/edges/luma-sobel.frag +++ b/orx-fx/src/shaders/glsl/edges/luma-sobel.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/grain/film-grain.frag b/orx-fx/src/shaders/glsl/grain/film-grain.frag similarity index 99% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/grain/film-grain.frag rename to orx-fx/src/shaders/glsl/grain/film-grain.frag index f6240471..74e819b6 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/grain/film-grain.frag +++ b/orx-fx/src/shaders/glsl/grain/film-grain.frag @@ -2,8 +2,6 @@ // https://opensource.org/licenses/MIT. // Ad[a|o]pted from shader by "noby" https://www.shadertoy.com/view/3sGSWV -#version 330 core - uniform sampler2D tex0; in vec2 v_texCoord0; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/patterns/checkers.frag b/orx-fx/src/shaders/glsl/patterns/checkers.frag similarity index 52% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/patterns/checkers.frag rename to orx-fx/src/shaders/glsl/patterns/checkers.frag index bbe34283..c94e7299 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/patterns/checkers.frag +++ b/orx-fx/src/shaders/glsl/patterns/checkers.frag @@ -1,15 +1,22 @@ -#version 330 - +#ifdef OR_IN_OUT in vec2 v_texCoord0; +#else +varying vec2 v_texCoord0; +#endif + uniform vec4 foreground; uniform vec4 background; uniform vec2 targetSize; uniform float size; uniform float opacity; + +#ifndef OR_GL_FRAGCOLOR out vec4 o_color; +#endif + void main() { - float r = targetSize.x/targetSize.y; - vec2 uv = v_texCoord0-vec2(0.5); + float r = targetSize.x / targetSize.y; + vec2 uv = v_texCoord0 - vec2(0.5); uv.x *= r; vec2 cell = (uv / size); @@ -29,8 +36,14 @@ void main() { cb = background; } float s = w.x; - float fx = smoothstep(s, 0.0, cellUV.x) + smoothstep(1.0-s, 1.0, cellUV.x); - float fy = smoothstep(s, 0.0, cellUV.y) + smoothstep(1.0-s, 1.0, cellUV.y); + float fx = smoothstep(s, 0.0, cellUV.x) + smoothstep(1.0 - s, 1.0, cellUV.x); + float fy = smoothstep(s, 0.0, cellUV.y) + smoothstep(1.0 - s, 1.0, cellUV.y); - o_color = mix(ca, cb, min(0.5, fx*0.5+ fy*0.5)) * opacity; + vec4 result = mix(ca, cb, min(0.5, fx * 0.5 + fy * 0.5)) * opacity; + + #ifndef OR_GL_FRAGCOLOR + o_color = result; + #else + gl_FragCoord = result; + #endif } \ No newline at end of file diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blend.frag b/orx-fx/src/shaders/glsl/shadow/dropshadow-blend.frag similarity index 95% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blend.frag rename to orx-fx/src/shaders/glsl/shadow/dropshadow-blend.frag index 481fddca..0ed91c32 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blend.frag +++ b/orx-fx/src/shaders/glsl/shadow/dropshadow-blend.frag @@ -1,5 +1,3 @@ -#version 330 - in vec2 v_texCoord0; uniform sampler2D tex0; uniform sampler2D tex1; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blur.frag b/orx-fx/src/shaders/glsl/shadow/dropshadow-blur.frag similarity index 93% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blur.frag rename to orx-fx/src/shaders/glsl/shadow/dropshadow-blur.frag index a9015061..0a593b17 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/shadow/dropshadow-blur.frag +++ b/orx-fx/src/shaders/glsl/shadow/dropshadow-blur.frag @@ -1,7 +1,3 @@ -// openrndr - gl3 - box-blur - -#version 330 - in vec2 v_texCoord0; uniform sampler2D tex0; uniform vec2 blurDirection; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/tonemap/uncharted2-tonemap.frag b/orx-fx/src/shaders/glsl/tonemap/uncharted2-tonemap.frag similarity index 97% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/tonemap/uncharted2-tonemap.frag rename to orx-fx/src/shaders/glsl/tonemap/uncharted2-tonemap.frag index 23832bf8..dc0d25b8 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/tonemap/uncharted2-tonemap.frag +++ b/orx-fx/src/shaders/glsl/tonemap/uncharted2-tonemap.frag @@ -1,6 +1,4 @@ // ad[a|o]pted from http://filmicworlds.com/blog/filmic-tonemapping-operators/ -#version 330 core - float A = 0.15; float B = 0.50; float C = 0.10; diff --git a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/transform/flip-vertically.frag b/orx-fx/src/shaders/glsl/transform/flip-vertically.frag similarity index 90% rename from orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/transform/flip-vertically.frag rename to orx-fx/src/shaders/glsl/transform/flip-vertically.frag index d615460c..f5f8a68d 100644 --- a/orx-fx/src/main/resources/org/openrndr/extra/fx/gl3/transform/flip-vertically.frag +++ b/orx-fx/src/shaders/glsl/transform/flip-vertically.frag @@ -1,5 +1,3 @@ -#version 330 core - in vec2 v_texCoord0; uniform sampler2D tex0; uniform vec4 constant;