shader dumbshit in progress IGNORE FOR NOW!

This commit is contained in:
Cameron Taylor 2021-03-20 04:33:44 -04:00
parent ba69b6f3be
commit 9aa59d679e
3 changed files with 104 additions and 0 deletions

View File

@ -1,9 +1,12 @@
package;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.graphics.frames.FlxAtlasFrames;
import flixel.math.FlxMath;
import flixel.util.FlxColor;
import flixel.util.FlxTimer;
import shaderslmfao.ColorSwap;
using StringTools;
@ -101,6 +104,17 @@ class Note extends FlxSprite
setGraphicSize(Std.int(width * 0.7));
updateHitbox();
antialiasing = true;
var colorSwap = new ColorSwap();
// shader = colorSwap.shader;
// colorSwap.colorToReplace = 0xFFF9393F;
// colorSwap.newColor = 0xFF00FF00;
// color = FlxG.random.color();
// color.saturation *= 4;
// replaceColor(0xFFC1C1C1, FlxColor.RED);
}
switch (noteData)

View File

@ -0,0 +1,90 @@
package shaderslmfao;
import flixel.system.FlxAssets.FlxShader;
import flixel.util.FlxColor;
class ColorSwap
{
public var shader(default, null):ColorSwapShader;
public var colorToReplace(default, set):FlxColor;
public var newColor(default, set):FlxColor;
public function new():Void
{
shader = new ColorSwapShader();
shader.colorOld.value = [];
shader.colorNew.value = [];
}
function set_colorToReplace(color:FlxColor):FlxColor
{
colorToReplace = color;
shader.colorOld.value[0] = color.red;
shader.colorOld.value[1] = color.green;
shader.colorOld.value[2] = color.blue;
return color;
}
function set_newColor(color:FlxColor):FlxColor
{
newColor = color;
shader.colorNew.value[0] = color.red;
shader.colorNew.value[1] = color.green;
shader.colorNew.value[2] = color.blue;
return color;
}
}
class ColorSwapShader extends FlxShader
{
@:glFragmentSource('
#pragma header
uniform vec3 colorOld;
uniform vec3 colorNew;
uniform float u_time;
vec3 normalizeColor(vec3 color)
{
return vec3(
color[0] / 255.0,
color[1] / 255.0,
color[2] / 255.0
);
}
vec3 hueShift(vec3 color, float hue) {
const vec3 k = vec3(0.57735, 0.57735, 0.57735);
float cosAngle = cos(hue);
return vec3(color * cosAngle + cross(k, color) * sin(hue) + k * dot(k, color) * (1.0 - cosAngle));
}
void main()
{
vec4 pixel = texture2D(bitmap, openfl_TextureCoordv);
vec3 eps = vec3(0.02, 0.02, 0.02);
vec3 colorOldNormalized = normalizeColor(colorOld);
vec3 colorNewNormalized = normalizeColor(colorNew);
if (all(greaterThanEqual(pixel, vec4(colorOldNormalized - eps, 1.0)) ) && all(lessThanEqual(pixel, vec4(colorOldNormalized + eps, 1.0)) )
)
{
pixel = vec4(hueShift(colorOldNormalized, 0.7), 1.0);
}
gl_FragColor = pixel;
}
')
public function new()
{
super();
}
}