Funkin/source/funkin/shaderslmfao/LeftMaskShader.hx
2023-01-22 22:25:45 -05:00

76 lines
1.5 KiB
Haxe

package funkin.shaderslmfao;
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];
}
}