Add checkers pattern
This commit is contained in:
25
orx-fx/src/main/kotlin/patterns/Checkers.kt
Normal file
25
orx-fx/src/main/kotlin/patterns/Checkers.kt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package org.openrndr.extra.fx.patterns
|
||||||
|
|
||||||
|
import org.openrndr.color.ColorRGBa
|
||||||
|
import org.openrndr.draw.Filter
|
||||||
|
import org.openrndr.draw.Shader
|
||||||
|
import org.openrndr.extra.fx.filterFragmentCode
|
||||||
|
import org.openrndr.extra.parameters.Description
|
||||||
|
import org.openrndr.extra.parameters.DoubleParameter
|
||||||
|
|
||||||
|
@Description("Checkers pattern")
|
||||||
|
class Checkers : Filter(Shader.createFromCode(Filter.filterVertexCode, filterFragmentCode("patterns/checkers.frag"))) {
|
||||||
|
var background: ColorRGBa by parameters
|
||||||
|
var foreground: ColorRGBa by parameters
|
||||||
|
@DoubleParameter("size", 0.0, 1.0)
|
||||||
|
var size: Double by parameters
|
||||||
|
@DoubleParameter("opacity", 0.0, 1.0)
|
||||||
|
var opacity: Double by parameters
|
||||||
|
|
||||||
|
init {
|
||||||
|
size = 1.0/64.0
|
||||||
|
opacity = 1.0
|
||||||
|
foreground = ColorRGBa.WHITE.shade(0.9)
|
||||||
|
background = ColorRGBa.WHITE.shade(0.8)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#version 330
|
||||||
|
|
||||||
|
in vec2 v_texCoord0;
|
||||||
|
uniform vec4 foreground;
|
||||||
|
uniform vec4 background;
|
||||||
|
uniform vec2 targetSize;
|
||||||
|
uniform float size;
|
||||||
|
uniform float opacity;
|
||||||
|
out vec4 o_color;
|
||||||
|
void main() {
|
||||||
|
float r = targetSize.x/targetSize.y;
|
||||||
|
vec2 uv = v_texCoord0-vec2(0.5);
|
||||||
|
uv.x *= r;
|
||||||
|
|
||||||
|
vec2 cell = (uv / size);
|
||||||
|
ivec2 cellIndex = ivec2(floor(cell));
|
||||||
|
vec2 cellUV = cell - cellIndex;
|
||||||
|
|
||||||
|
int c = (cellIndex.x + cellIndex.y) % 2;
|
||||||
|
vec2 w = fwidth(cell);
|
||||||
|
|
||||||
|
vec4 ca;
|
||||||
|
vec4 cb;
|
||||||
|
if (c == 0) {
|
||||||
|
ca = background;
|
||||||
|
cb = foreground;
|
||||||
|
} else {
|
||||||
|
ca = foreground;
|
||||||
|
cb = background;
|
||||||
|
}
|
||||||
|
float s = w.x;
|
||||||
|
float fx = smoothstep(s, 0.0, cellUV.x) + smoothstep(1.0-s, 1.0, cellUV.x);
|
||||||
|
float fy = smoothstep(s, 0.0, cellUV.y) + smoothstep(1.0-s, 1.0, cellUV.y);
|
||||||
|
|
||||||
|
o_color = mix(ca, cb, min(0.5, fx*0.5+ fy*0.5)) * opacity;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user