56 lines
1.7 KiB
Kotlin
56 lines
1.7 KiB
Kotlin
package noise
|
|
|
|
import org.openrndr.application
|
|
import org.openrndr.draw.loadImage
|
|
import org.openrndr.extra.camera.Camera2D
|
|
import org.openrndr.extra.imageFit.imageFit
|
|
import org.openrndr.extra.shaderphrases.noise.simplex13
|
|
import org.openrndr.extra.shadestyles.fills.noise.noise
|
|
|
|
/**
|
|
* Demonstrates the use of the `blueNois` variant of the `noise` shade style
|
|
* to render an image as black and white with a pointillist luma-based effect.
|
|
*
|
|
* More computationally heavy than other shade styles.
|
|
*/
|
|
fun main() {
|
|
application {
|
|
configure {
|
|
width = 720
|
|
height = 720
|
|
}
|
|
program {
|
|
val image = loadImage("demo-data/images/image-001.png")
|
|
extend(Camera2D())
|
|
extend {
|
|
drawer.shadeStyle = noise {
|
|
phase = seconds * 10.0
|
|
|
|
filterWindow = 5
|
|
domainWarpFunction = """$simplex13
|
|
vec3 domainWarp(vec3 p) {
|
|
float px = simplex13(p * 0.01);
|
|
float py = simplex13(p.yxz * -0.01);
|
|
return p + 10.25 * vec3(px, py, 0.0);
|
|
}
|
|
""".trimIndent()
|
|
|
|
blueNoise {
|
|
bits = 17
|
|
bilinear()
|
|
}
|
|
|
|
blendFunction = """
|
|
|vec4 blend(vec4 o, float n) {
|
|
| float luma = dot(o.rgb, vec3(1.0 / 3.0));
|
|
| return vec4(vec3(smoothstep(luma + 0.01, luma - 0.01, n)), 1.0);
|
|
|}""".trimMargin()
|
|
|
|
}
|
|
drawer.imageFit(image, drawer.bounds)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|