diff --git a/shader-test/source/CShader.f.glsl b/shader-test/source/CShader.f.glsl index 7ad6aad..a0cd622 100644 --- a/shader-test/source/CShader.f.glsl +++ b/shader-test/source/CShader.f.glsl @@ -1,7 +1,9 @@ #pragma header +uniform bool invert = true; + void main() { vec4 color = flixel_texture2D(bitmap, openfl_TextureCoordv); - gl_FragColor = vec4((1.0 - color.r) * color.a, (1.0 - color.g) * color.a, (1.0 - color.b) * color.a, color.a); + gl_FragColor = invert ? vec4((1.0 - color.r) * color.a, (1.0 - color.g) * color.a, (1.0 - color.b) * color.a, color.a) : color; } \ No newline at end of file diff --git a/shader-test/source/PlayState.kiss b/shader-test/source/PlayState.kiss index bbf87a7..82666d8 100644 --- a/shader-test/source/PlayState.kiss +++ b/shader-test/source/PlayState.kiss @@ -6,15 +6,22 @@ (extends FlxState) +(prop &mut shader null) + (method &override :Void create [] (super.create) (let [bg (new FlxSprite 0 0 "assets/images/apTestRoomEdited.jpg")] (bg.setGraphicSize FlxG.width FlxG.height) (bg.screenCenter) (add bg)) - (let [:BitmapFilter filter (new ShaderFilter (new CShader)) + (set shader (new CShader)) + (set shader.data.invert.value [true]) + (let [:BitmapFilter filter (new ShaderFilter shader) :Array filters [filter]] (FlxG.camera.setFilters filters))) (method &override :Void update [:Float elapsed] - (super.update elapsed)) \ No newline at end of file + (super.update elapsed) + + (when FlxG.keys.justPressed.SPACE + (set shader.data.invert.value [!(first shader.data.invert.value)]))) \ No newline at end of file