[orx-shade-styles] Add pattern shade styles

This commit is contained in:
Edwin Jakobs
2025-03-05 14:57:31 +01:00
parent 3661f5c82a
commit 331c28e52e
6 changed files with 433 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
package patterns
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.loadFont
import org.openrndr.draw.loadImage
import org.openrndr.extra.camera.Camera2D
import org.openrndr.extra.color.presets.NAVY
import org.openrndr.extra.imageFit.imageFit
import org.openrndr.extra.shadestyles.fills.FillUnits
import org.openrndr.extra.shadestyles.fills.patterns.pattern
fun main() = application {
configure {
width = 720
height = 720
}
program {
extend(Camera2D())
val image = loadImage("demo-data/images/image-001.png")
extend {
drawer.shadeStyle = pattern {
backgroundColor = ColorRGBa.NAVY
foregroundColor = ColorRGBa.WHITE
patternUnits = FillUnits.WORLD
parameter("time", seconds*0.1)
// domainWarpFunction = """vec2 patternDomainWarp(vec2 uv) { return uv + vec2(cos(uv.y * 0.1 + p_time), sin(uv.x * 0.1 + p_time)) * 30.05; }"""
scale = 0.4
checkers {
}
}
//drawer.rectangle(drawer.bounds)
drawer.imageFit(image, drawer.bounds)
drawer.shadeStyle = pattern {
backgroundColor = ColorRGBa.NAVY
foregroundColor = ColorRGBa.WHITE
patternUnits = FillUnits.WORLD
parameter("time", seconds)
domainWarpFunction = """vec2 patternDomainWarp(vec2 uv) { return uv + vec2(cos(uv.y * 0.1 + p_time), sin(uv.x * 0.1 + p_time)) * 30.05; }"""
scale = 0.2
checkers {
}
}
drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 196.0)
drawer.text("Patterns", 10.0, height / 2.0)
//drawer.circle(drawer.bounds.center, 300.0)
}
}
}

View File

@@ -0,0 +1,37 @@
package patterns
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.loadFont
import org.openrndr.draw.loadImage
import org.openrndr.extra.camera.Camera2D
import org.openrndr.extra.color.presets.NAVY
import org.openrndr.extra.color.presets.PEACH_PUFF
import org.openrndr.extra.imageFit.imageFit
import org.openrndr.extra.shadestyles.fills.FillUnits
import org.openrndr.extra.shadestyles.fills.patterns.pattern
fun main() = application {
configure {
width = 720
height = 720
}
program {
extend(Camera2D())
extend {
drawer.shadeStyle = pattern {
backgroundColor = ColorRGBa.NAVY
foregroundColor = ColorRGBa.PEACH_PUFF
patternUnits = FillUnits.WORLD
parameter("time", seconds*0.1)
scale = 1.0
xorMod2 {
patternMod = 13
patternOffset = (seconds*1).toInt()
patternMask = 1
}
}
drawer.rectangle(drawer.bounds.scaledBy(100.0))
}
}
}

View File

@@ -0,0 +1,63 @@
package patterns
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.loadFont
import org.openrndr.draw.loadImage
import org.openrndr.extra.camera.Camera2D
import org.openrndr.extra.color.presets.DARK_GRAY
import org.openrndr.extra.color.presets.NAVY
import org.openrndr.extra.color.presets.PEACH_PUFF
import org.openrndr.extra.imageFit.imageFit
import org.openrndr.extra.shadestyles.fills.FillUnits
import org.openrndr.extra.shadestyles.fills.clip.clip
import org.openrndr.extra.shadestyles.fills.gradients.gradient
import org.openrndr.extra.shadestyles.fills.patterns.pattern
import kotlin.math.cos
fun main() = application {
configure {
width = 720
height = 720
}
program {
extend(Camera2D())
extend {
drawer.shadeStyle = pattern {
backgroundColor = ColorRGBa.DARK_GRAY
foregroundColor = ColorRGBa.PEACH_PUFF
patternUnits = FillUnits.WORLD
parameter("time", seconds*0.1)
scale = 0.2
crosses {
width = 1.0
weight = 0.2
rotation = seconds * 45.0
strokeWeight = cos(seconds) * 0.3 + 0.31
}
} + gradient<ColorRGBa> {
stops[1.0] = ColorRGBa.BLACK
stops[0.5] = ColorRGBa.WHITE
stops[0.0] = ColorRGBa.WHITE
conic { }
} + clip {
star {
sides = 36
sharpness = 0.1
clipOuter = 0.05
clipInner = -0.1
radius = 0.4
}
}
drawer.rectangle(drawer.bounds.offsetEdges(-50.0))
// drawer.fill = ColorRGBa.WHITE
// drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 196.0)
// drawer.text("Patterns", 10.0, height / 2.0)
}
}
}