package vacation import org.openrndr.application import org.openrndr.color.* import org.openrndr.draw.* import org.openrndr.extra.noise.filters.SimplexNoise3D import org.openrndr.math.Vector3 import phenax.utils.* fun main() = application { recordDuration(5.seconds()) if (recordingEnabled || screenshotEnabled) { configure { width = 1920 height = 1080 windowResizable = false } } else { configure { width = 640 height = 360 windowResizable = false } } oliveProgram { val cs by liveComputeShader("vacation") val outputBuffer = colorBuffer(width, height, type = ColorType.UINT8) val size = Math.max(width, height) * 2 val noiseBuffer = colorBuffer(size, size, type = ColorType.UINT8) val noiseFilter = SimplexNoise3D() noiseFilter.scale = Vector3.ONE * 2.4 noiseFilter.octaves = 8 noiseFilter.premultipliedAlpha = true extend { noiseFilter.seed = Vector3(0.05, 0.01, 0.001) noiseFilter.apply(emptyArray(), noiseBuffer) cs.image("noise_texture", 1, noiseBuffer.imageBinding(0, ImageAccess.READ)) cs.uniform("seconds", seconds) cs.image("output_image", 0, outputBuffer.imageBinding(0, ImageAccess.WRITE)) cs.execute(outputBuffer.width, outputBuffer.height, 1) drawer.image(outputBuffer) } } }