basic checkerboard shader
This commit is contained in:
@@ -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<BitmapFilter> 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)])))
|
20
src/kiss_flixel/shaders/CheckerBoard.frag
Normal file
20
src/kiss_flixel/shaders/CheckerBoard.frag
Normal file
@@ -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;
|
||||
}
|
Reference in New Issue
Block a user