From a77471ae984e1a2b98885ad1c6d1200608faf3c1 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 4 Feb 2024 14:47:42 -0700 Subject: [PATCH] basic checkerboard shader --- shader-test/source/PlayState.kiss | 8 ++++++-- src/kiss_flixel/shaders/CheckerBoard.frag | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/kiss_flixel/shaders/CheckerBoard.frag diff --git a/shader-test/source/PlayState.kiss b/shader-test/source/PlayState.kiss index 82666d8..dcd6e0c 100644 --- a/shader-test/source/PlayState.kiss +++ b/shader-test/source/PlayState.kiss @@ -14,14 +14,18 @@ (bg.setGraphicSize FlxG.width FlxG.height) (bg.screenCenter) (add bg)) - (set shader (new CShader)) - (set shader.data.invert.value [true]) + (set shader (new kiss_flixel.shaders.CheckerBoard)) + // (set shader.data.invert.value [true]) + (set shader.data.color1.value [1.0 1.0 1.0 1.0]) + (set shader.data.color2.value [0.0 0.0 0.0 1.0]) + (set shader.data.checkSize.value [64.0]) (let [:BitmapFilter filter (new ShaderFilter shader) :Array filters [filter]] (FlxG.camera.setFilters filters))) (method &override :Void update [:Float elapsed] (super.update elapsed) + (+= FlxG.camera.scroll.x 1) (when FlxG.keys.justPressed.SPACE (set shader.data.invert.value [!(first shader.data.invert.value)]))) \ No newline at end of file diff --git a/src/kiss_flixel/shaders/CheckerBoard.frag b/src/kiss_flixel/shaders/CheckerBoard.frag new file mode 100644 index 0000000..487414b --- /dev/null +++ b/src/kiss_flixel/shaders/CheckerBoard.frag @@ -0,0 +1,20 @@ +#pragma header + +uniform vec4 color1 = vec4(1.0, 1.0, 1.0, 1.0); +uniform vec4 color2 = vec4(0.0, 0.0, 0.0, 1.0); +uniform float checkSize = 64; + +void main() +{ + vec2 position = openfl_TextureCoordv * iResolution; + float row = floor(position.y / checkSize); + float col = floor(position.x / checkSize); + + bool oddRow = mod(row, 2) == 1; + bool oddCol = mod(col, 2) == 1; + + vec4 oddColor = oddRow ? color1 : color2; + vec4 evenColor = oddRow ? color2 : color1; + + gl_FragColor = oddCol ? oddColor: evenColor; +} \ No newline at end of file