Files
orx/orx-compositor/src/jvmDemo/kotlin/DemoAside01.kt
2025-10-14 15:07:07 +02:00

50 lines
1.6 KiB
Kotlin

import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.ColorType
import org.openrndr.extra.compositor.*
import org.openrndr.extra.fx.blur.HashBlurDynamic
import org.openrndr.extra.fx.patterns.Checkers
import kotlin.math.cos
/**
* Demonstrates how to reuse a layer in the Compositor by using `aside { }`.
*
* The `aside` block can make use of `draw`, `mask` and `post`. In this demo
* only the latter is used to apply a full-window animated `Checkers` effect.
* The `aside` is not displayed by default.
*
* Next, a white, centered circle is drawn.
*
* Finally, a `HashBlurDynamic` post-processing effect is applied. The dynamic
* version of the HashBlur effect multiplies its `radius` argument by the red component
* of the provided texture (containing the animated checkers in this case).
*/
fun main() = application {
configure {
width = 720
height = 720
}
program {
val c = compose {
layer {
val a = aside(colorType = ColorType.FLOAT32) {
post(Checkers()) {
this.size = cos(seconds + 2.0) * 0.5 + 0.5
}
}
draw {
drawer.clear(ColorRGBa.GRAY.shade(0.5))
drawer.circle(width / 2.0, height / 2.0, 100.0)
}
post(HashBlurDynamic(), a) {
time = seconds
radius = 25.0
}
}
}
extend {
c.draw(drawer)
}
}
}