Skip to content

Instantly share code, notes, and snippets.

@AvneeshSarwate
Last active February 8, 2022 05:59
Show Gist options
  • Save AvneeshSarwate/3966d9a37fb0ca484040294e91b3cfbd to your computer and use it in GitHub Desktop.
Save AvneeshSarwate/3966d9a37fb0ca484040294e91b3cfbd to your computer and use it in GitHub Desktop.
Program with olive hot-reload error
/Users/avneeshsarwate/Library/Java/JavaVirtualMachines/azul-16.0.2/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=53523:/Applications/IntelliJ IDEA CE.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/avneeshsarwate/openrndr-template/build/classes/kotlin/main:/Users/avneeshsarwate/openrndr-template/build/resources/main:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-ffmpeg/0.5.1-SNAPSHOT/openrndr-ffmpeg-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-gui/0.5.1-SNAPSHOT/orx-gui-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.10/e80fe6ac3c3573a80305f5ec43f86b829e8ab53d/kotlin-stdlib-jdk8-1.6.10.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-git-archiver/0.5.1-SNAPSHOT/orx-git-archiver-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-olive/0.5.1-SNAPSHOT/orx-olive-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-panel/0.5.1-SNAPSHOT/orx-panel-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-openal-jvm/0.5.1-SNAPSHOT/openrndr-openal-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-application-jvm/0.5.1-SNAPSHOT/openrndr-application-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-svg-jvm/0.5.1-SNAPSHOT/openrndr-svg-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-animatable-jvm/0.5.1-SNAPSHOT/openrndr-animatable-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-extensions-jvm/0.5.1-SNAPSHOT/openrndr-extensions-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-filter-jvm/0.5.1-SNAPSHOT/openrndr-filter-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-color-jvm/0.5.1-SNAPSHOT/orx-color-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-compositor-jvm/0.5.1-SNAPSHOT/orx-compositor-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-fx-jvm/0.5.1-SNAPSHOT/orx-fx-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-image-fit-jvm/0.5.1-SNAPSHOT/orx-image-fit-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-noise-jvm/0.5.1-SNAPSHOT/orx-noise-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-shade-styles-jvm/0.5.1-SNAPSHOT/orx-shade-styles-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-shapes-jvm/0.5.1-SNAPSHOT/orx-shapes-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10/e1c380673654a089c4f0c9f83d0ddfdc1efdb498/kotlin-stdlib-jdk7-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-parameters-jvm/0.5.1-SNAPSHOT/orx-parameters-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-draw-jvm/0.5.1-SNAPSHOT/openrndr-draw-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-math-jvm/0.5.1-SNAPSHOT/openrndr-math-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-event-jvm/0.5.1-SNAPSHOT/openrndr-event-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-shape-jvm/0.5.1-SNAPSHOT/openrndr-shape-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-color-jvm/0.5.1-SNAPSHOT/openrndr-color-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-utils-jvm/0.5.1-SNAPSHOT/openrndr-utils-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-gl3-natives-macos/0.5.1-SNAPSHOT/openrndr-gl3-natives-macos-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-openal-natives-macos/0.5.1-SNAPSHOT/openrndr-openal-natives-macos-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-ffmpeg-natives-macos/0.5.1-SNAPSHOT/openrndr-ffmpeg-natives-macos-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/io.github.microutils/kotlin-logging-jvm/2.1.15/7fd4147cc8d17b0df35bb0d10b171c5b8f9cf9d1/kotlin-logging-jvm-2.1.15.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.6.10/d0a7ff2e2500ef497ed0214ae40ad3c8387a6164/kotlin-script-runtime-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.17.0/1ec25ce0254749c94549ea9c3cea34bd0488c9c6/log4j-slf4j-impl-2.17.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.11.1/9a05f6fa2b901b628493b0f0405f1ceb9cc255c9/jackson-dataformat-yaml-2.11.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.11.1/f5d24a1dcf46000316d40c8c61196c48dd5677c5/jackson-databind-2.11.1.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-core/0.5.1-SNAPSHOT/openrndr-core-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.3.0/902dd57b5a46e8a75ee843c2db61f80b4d130d48/lwjgl-openal-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.3.0/a819bc83171a98349c13749cbde3a956946cf0ca/lwjgl-openal-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl/3.3.0/77b0dc0b6a6c82fb47368e73d55e23fdcfcf49a1/lwjgl-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl/3.3.0/f4a5d3b1faa210a27b5592bd2ac9ed07b5a8d891/lwjgl-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.bytedeco/ffmpeg/4.3.1-1.5.4/bd755c9fd26d99f7ce605ca456f8538c2203b571/ffmpeg-4.3.1-1.5.4.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.bytedeco/ffmpeg/4.3.1-1.5.4/6f0767ab26b31aa3fc267ade1cf088ce56c7b4a4/ffmpeg-4.3.1-1.5.4-macosx-x86_64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.eclipse.jgit/org.eclipse.jgit/5.12.0.202106070339-r/b7792da62103c956d3e58e29fb2e6e5c5f0e1317/org.eclipse.jgit-5.12.0.202106070339-r.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-dialogs/0.5.1-SNAPSHOT/openrndr-dialogs-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.6.10/1cbe9c92c12a94eea200d23c2bbaedaf3daf5132/kotlin-reflect-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-file-watcher/0.5.1-SNAPSHOT/orx-file-watcher-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-kotlin-parser/0.5.1-SNAPSHOT/orx-kotlin-parser-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jsr223/1.6.10/5144eae038eb3c7b311ce2bddf1143c985dd4cc5/kotlin-scripting-jsr223-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm-host/1.6.10/3666e1ea8dab1dfa97748d7cd01dff831ecac5ad/kotlin-scripting-jvm-host-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm/1.6.10/dbe683647dcb04cda92fe4423acb741a2f144a69/kotlin-scripting-jvm-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.3.0/899e34f314525596f8fdb6476d3e56104da4601d/lwjgl-glfw-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.3.0/1cc19d82bd2a486cb709a4cf7b4962fe65901199/lwjgl-glfw-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.3.0/ce52faa3fd0c9ed7af45145e94b01eade5fd5daf/lwjgl-jemalloc-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.3.0/8ccf1138c54f1bf67a92317922231cba2a60d596/lwjgl-jemalloc-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.3.0/a1f395f7758a3abd5aff75fc8a20368ac371631e/lwjgl-opengl-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.3.0/6bac5f116d0c8f64cad7508a08aa512eb28b568a/lwjgl-opengl-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.3.0/69becce49e19671fccca33bfb273231055bd9fcf/lwjgl-stb-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.3.0/58db805624ca56d9870346ff49cf386bb00177b/lwjgl-stb-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-tinyexr/3.3.0/4ada4bde88509476f8b6e22346b84043cb4e9d74/lwjgl-tinyexr-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-tinyexr/3.3.0/8fd505f46805fd470600af5d3b9c011c6e7741b4/lwjgl-tinyexr-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-nfd/3.3.0/6d0e4be3e2811979b3cad55f642c5b13559fa202/lwjgl-nfd-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-nfd/3.3.0/6265bc0f264106435f2119dcdfc21a495d013a55/lwjgl-nfd-3.3.0-natives-macos-arm64.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.bytedeco/javacpp/1.5.4/fb4e5f46cefbb6674c324bb28babc9fcf3caa642/javacpp-1.5.4.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.bytedeco/javacpp/1.5.4/fa117898903dcf584b857b4ad1f6f95ddfa608a5/javacpp-1.5.4-macosx-x86_64.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-gl3-jvm/0.5.1-SNAPSHOT/openrndr-gl3-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.0/f3b8fd26c2e76d2f18cbc36aacb6e349fcb9fd5f/kotlinx-coroutines-core-jvm-1.6.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.32/cdcff33940d9f2de763bc41ea05a0be5941176c3/slf4j-api-1.7.32.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.17.0/fe6e7a32c1228884b9691a744f953a55d0dd8ead/log4j-core-2.17.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.17.0/bbd791e9c8c9421e45337c4fe0a10851c086e36c/log4j-api-2.17.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.11.1/8b02908d53183fdf9758e7e20f2fdee87613a962/jackson-core-2.11.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.26/a78a8747147d2c5807683e76ec2b633e95c14fe9/snakeyaml-1.26.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.11.1/f083c4ac0fb8b3c6b8d5b62cd54122228ef62cee/jackson-annotations-2.11.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.googlecode.javaewah/JavaEWAH/1.1.7/570dde3cd706ae10c62fe19b150928cfdb415e87/JavaEWAH-1.1.7.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4/4.9.3/9d47afaa75d70903b5b77413b034d6b201d7d5d6/antlr4-4.9.3.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4-runtime/4.9.3/81befc16ebedb8b8aea3e4c0835dd5ca7e8523a8/antlr4-runtime-4.9.3.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-compiler-embeddable/1.6.10/b85371aaeeb858623ad2080c41bcba7d6854783/kotlin-scripting-compiler-embeddable-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.6.10/88f2073f4020cdb83132cfe940ceb9a60aba54ea/kotlin-compiler-embeddable-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-common/1.6.10/b3b71fd93878f2b4f19d099ac6430c67549a1c77/kotlin-scripting-common-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jsoup/jsoup/1.14.3/c43a81e18e6d0eb71951aa031d55d5c293c531a6/jsoup-1.14.3.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-triangulation/0.5.1-SNAPSHOT/orx-triangulation-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.lwjgl/lwjgl-egl/3.3.0/d1b6d7ea32ac6c91b4f7ea06b59055dcead9bfd3/lwjgl-egl-3.3.0.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.antlr/ST4/4.3.1/9c61ac6d17b7f450b4048742c2cc73787972518e/ST4-4.3.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.antlr/antlr-runtime/3.5.2/cd9cd41361c155f3af0f653009dcecb08d8b4afd/antlr-runtime-3.5.2.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.abego.treelayout/org.abego.treelayout.core/1.0.3/457216e8e6578099ae63667bb1e4439235892028/org.abego.treelayout.core-1.0.3.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.glassfish/javax.json/1.0.4/3178f73569fd7a1e5ffc464e680f7a8cc784b85a/javax.json-1.0.4.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.ibm.icu/icu4j/69.1/ff666ac55986650893aacb9e2e0003538e9799c0/icu4j-69.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.10/26db9fbe68a5fd7e7f7827e2db74788eb9bc8c8a/kotlin-scripting-compiler-impl-embeddable-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/1.6.10/a56d79bcbea411fa6058e4ecffc2de73e742bd2a/kotlin-daemon-embeddable-1.6.10.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20181211/216c2e14b070f334479d800987affe4054cd563f/trove4j-1.0.20181211.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/jna/5.6.0/330f2244e9030119ab3030fc3fededc86713d9cc/jna-5.6.0.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-shader-phrases-jvm/0.5.1-SNAPSHOT/orx-shader-phrases-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-serialization-core-jvm/1.3.1/a108188c00995a2b0ce1dcb19bb5f2d7f7737017/kotlinx-serialization-core-jvm-1.3.1.jar:/Users/avneeshsarwate/.gradle/caches/modules-2/files-2.1/com.github.ricardomatias/delaunator/1.0.2/d9882fc9d276c7d8586385a84cba9b5273d5105f/delaunator-1.0.2.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-dds-jvm/0.5.1-SNAPSHOT/openrndr-dds-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-binpack-jvm/0.5.1-SNAPSHOT/openrndr-binpack-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/extra/orx-hash-grid-jvm/0.5.1-SNAPSHOT/orx-hash-grid-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-tessellation-jvm/0.5.1-SNAPSHOT/openrndr-tessellation-jvm-0.5.1-SNAPSHOT.jar:/Users/avneeshsarwate/.m2/repository/org/openrndr/openrndr-kartifex-jvm/0.5.1-SNAPSHOT/openrndr-kartifex-jvm-0.5.1-SNAPSHOT.jar TemplateLiveProgramKt
Warning: Running on macOS without -XstartOnFirstThread JVM argument. Restarting JVM with -XstartOnFirstThread.
INFO [main] o.e.o.ScriptObjectLoaderJSR233 ↘ creating scripting engine took 17ms
INFO [main] o.o.e.o.Olive ↘ change detected, reloading script
INFO [main] o.o.Application ↘ no preload class found 'org.openrndr.Preload'
INFO [main] o.o.i.g.ApplicationGLFWGL3 ↘ 3.4.0 Cocoa NSGL Null EGL OSMesa monotonic dynamic
INFO [main] o.o.i.g.ApplicationGLFWGL3 ↘ OpenGL vendor: Apple
INFO [main] o.o.i.g.ApplicationGLFWGL3 ↘ OpenGL renderer: Apple M1 Max
INFO [main] o.o.i.g.ApplicationGLFWGL3 ↘ OpenGL version: 4.1 Metal - 76.3
javax.script.ScriptException: ERROR Back-end (JVM) Internal error: wrong bytecode generated
@Lorg/jetbrains/annotations/NotNull;() // invisible
// annotable parameter count: 1 (visible)
// annotable parameter count: 1 (invisible)
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
L0
ALOAD 1
LDC "program"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkNotNullParameter (Ljava/lang/Object;Ljava/lang/String;)V
L1
LINENUMBER 17 L1
ALOAD 1
ASTORE 2
NOP
L2
NOP
L3
ALOAD 2
CHECKCAST org/openrndr/extra/olive/OliveProgram
ASTORE 3
INVOKESTATIC kotlin/jvm/internal/InlineMarker.beforeInlineCall ()V
L4
ICONST_0
ISTORE 4
L5
LINENUMBER 19 L5
L6
LINENUMBER 55 L6
L7
LINENUMBER 61 L7
NEW kotlin/jvm/internal/Ref$ObjectRef
DUP
INVOKESPECIAL kotlin/jvm/internal/Ref$ObjectRef.<init> ()V
ASTORE 5
ALOAD 5
NEW ScriptingHost5768e2fc_Line_0$1$1$FeedbackTarget
DUP
ALOAD 1
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getWidth ()I
ALOAD 1
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getHeight ()I
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$1$FeedbackTarget.<init> (II)V
PUTFIELD kotlin/jvm/internal/Ref$ObjectRef.element : Ljava/lang/Object;
L8
LINENUMBER 62 L8
NEW kotlin/jvm/internal/Ref$ObjectRef
DUP
INVOKESPECIAL kotlin/jvm/internal/Ref$ObjectRef.<init> ()V
ASTORE 6
ALOAD 6
ALOAD 3
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getWidth ()I
ALOAD 3
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getHeight ()I
DCONST_0
ACONST_NULL
ACONST_NULL
GETSTATIC ScriptingHost5768e2fc_Line_0$1$1$brushTarget$1.INSTANCE : LScriptingHost5768e2fc_Line_0$1$1$brushTarget$1;
CHECKCAST kotlin/jvm/functions/Function1
BIPUSH 28
ACONST_NULL
INVOKESTATIC org/openrndr/draw/RenderTargetKt.renderTarget$default (IIDLorg/openrndr/draw/BufferMultisample;Lorg/openrndr/draw/Session;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/openrndr/draw/RenderTarget;
PUTFIELD kotlin/jvm/internal/Ref$ObjectRef.element : Ljava/lang/Object;
L9
LINENUMBER 64 L9
GETSTATIC ScriptingHost5768e2fc_Line_0$1$1$1.INSTANCE : LScriptingHost5768e2fc_Line_0$1$1$1;
ASTORE 7
L10
LINENUMBER 88 L10
BIPUSH 10
ISTORE 8
L11
LINENUMBER 89 L11
NOP
L12
NEW java/util/ArrayList
DUP
ILOAD 8
INVOKESPECIAL java/util/ArrayList.<init> (I)V
ASTORE 9
ICONST_0
ISTORE 10
L13
ILOAD 10
ILOAD 8
IF_ICMPGE L14
ILOAD 10
ISTORE 11
IINC 10 1
ILOAD 11
ISTORE 12
ALOAD 9
ILOAD 12
INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;
CHECKCAST java/lang/Number
INVOKEVIRTUAL java/lang/Number.intValue ()I
ISTORE 13
L15
LINENUMBER 118 L15
ASTORE 14
L16
ICONST_0
ISTORE 15
L17
LINENUMBER 89 L17
NEW ScriptingHost5768e2fc_Line_0$1$1$AnimatedCircle
DUP
ALOAD 3
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$1$AnimatedCircle.<init> (LScriptingHost5768e2fc_Line_0$1$1;Lorg/openrndr/extra/olive/OliveProgram;)V
L18
NOP
GOTO L19
L19
ASTORE 16
ALOAD 14
ALOAD 16
L20
LINENUMBER 89 L20
INVOKEVIRTUAL java/util/ArrayList.add (Ljava/lang/Object;)Z
POP
GOTO L13
L14
ALOAD 9
CHECKCAST java/util/List
L21
NOP
GOTO L22
L22
LINENUMBER 89 L22
ASTORE 17
L23
LINENUMBER 91 L23
ALOAD 3
CHECKCAST org/openrndr/Program
ACONST_NULL
NEW ScriptingHost5768e2fc_Line_0$1$$special$$inlined$apply$lambda$1
DUP
ALOAD 5
ALOAD 6
ALOAD 17
ALOAD 1
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$$special$$inlined$apply$lambda$1.<init> (Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;Lorg/openrndr/extra/olive/OliveProgram;)V
CHECKCAST kotlin/jvm/functions/Function1
ICONST_1
ACONST_NULL
INVOKESTATIC org/openrndr/Program.extend$default (Lorg/openrndr/Program;Lorg/openrndr/ExtensionStage;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
L24
LINENUMBER 113 L24
ALOAD 3
NEW FPSDisplay
DUP
INVOKESPECIAL FPSDisplay.<init> ()V
CHECKCAST org/openrndr/Extension
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.extend (Lorg/openrndr/Extension;)Lorg/openrndr/Extension;
POP
L25
LINENUMBER 115 L25
NOP
GOTO L26
L26
GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;
INVOKESTATIC kotlin/jvm/internal/InlineMarker.afterInlineCall ()V
L27
LINENUMBER 17 L27
POP
L28
ALOAD 2
NOP
GOTO L29
L29
CHECKCAST org/openrndr/extra/olive/OliveProgram
L30
ARETURN
L31
LOCALVARIABLE it I L16 L19 13
LOCALVARIABLE $i$a$-List-ScriptingHost5768e2fc_Line_0$1$1$animatedCircles$1 I L17 L19 15
LOCALVARIABLE animatedCircles Ljava/util/List; L23 L25 17
LOCALVARIABLE numCircles I L11 L25 8
LOCALVARIABLE $fun$bindTrailShader$1 LScriptingHost5768e2fc_Line_0$1$1$1; L10 L25 7
LOCALVARIABLE brushTarget Lkotlin/jvm/internal/Ref$ObjectRef; L9 L25 6
LOCALVARIABLE fdbkTarget Lkotlin/jvm/internal/Ref$ObjectRef; L8 L25 5
LOCALVARIABLE $this$apply Lorg/openrndr/extra/olive/OliveProgram; L4 L26 3
LOCALVARIABLE $i$a$-apply-ScriptingHost5768e2fc_Line_0$1$1 I L5 L26 4
LOCALVARIABLE this LScriptingHost5768e2fc_Line_0$1; L0 L31 0
LOCALVARIABLE program Lorg/openrndr/extra/olive/OliveProgram; L0 L31 1
MAXSTACK = 10
MAXLOCALS = 18
File being compiled: (16,1) in ScriptingHost5768e2fc_Line_0.kts
The root cause org.jetbrains.kotlin.codegen.CompilationException was thrown at: org.jetbrains.kotlin.codegen.TransformationMethodVisitor.visitEnd(TransformationMethodVisitor.kt:89): org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: wrong bytecode generated
@Lorg/jetbrains/annotations/NotNull;() // invisible
// annotable parameter count: 1 (visible)
// annotable parameter count: 1 (invisible)
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
L0
ALOAD 1
LDC "program"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkNotNullParameter (Ljava/lang/Object;Ljava/lang/String;)V
L1
LINENUMBER 17 L1
ALOAD 1
ASTORE 2
NOP
L2
NOP
L3
ALOAD 2
CHECKCAST org/openrndr/extra/olive/OliveProgram
ASTORE 3
INVOKESTATIC kotlin/jvm/internal/InlineMarker.beforeInlineCall ()V
L4
ICONST_0
ISTORE 4
L5
LINENUMBER 19 L5
L6
LINENUMBER 55 L6
L7
LINENUMBER 61 L7
NEW kotlin/jvm/internal/Ref$ObjectRef
DUP
INVOKESPECIAL kotlin/jvm/internal/Ref$ObjectRef.<init> ()V
ASTORE 5
ALOAD 5
NEW ScriptingHost5768e2fc_Line_0$1$1$FeedbackTarget
DUP
ALOAD 1
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getWidth ()I
ALOAD 1
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getHeight ()I
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$1$FeedbackTarget.<init> (II)V
PUTFIELD kotlin/jvm/internal/Ref$ObjectRef.element : Ljava/lang/Object;
L8
LINENUMBER 62 L8
NEW kotlin/jvm/internal/Ref$ObjectRef
DUP
INVOKESPECIAL kotlin/jvm/internal/Ref$ObjectRef.<init> ()V
ASTORE 6
ALOAD 6
ALOAD 3
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getWidth ()I
ALOAD 3
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.getHeight ()I
DCONST_0
ACONST_NULL
ACONST_NULL
GETSTATIC ScriptingHost5768e2fc_Line_0$1$1$brushTarget$1.INSTANCE : LScriptingHost5768e2fc_Line_0$1$1$brushTarget$1;
CHECKCAST kotlin/jvm/functions/Function1
BIPUSH 28
ACONST_NULL
INVOKESTATIC org/openrndr/draw/RenderTargetKt.renderTarget$default (IIDLorg/openrndr/draw/BufferMultisample;Lorg/openrndr/draw/Session;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/openrndr/draw/RenderTarget;
PUTFIELD kotlin/jvm/internal/Ref$ObjectRef.element : Ljava/lang/Object;
L9
LINENUMBER 64 L9
GETSTATIC ScriptingHost5768e2fc_Line_0$1$1$1.INSTANCE : LScriptingHost5768e2fc_Line_0$1$1$1;
ASTORE 7
L10
LINENUMBER 88 L10
BIPUSH 10
ISTORE 8
L11
LINENUMBER 89 L11
NOP
L12
NEW java/util/ArrayList
DUP
ILOAD 8
INVOKESPECIAL java/util/ArrayList.<init> (I)V
ASTORE 9
ICONST_0
ISTORE 10
L13
ILOAD 10
ILOAD 8
IF_ICMPGE L14
ILOAD 10
ISTORE 11
IINC 10 1
ILOAD 11
ISTORE 12
ALOAD 9
ILOAD 12
INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;
CHECKCAST java/lang/Number
INVOKEVIRTUAL java/lang/Number.intValue ()I
ISTORE 13
L15
LINENUMBER 118 L15
ASTORE 14
L16
ICONST_0
ISTORE 15
L17
LINENUMBER 89 L17
NEW ScriptingHost5768e2fc_Line_0$1$1$AnimatedCircle
DUP
ALOAD 3
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$1$AnimatedCircle.<init> (LScriptingHost5768e2fc_Line_0$1$1;Lorg/openrndr/extra/olive/OliveProgram;)V
L18
NOP
GOTO L19
L19
ASTORE 16
ALOAD 14
ALOAD 16
L20
LINENUMBER 89 L20
INVOKEVIRTUAL java/util/ArrayList.add (Ljava/lang/Object;)Z
POP
GOTO L13
L14
ALOAD 9
CHECKCAST java/util/List
L21
NOP
GOTO L22
L22
LINENUMBER 89 L22
ASTORE 17
L23
LINENUMBER 91 L23
ALOAD 3
CHECKCAST org/openrndr/Program
ACONST_NULL
NEW ScriptingHost5768e2fc_Line_0$1$$special$$inlined$apply$lambda$1
DUP
ALOAD 5
ALOAD 6
ALOAD 17
ALOAD 1
INVOKESPECIAL ScriptingHost5768e2fc_Line_0$1$$special$$inlined$apply$lambda$1.<init> (Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;Lorg/openrndr/extra/olive/OliveProgram;)V
CHECKCAST kotlin/jvm/functions/Function1
ICONST_1
ACONST_NULL
INVOKESTATIC org/openrndr/Program.extend$default (Lorg/openrndr/Program;Lorg/openrndr/ExtensionStage;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
L24
LINENUMBER 113 L24
ALOAD 3
NEW FPSDisplay
DUP
INVOKESPECIAL FPSDisplay.<init> ()V
CHECKCAST org/openrndr/Extension
INVOKEVIRTUAL org/openrndr/extra/olive/OliveProgram.extend (Lorg/openrndr/Extension;)Lorg/openrndr/Extension;
POP
L25
LINENUMBER 115 L25
NOP
GOTO L26
L26
GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;
INVOKESTATIC kotlin/jvm/internal/InlineMarker.afterInlineCall ()V
L27
LINENUMBER 17 L27
POP
L28
ALOAD 2
NOP
GOTO L29
L29
CHECKCAST org/openrndr/extra/olive/OliveProgram
L30
ARETURN
L31
LOCALVARIABLE it I L16 L19 13
LOCALVARIABLE $i$a$-List-ScriptingHost5768e2fc_Line_0$1$1$animatedCircles$1 I L17 L19 15
LOCALVARIABLE animatedCircles Ljava/util/List; L23 L25 17
LOCALVARIABLE numCircles I L11 L25 8
LOCALVARIABLE $fun$bindTrailShader$1 LScriptingHost5768e2fc_Line_0$1$1$1; L10 L25 7
LOCALVARIABLE brushTarget Lkotlin/jvm/internal/Ref$ObjectRef; L9 L25 6
LOCALVARIABLE fdbkTarget Lkotlin/jvm/internal/Ref$ObjectRef; L8 L25 5
LOCALVARIABLE $this$apply Lorg/openrndr/extra/olive/OliveProgram; L4 L26 3
LOCALVARIABLE $i$a$-apply-ScriptingHost5768e2fc_Line_0$1$1 I L5 L26 4
LOCALVARIABLE this LScriptingHost5768e2fc_Line_0$1; L0 L31 0
LOCALVARIABLE program Lorg/openrndr/extra/olive/OliveProgram; L0 L31 1
MAXSTACK = 10
MAXLOCALS = 18
File being compiled: (16,1) in ScriptingHost5768e2fc_Line_0.kts
The root cause org.jetbrains.kotlin.codegen.CompilationException was thrown at: org.jetbrains.kotlin.codegen.TransformationMethodVisitor.visitEnd(TransformationMethodVisitor.kt:89)
at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:104)
at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:63)
at kotlin.script.experimental.jvmhost.jsr223.KotlinJsr223ScriptEngineImpl.compileAndEval(KotlinJsr223ScriptEngineImpl.kt:95)
at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at org.openrndr.extra.olive.ScriptObjectLoader$load$1.invoke(ScriptObjectLoaderJSR233.kt:38)
at org.openrndr.extra.olive.ScriptObjectLoader.safeEval(ScriptObjectLoaderJSR233.kt:29)
at org.openrndr.extra.olive.Olive$setup$setupScript$1$futureFunc$1.invokeSuspend(Olive.kt:203)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
INFO [main] ↘ Set -Dorg.openrndr.exceptions=JVM for conventional exception-handling
├─ kotlinx.coroutines.scheduling.CoroutineScheduler.Worker.run(CoroutineScheduler.kt:665)
├─ kotlinx.coroutines.scheduling.CoroutineScheduler.Worker.runWorker(CoroutineScheduler.kt:678)
├─ kotlinx.coroutines.scheduling.CoroutineScheduler.Worker.executeTask(CoroutineScheduler.kt:750)
├─ kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
├─ kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
├─ kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
│ org.openrndr.extra.olive.Olive.setup.setupScript.{ :P }.futureFunc.{ }.invokeSuspend(Olive.kt:203)
│ org.openrndr.extra.olive.ScriptObjectLoader.safeEval(ScriptObjectLoaderJSR233.kt:32)
↑ Cannot load script (LoadException)
├─ org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:104)
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.olive.oliveProgram
import org.openrndr.animatable.Animatable
import org.openrndr.animatable.easing.Easing
import org.openrndr.draw.*
import org.openrndr.extra.noise.uniform
fun main(args: Array<String>) {
application {
configure {
width = (1920 * 0.7).toInt()
height = (1080 * 0.7).toInt()
}
oliveProgram {
class AnimatedCircle : Animatable() {
var x = 0.0 //bug when set to Math.random() * program.width or random(0.0, program.width.toDouble())
var y = 0.0 //bug when set to Math.random() * program.height or random(0.0, program.height.toDouble())
var radius = 8.0
var latch = 0.0
fun shrink() {
// -- first stop any running animations for the radius property
::radius.cancel()
::radius.animate(3.0, 50, Easing.CubicInOut)
}
fun grow() {
::radius.cancel()
::radius.animate(Double.uniform(5.0, 8.0), 800, Easing.CubicInOut)
}
fun jump() {
::x.cancel()
::y.cancel()
::x.animate(Double.uniform(0.0, width.toDouble()), 3700, Easing.CubicInOut)
::y.animate(Double.uniform(0.0, height.toDouble()), 4900, Easing.CubicInOut)
}
fun update() {
updateAnimation()
if (!::latch.hasAnimations) {
val duration = Double.uniform(100.0, 700.0).toLong()
::latch.animate(1.0, duration).completed.listen {
val action = listOf(::shrink, ::grow, ::jump).random()
action()
}
}
}
}
class FeedbackTarget(width: Int, height: Int) {
var backbuffer = renderTarget(width, height) { colorBuffer() }
var target = renderTarget(width, height) { colorBuffer() }
fun swapBuffers() { backbuffer = target.also { target = backbuffer } }
}
var fdbkTarget = FeedbackTarget(program.width, program.height)
var brushTarget = renderTarget(width, height) { colorBuffer() }
fun bindTrailShader(brush: ColorBuffer, backbuffer: ColorBuffer): ShadeStyle {
return shadeStyle {
fragmentTransform = """
vec2 texCoord = c_boundsPosition.xy;
// texCoord.y *= 2.;
vec2 bbN = vec2(texCoord.x, 1.-texCoord.y);
vec4 bb = texture(p_backbuffer, bbN);
vec4 brush = texture(p_brush, texCoord);
float decay = 0.01;
float lastFdbk = bb.a;
float drawBrush = brush.r > 0 ? 1 : 0;
vec4 debugCol = brush.r > 0 ? vec4(1,0,0,1) : vec4(0,1,0,1);
vec4 fdbkCol = lastFdbk > 0.1 ? vec4(bb.rgb, lastFdbk-decay) : vec4(0, 0, 0, 1);
debugCol = vec4(texCoord, 0, 1);
debugCol = texCoord.y < 0.5 ? vec4(1,0,0,1) : vec4(0,1,0,1);
vec4 outCol = mix(fdbkCol, brush, drawBrush);
outCol = mix(brush, bb, 0.98);
x_fill = outCol;
""".trimIndent()
parameter("brush", brush)
parameter("backbuffer", backbuffer)
}
}
val numCircles = 10
val animatedCircles = List(numCircles) { AnimatedCircle() }
extend {
fdbkTarget.swapBuffers()
drawer.isolatedWithTarget(brushTarget) {
drawer.clear(ColorRGBa.BLACK)
drawer.fill = ColorRGBa.PINK
drawer.stroke = null
animatedCircles.forEach { ac -> ac.update() }
drawer.circles {
// fill = ColorRGBa.PINK.shade(Math.random())
animatedCircles.forEach { ac -> circle(ac.x, ac.y, ac.radius) }
}
}
drawer.isolatedWithTarget(fdbkTarget.target) {
drawer.clear(ColorRGBa.BLACK)
drawer.shadeStyle = bindTrailShader(brushTarget.colorBuffer(0), fdbkTarget.backbuffer.colorBuffer(0))
drawer.rectangle(0.0, 0.0, program.width.toDouble(), program.height.toDouble())
}
drawer.image(fdbkTarget.target.colorBuffer(0))
}
extend(FPSDisplay())
}
}
}
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.olive.oliveProgram
import org.openrndr.animatable.Animatable
import org.openrndr.animatable.easing.Easing
import org.openrndr.draw.*
import org.openrndr.extra.noise.uniform
fun main(args: Array<String>) {
application {
configure {
width = (1920 * 0.7).toInt()
height = (1080 * 0.7).toInt()
}
oliveProgram {
class AnimatedCircle(x: Double, y: Double) : Animatable() {
var x = x
var y = y
var radius = 8.0
var latch = 0.0
fun shrink() {
// -- first stop any running animations for the radius property
::radius.cancel()
::radius.animate(3.0, 50, Easing.CubicInOut)
}
fun grow() {
::radius.cancel()
::radius.animate(Double.uniform(5.0, 8.0), 800, Easing.CubicInOut)
}
fun jump() {
::x.cancel()
::y.cancel()
::x.animate(Double.uniform(0.0, width.toDouble()), 3700, Easing.CubicInOut)
::y.animate(Double.uniform(0.0, height.toDouble()), 4900, Easing.CubicInOut)
}
fun update() {
updateAnimation()
if (!::latch.hasAnimations) {
val duration = Double.uniform(100.0, 700.0).toLong()
::latch.animate(1.0, duration).completed.listen {
val action = listOf(::shrink, ::grow, ::jump).random()
action()
}
}
}
}
class FeedbackTarget(width: Int, height: Int) {
var backbuffer = renderTarget(width, height) { colorBuffer() }
var target = renderTarget(width, height) { colorBuffer() }
fun swapBuffers() { backbuffer = target.also { target = backbuffer } }
}
var fdbkTarget = FeedbackTarget(program.width, program.height)
var brushTarget = renderTarget(width, height) { colorBuffer() }
fun bindTrailShader(brush: ColorBuffer, backbuffer: ColorBuffer): ShadeStyle {
return shadeStyle {
fragmentTransform = """
vec2 texCoord = c_boundsPosition.xy;
// texCoord.y *= 2.;
vec2 bbN = vec2(texCoord.x, 1.-texCoord.y);
vec4 bb = texture(p_backbuffer, bbN);
vec4 brush = texture(p_brush, texCoord);
float decay = 0.01;
float lastFdbk = bb.a;
float drawBrush = brush.r > 0 ? 1 : 0;
vec4 debugCol = brush.r > 0 ? vec4(1,0,0,1) : vec4(0,1,0,1);
vec4 fdbkCol = lastFdbk > 0.1 ? vec4(bb.rgb, lastFdbk-decay) : vec4(0, 0, 0, 1);
debugCol = vec4(texCoord, 0, 1);
debugCol = texCoord.y < 0.5 ? vec4(1,0,0,1) : vec4(0,1,0,1);
vec4 outCol = mix(fdbkCol, brush, drawBrush);
outCol = mix(brush, bb, 0.98);
x_fill = outCol;
""".trimIndent()
parameter("brush", brush)
parameter("backbuffer", backbuffer)
}
}
val numCircles = 100
val w = program.width
val h = program.height
val animatedCircles = List(numCircles) { AnimatedCircle(Math.random()*w, Math.random()*h) }
extend {
fdbkTarget.swapBuffers()
drawer.isolatedWithTarget(brushTarget) {
drawer.clear(ColorRGBa.BLACK)
drawer.fill = ColorRGBa.PINK
drawer.stroke = null
animatedCircles.forEach { ac -> ac.update() }
drawer.circles {
// fill = ColorRGBa.PINK.shade(Math.random())
animatedCircles.forEach { ac -> circle(ac.x, ac.y, ac.radius) }
}
}
drawer.isolatedWithTarget(fdbkTarget.target) {
drawer.clear(ColorRGBa.BLACK)
drawer.shadeStyle = bindTrailShader(brushTarget.colorBuffer(0), fdbkTarget.backbuffer.colorBuffer(0))
drawer.rectangle(0.0, 0.0, program.width.toDouble(), program.height.toDouble())
}
drawer.image(fdbkTarget.target.colorBuffer(0))
}
extend(FPSDisplay())
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment