Files
orx/orx-noise/src/jvmDemo/kotlin/DemoGradientPerturb2D.kt
2025-08-30 13:56:01 +02:00

41 lines
1.4 KiB
Kotlin

import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.colorBuffer
import org.openrndr.extra.noise.gradientPerturbFractal
import org.openrndr.extra.noise.simplex
import org.openrndr.math.Vector2
import kotlin.math.absoluteValue
/**
* Demonstrates how to generate a dynamic fractal-based visual effect
* using 2D gradient perturbation and simplex noise.
*
* This method initializes a color buffer to create an image and applies fractal gradient noise to set
* each pixel's brightness, producing a dynamic visual texture. The fractal effect is achieved by layering multiple
* levels of noise, and each pixel's color intensity is based on the noise function results.
* The output is continuously updated to produce animated patterns.
*
* CPU-based.
*/
fun main() = application {
configure {
width = 720
height = 360
}
program {
val cb = colorBuffer(width, height)
val shad = cb.shadow
extend {
for (y in 0 until height) {
for (x in 0 until width) {
val p =
gradientPerturbFractal(300, frequency = 0.8, position = Vector2(seconds + x / 320.0, y / 240.0))
val d = simplex(300, p.x, p.y + seconds, seconds).absoluteValue
shad[x, y] = ColorRGBa(d, d, d, 1.0)
}
}
shad.upload()
drawer.image(cb)
}
}
}