50 lines
1.6 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
}
|