package funkin.graphics.shaders; import flixel.math.FlxRect; import flixel.system.FlxAssets.FlxShader; class LeftMaskShader extends FlxShader { public var swagMaskX(default, set):Float = 0; public var swagSprX(default, set):Float = 0; public var frameUV(default, set):FlxRect; function set_swagSprX(x:Float):Float { sprX.value[0] = x; return x; } function set_swagMaskX(x:Float):Float { maskX.value[0] = x; return x; } function set_frameUV(uv:FlxRect):FlxRect { trace("SETTING FRAMEUV"); trace(uv); uvFrameX.value[0] = uv.x; uvFrameY.value[0] = uv.y; return uv; } @:glFragmentSource(' #pragma header uniform float sprX; uniform float maskX; uniform float uvFrameX; uniform float uvFrameY; void main() { float cutOff = maskX - sprX; float sprPos = cutOff / openfl_TextureSize.x; vec2 uv = openfl_TextureCoordv.xy; vec4 color = flixel_texture2D(bitmap, uv); if (uv.x < sprPos + uvFrameX) { color = vec4(0.0, 0.0, 0.0, 0.0); } gl_FragColor = color; // vec4 testCol = vec4(openfl_Position.x, openfl_Position.y, openfl_Position.z, 1.0); //gl_FragColor = vec4(1.0, openfl_TextureSize.x, 1.0, 1.0); } ') public function new() { super(); sprX.value = [0]; maskX.value = [0]; uvFrameX.value = [0]; uvFrameY.value = [0]; } }