✨ Apply clang-format

This commit is contained in:
Simon Schneegans
2025-02-09 08:19:00 +01:00
parent 3ab1ffbc15
commit 91789d3617
8 changed files with 307 additions and 389 deletions
+44 -61
View File
@@ -39,7 +39,6 @@ uniform float uFadeOut;
uniform float uBlur; uniform float uBlur;
uniform vec2 uSeed; uniform vec2 uSeed;
/* /*
this controls the end shape this controls the end shape
-5.0 large Star -5.0 large Star
@@ -51,13 +50,12 @@ this controls the end shape
*/ */
uniform float uEdgeShape; uniform float uEdgeShape;
//the size of the edge color // the size of the edge color
uniform float uEdgeSize; uniform float uEdgeSize;
//soft <--> hard // soft <--> hard
uniform float uEdgeHardness; uniform float uEdgeHardness;
// A simple blur function // A simple blur function
vec4 blur(vec2 uv, float radius, float samples) { vec4 blur(vec2 uv, float radius, float samples) {
vec4 color = vec4(0.0); vec4 color = vec4(0.0);
@@ -79,25 +77,20 @@ void main() {
// This gradually dissolves from [1..0] from the outside to the center. We // This gradually dissolves from [1..0] from the outside to the center. We
// switch the direction for opening and closing. // switch the direction for opening and closing.
float progress = uForOpening ? uProgress : 1.0 - uProgress ; float progress = uForOpening ? uProgress : 1.0 - uProgress;
//adjusting for Gnome // adjusting for Gnome
if (uPadding > 0.0) if (uPadding > 0.0) {
{ progress = remap(progress, 0.0, ((uSize.x - (uPadding * 2.0)) / uSize.x), 0.0, 1.0);
progress = remap(
progress, 0.0, ((uSize.x - (uPadding*2.0)) / uSize.x)
,0.0, 1.0
);
} }
// Get the color from the window texture. // Get the color from the window texture.
vec4 oColor = getInputColor(iTexCoord.st); vec4 oColor = getInputColor(iTexCoord.st);
// Calculate the aspect ratio of the render area // Calculate the aspect ratio of the render area
float aspect = uSize.x / uSize.y; float aspect = uSize.x / uSize.y;
//standard uv // standard uv
vec2 uv = iTexCoord.st; vec2 uv = iTexCoord.st;
// tuv is for when progress is near 0 // tuv is for when progress is near 0
@@ -106,8 +99,8 @@ void main() {
tuv.x *= aspect; // Scale x-coordinate to match aspect ratio tuv.x *= aspect; // Scale x-coordinate to match aspect ratio
tuv += 0.5; // Shift UV coordinates back (from [0 to 1]) tuv += 0.5; // Shift UV coordinates back (from [0 to 1])
//mixing the UVs // mixing the UVs
uv = mix(tuv,uv,easeOutExpo(progress)); uv = mix(tuv, uv, easeOutExpo(progress));
// this controls the shape // this controls the shape
// -1.0 would be a diamond-ish // -1.0 would be a diamond-ish
@@ -115,60 +108,51 @@ void main() {
// 1.0 would be a circle // 1.0 would be a circle
// 2.0 will be sqircle // 2.0 will be sqircle
// 1000.0 will be very square // 1000.0 will be very square
float p = mix(uEdgeShape,1000.0, float p = mix(uEdgeShape, 1000.0, easeInExpo(progress));
easeInExpo(progress)
);
//this will be used later to make a mask // this will be used later to make a mask
float m = mix( float m =
0.0, mix(0.0, 1.0,
1.0, clamp(pow(abs(uv.x - 0.5) * 2.0, p) + pow(abs(uv.y - 0.5) * 2.0, p), 0.0, 1.0));
clamp(
pow(abs(uv.x-0.5)*2.0,p) + pow(abs(uv.y-0.5)*2.0,p),0.0,1.0
)
);
// this calculates the edge of the effect
//this calculates the edge of the effect float edge = abs(m - progress);
float edge = abs(m-progress) ; float e = mix(0.0, uEdgeSize, 1.0 - progress);
float e = mix(0.0,uEdgeSize,1.0 - progress); edge = remap(edge, 0.0, e, 0.0, 1.0);
edge = remap(edge,0.0,e,0.0,1.0); edge = clamp(edge, 0.0, 1.0);
edge = clamp(edge,0.0,1.0);
edge = 1.0 - edge; edge = 1.0 - edge;
//this is the mask // this is the mask
float mask = (m > progress) ? 0.0 : 1.0 ; float mask = (m > progress) ? 0.0 : 1.0;
//we need two of these // we need two of these
float mask0 = mix(mask,mask+edge,1.0 - uEdgeHardness); float mask0 = mix(mask, mask + edge, 1.0 - uEdgeHardness);
float mask1 = mix(edge,edge*mask,uEdgeHardness); float mask1 = mix(edge, edge * mask, uEdgeHardness);
//calculate color // calculate color
vec3 color = cos(progress*uColorSpeed+uv.xyx+vec3(0,2,4)).xyz; vec3 color = cos(progress * uColorSpeed + uv.xyx + vec3(0, 2, 4)).xyz;
//coloroffset // coloroffset
float colorOffset = (uRandomColorOffset) ? hash12(uSeed) : uColorOffset ; float colorOffset = (uRandomColorOffset) ? hash12(uSeed) : uColorOffset;
color = offsetHue(color, colorOffset + 0.10); color = offsetHue(color, colorOffset + 0.10);
//clamp and saturate // clamp and saturate
color = clamp(color * uColorSaturation,vec3(0.0),vec3(1.0)); color = clamp(color * uColorSaturation, vec3(0.0), vec3(1.0));
//save this for later // save this for later
float oColorAlpha = oColor.a; float oColorAlpha = oColor.a;
//blur-ify // blur-ify
if (uBlur > 0.0) if (uBlur > 0.0) {
{ // used for blur later ...
//used for blur later ... // calculate this before saturating it
//calculate this before saturating it float b = (color.r + color.g + color.b) / 3.0;
float b = (color.r + color.g + color.b)/3.0;
oColor = blur(iTexCoord.st, b * uBlur * mask1, 7.0);
oColor = blur( iTexCoord.st, b * uBlur * mask1, 7.0);
} }
//apply masks and colors // apply masks and colors
oColor.a *= mask0; oColor.a *= mask0;
//i was doing this to try to adjust for light mode // i was doing this to try to adjust for light mode
// i don;t like the way these make the effect look // i don;t like the way these make the effect look
// ...maybe a toggle for it later // ...maybe a toggle for it later
/* /*
@@ -182,17 +166,16 @@ void main() {
oColor.b = mix(oColor.b , 0.0, mask1 * oColorPercent); oColor.b = mix(oColor.b , 0.0, mask1 * oColorPercent);
*/ */
oColor += mask1 * vec4(color.rgb,1.0); oColor += mask1 * vec4(color.rgb, 1.0);
oColor.a *= oColorAlpha; oColor.a *= oColorAlpha;
//i want to fade out the last ~10% of the animation // i want to fade out the last ~10% of the animation
float lastfade = remap(progress,0.0,uFadeOut,0.0,1.0); float lastfade = remap(progress, 0.0, uFadeOut, 0.0, 1.0);
lastfade = clamp(lastfade,0.0,1.0); lastfade = clamp(lastfade, 0.0, 1.0);
lastfade = easeInSine(lastfade); lastfade = easeInSine(lastfade);
//apply the lastfade // apply the lastfade
oColor.a *= lastfade; oColor.a *= lastfade;
setOutputColor(oColor); setOutputColor(oColor);
} }
+125 -185
View File
@@ -35,15 +35,15 @@
// use 8BitStyle or not (sliding scale) // use 8BitStyle or not (sliding scale)
uniform float uScaleStyle; uniform float uScaleStyle;
//these are for the sparks // these are for the sparks
uniform float uSparkCount; uniform float uSparkCount;
uniform vec4 uSparkColor; uniform vec4 uSparkColor;
uniform float uSparkRotation; uniform float uSparkRotation;
//these are for the Rays // these are for the Rays
uniform vec4 uRaysColor; uniform vec4 uRaysColor;
//these are for the stars // these are for the stars
uniform float uRingCount; uniform float uRingCount;
uniform float uRingRotation; uniform float uRingRotation;
uniform float uStarCount; uniform float uStarCount;
@@ -56,19 +56,15 @@ uniform vec4 uStarColor3;
uniform vec4 uStarColor4; uniform vec4 uStarColor4;
uniform vec4 uStarColor5; uniform vec4 uStarColor5;
//seed // seed
uniform vec2 uSeed; uniform vec2 uSeed;
//helps to find the angle // helps to find the angle
vec3 getPosByAngle(float angle) vec3 getPosByAngle(float angle) { return vec3(cos(angle), sin(angle), 0); }
{
return vec3(cos(angle), sin(angle), 0);
}
// gets the mask of a Star
//gets the mask of a Star float getStar(vec2 uv, vec2 center, float npoints, float radiusRatio, float size,
float getStar(vec2 uv, vec2 center, float npoints, float radiusRatio, float size, float rotation) float rotation) {
{
float radiusMax = 1.0; float radiusMax = 1.0;
float radiusMin = radiusMax * radiusRatio; float radiusMin = radiusMax * radiusRatio;
@@ -79,17 +75,23 @@ float getStar(vec2 uv, vec2 center, float npoints, float radiusRatio, float size
// Offset rotation to ensure one point is always up when rotation = 0 // Offset rotation to ensure one point is always up when rotation = 0
rotation += PI / 2.0 - starangle / 1.0; rotation += PI / 2.0 - starangle / 1.0;
// Define the positions for the outer and inner points of the star's initial angle, rotated by `rotation` // Define the positions for the outer and inner points of the star's initial angle,
vec3 p0 = (radiusMax * size) * getPosByAngle(rotation); // Outer point, rotated by `rotation` // rotated by `rotation`
vec3 p1 = (radiusMin * size) * getPosByAngle(starangle + rotation); // Inner point, also rotated vec3 p0 =
(radiusMax * size) * getPosByAngle(rotation); // Outer point, rotated by `rotation`
vec3 p1 = (radiusMin * size) *
getPosByAngle(starangle + rotation); // Inner point, also rotated
// Calculate the position of the current fragment relative to the star's center // Calculate the position of the current fragment relative to the star's center
vec2 curPosuv = (uv - center); // Center UV coordinates, then scale to fit the star size vec2 curPosuv =
(uv - center); // Center UV coordinates, then scale to fit the star size
float curRadius = length(curPosuv); // Radius from center, no need to scale further float curRadius = length(curPosuv); // Radius from center, no need to scale further
float curPosAngle = atan(curPosuv.y, curPosuv.x) - rotation; // Calculate angle and adjust by `rotation` float curPosAngle =
atan(curPosuv.y, curPosuv.x) - rotation; // Calculate angle and adjust by `rotation`
// Determine the fractional position within the current star segment // Determine the fractional position within the current star segment
float a = fract(curPosAngle / starangle); // Fractional angle position within one segment float a =
fract(curPosAngle / starangle); // Fractional angle position within one segment
if (a >= 0.5) if (a >= 0.5)
a = 1.0 - a; // Ensure we are within the first half of the segment (symmetry) a = 1.0 - a; // Ensure we are within the first half of the segment (symmetry)
@@ -102,18 +104,17 @@ float getStar(vec2 uv, vec2 center, float npoints, float radiusRatio, float size
vec3 dir1 = curPos - p0; // Vector from outer point to current position vec3 dir1 = curPos - p0; // Vector from outer point to current position
// Use cross product to determine if `curPos` is inside the star's edge // Use cross product to determine if `curPos` is inside the star's edge
return step(0.0, cross(dir0, dir1).z); // Returns 1.0 if inside, 0.0 if outside (solid edge) return step(0.0,
cross(dir0, dir1).z); // Returns 1.0 if inside, 0.0 if outside (solid edge)
} }
// use to scale the window
//use to scale the window vec2 scaleUV(vec2 uv, vec2 scale) {
vec2 scaleUV(vec2 uv, vec2 scale)
{
// Put texture coordinate origin to center of window. // Put texture coordinate origin to center of window.
uv = uv * 2.0 - 1.0; uv = uv * 2.0 - 1.0;
//scale // scale
uv /= mix(vec2(1.0,1.0), vec2(0.0,0.0), scale); uv /= mix(vec2(1.0, 1.0), vec2(0.0, 0.0), scale);
// scale from center // scale from center
uv = uv * 0.5 + 0.5; uv = uv * 0.5 + 0.5;
@@ -121,40 +122,31 @@ vec2 scaleUV(vec2 uv, vec2 scale)
return uv; return uv;
} }
// this returns the Spark
float getSpark(vec2 uv, vec2 center, float brightness, float size, float rotation) {
brightness = clamp(brightness, 0.001, 1.0);
size = clamp(size, 0.001, 1.0);
float bn = mix(0.0, 0.07, brightness); // recalculate size
//this returns the Spark uv = (uv + vec2(0.5));
float getSpark(vec2 uv, vec2 center, float brightness, float size, float rotation) uv = (uv - center); // Center UV coordinates, then scale to fit the star size
{
brightness = clamp(brightness,0.001,1.0);
size = clamp(size,0.001,1.0);
float bn = mix(0.0,0.07,brightness); //recalculate size
uv = (uv + vec2(0.5)) ;
uv = (uv - center) ;//Center UV coordinates, then scale to fit the star size
uv = scaleUV(uv, vec2(1.0 - size)); uv = scaleUV(uv, vec2(1.0 - size));
uv = rotate(uv, rotation, vec2(0.5)); //rotate the UV uv = rotate(uv, rotation, vec2(0.5)); // rotate the UV
//this is basically the brightness // this is basically the brightness
float p = mix(-1.0,1000.0,easeInExpo(bn)); float p = mix(-1.0, 1000.0, easeInExpo(bn));
float m = mix( float m =
0.0, mix(0.0, 1.0,
1.0, clamp(pow(abs(uv.x - 0.5) * 2.0, p) + pow(abs(uv.y - 0.5) * 2.0, p), 0.0, 1.0));
clamp(
pow(abs(uv.x-0.5)*2.0,p) + pow(abs(uv.y-0.5)*2.0,p),0.0,1.0
)
);
float mask = easeInSine(1.0 - (m - bn)) - 0.004;
float mask = easeInSine(1.0 - (m - bn)) - 0.004 ; mask = clamp(mask, 0.0, 1.0);
mask = clamp(mask,0.0,1.0);
return mask; return mask;
} }
// returns the star's color
//returns the star's color
vec4 getStarColor(float v, float alpha) { vec4 getStarColor(float v, float alpha) {
// Clamp v to ensure it's in [0.0, 1.0] // Clamp v to ensure it's in [0.0, 1.0]
v = clamp(v, 0.0, 1.0); v = clamp(v, 0.0, 1.0);
@@ -202,8 +194,6 @@ vec4 getStarColor(float v, float alpha) {
return vec4(0.0, 0.0, 0.0, 1.0); return vec4(0.0, 0.0, 0.0, 1.0);
} }
// 1| __________ // 1| __________
// | / \ // | / \
// | / \ // | / \
@@ -215,196 +205,155 @@ graph above ... where t is close to 0, or 1 the result will fade to zero
i.e. this is just the function of power(x,p) shifted i.e. this is just the function of power(x,p) shifted
where x is time, and p is 2.0,4.0,8.0,10.0 ... or any positive even number where x is time, and p is 2.0,4.0,8.0,10.0 ... or any positive even number
*/ */
float zeroStartEnd(float t, float max_size, float power) float zeroStartEnd(float t, float max_size, float power) {
{ float s = -1.0 * pow((t - 0.5) / (0.5), power) + 1.0;
float s = -1.0 * pow((t-0.5)/(0.5),power)+1.0; s = clamp(s, 0.0, 1.0) * max_size;
s = clamp(s,0.0,1.0) * max_size;
return s; return s;
} }
//this gives us the jerky 8bit growth effect. // this gives us the jerky 8bit growth effect.
float eightBitScale(float progress) float eightBitScale(float progress) {
{
float scale = 1.0; float scale = 1.0;
if (progress <= 0.1) if (progress <= 0.1) {
{
scale = 0.25; scale = 0.25;
} } else if (progress <= 0.2) {
else if (progress <= 0.2)
{
scale = 0.5; scale = 0.5;
} } else if (progress <= 0.3) {
else if (progress <= 0.3)
{
scale = 0.25; scale = 0.25;
} } else if (progress <= 0.4) {
else if (progress <= 0.4)
{
scale = 0.5; scale = 0.5;
} } else if (progress <= 0.5) {
else if (progress <= 0.5)
{
scale = 0.25; scale = 0.25;
} } else if (progress <= 0.6) {
else if (progress <= 0.6)
{
scale = 0.5; scale = 0.5;
} } else if (progress <= 0.7) {
else if (progress <= 0.7)
{
scale = 1.0; scale = 1.0;
} } else if (progress <= 0.8) {
else if (progress <= 0.8)
{
scale = 0.25; scale = 0.25;
} } else if (progress <= 0.9) {
else if (progress <= 0.9)
{
scale = 0.5; scale = 0.5;
} }
return scale; return scale;
} }
// gets all the sparks
//gets all the sparks vec4 getSparks(float progress) {
vec4 getSparks(float progress) // the UV for this function
{
//the UV for this function
float aspect = uSize.x / uSize.y; float aspect = uSize.x / uSize.y;
vec2 uv = iTexCoord.st * vec2(aspect,1.0); vec2 uv = iTexCoord.st * vec2(aspect, 1.0);
//this will be the result to return // this will be the result to return
vec4 result = vec4(0.0); vec4 result = vec4(0.0);
// 0 at the edges // 0 at the edges
float xEdge = -1.0 * pow((uv.x-(aspect*0.5))/(aspect*0.5),8.0)+1.0; float xEdge = -1.0 * pow((uv.x - (aspect * 0.5)) / (aspect * 0.5), 8.0) + 1.0;
xEdge = clamp(xEdge,0.0,1.0); xEdge = clamp(xEdge, 0.0, 1.0);
//declare some variables before the loop // declare some variables before the loop
vec2 h = vec2(0.0); vec2 h = vec2(0.0);
float y = 0.0; float y = 0.0;
float x = 0.0; float x = 0.0;
//loop for each spart // loop for each spart
for (float xusp = 0.0; xusp < uSparkCount; ++xusp) for (float xusp = 0.0; xusp < uSparkCount; ++xusp) {
{ // calculate some variables
//calculate some variables
h = hash21(xusp + uSeed.x); h = hash21(xusp + uSeed.x);
y = mix( 0.0 - h.y , 1.0+(1.0-h.y) , progress); y = mix(0.0 - h.y, 1.0 + (1.0 - h.y), progress);
y = clamp(y,0.0,1.0); y = clamp(y, 0.0, 1.0);
x = 0.66 * sin(h.x * 6.28) ; x = 0.66 * sin(h.x * 6.28);
x += 0.5 * aspect; x += 0.5 * aspect;
//here we get the mask for the spark // here we get the mask for the spark
float a4ps = getSpark( float a4ps = getSpark(uv, vec2(x, y), // position (x, y)
uv, zeroStartEnd(y, 1.0, 4.0) * xEdge, // Brightness
vec2( x , y), //position (x, y) zeroStartEnd(y, 0.5, 4.0) * xEdge, // Size
zeroStartEnd(y,1.0 ,4.0) * xEdge ,//Brightness progress * 6.28 * float(uSparkRotation) // rotation
zeroStartEnd(y,0.5 ,4.0) * xEdge,//Size
progress * 6.28 * float(uSparkRotation) //rotation
); );
//set it to the results // set it to the results
result = alphaOver( result = alphaOver(
result, result, vec4(uSparkColor.r, uSparkColor.g, uSparkColor.b, uSparkColor.a * a4ps));
vec4(uSparkColor.r,uSparkColor.g,uSparkColor.b,uSparkColor.a * a4ps)
);
} }
// and we are returning the result // and we are returning the result
return result; return result;
} }
//gets the Rays // gets the Rays
vec4 getRays(float progress) vec4 getRays(float progress) {
{ // create the UV for it
//create the UV for it
vec2 rayUV = iTexCoord.st; vec2 rayUV = iTexCoord.st;
rayUV *= vec2(10.0,0.5); rayUV *= vec2(10.0, 0.5);
rayUV.y += progress * -1.0; rayUV.y += progress * -1.0;
rayUV.x += uSeed.y; rayUV.x += uSeed.y;
//gets the ray // gets the ray
float ray = simplex2D(rayUV); float ray = simplex2D(rayUV);
//0 around the edges // 0 around the edges
ray *= zeroStartEnd(iTexCoord.t,1.0,8.0); ray *= zeroStartEnd(iTexCoord.t, 1.0, 8.0);
ray *= zeroStartEnd(iTexCoord.s,1.0,8.0); ray *= zeroStartEnd(iTexCoord.s, 1.0, 8.0);
// 0 at the begining and end of the animation // 0 at the begining and end of the animation
ray *= zeroStartEnd(progress,1.0,8.0); ray *= zeroStartEnd(progress, 1.0, 8.0);
//adjust the numbers and clamp // adjust the numbers and clamp
ray = remap( ray = remap(ray * 1.10, 0.0, 1.0, -5.0, 1.0);
ray * 1.10,
0.0,1.0,
-5.0,1.0
);
float alpha = clamp(uRaysColor.a * ray,0.0,1.0); float alpha = clamp(uRaysColor.a * ray, 0.0, 1.0);
//return
return vec4(uRaysColor.r,uRaysColor.g,uRaysColor.b,alpha);
// return
return vec4(uRaysColor.r, uRaysColor.g, uRaysColor.b, alpha);
} }
//returns the stars // returns the stars
vec4 getStars(vec2 starUV, float aspect, float progress, float oColorAlpha) vec4 getStars(vec2 starUV, float aspect, float progress, float oColorAlpha) {
{ // this will be the result to return
//this will be the result to return
vec4 result = vec4(0.0); vec4 result = vec4(0.0);
vec2 h = vec2(0.0); vec2 h = vec2(0.0);
float y = 0.0; float y = 0.0;
//for each ring // for each ring
for (float r = 0.0; r < uRingCount; ++r) for (float r = 0.0; r < uRingCount; ++r) {
{
float spread = r*(1.0/uRingCount); float spread = r * (1.0 / uRingCount);
y = mix( 0.0 - spread , 1.0+(1.0-spread) , 1.0 - progress); y = mix(0.0 - spread, 1.0 + (1.0 - spread), 1.0 - progress);
y = clamp(y,0.00001,0.99999); y = clamp(y, 0.00001, 0.99999);
//each star in each ring // each star in each ring
for (float s = 0.0; s < uStarCount; ++s) for (float s = 0.0; s < uStarCount; ++s) {
{
//this returns a Star // this returns a Star
float a5ps = getStar( float a5ps =
starUV, getStar(starUV,
vec2( sin(progress * uRingRotation * 6.28 + (s*(6.28/uStarCount))) * aspect * 0.33 , y), //position (x, y) vec2(sin(progress * uRingRotation * 6.28 + (s * (6.28 / uStarCount))) *
5.0, //nPoints aspect * 0.33,
0.5, //radiusRatio y), // position (x, y)
zeroStartEnd(y,0.1,2.0), //Size 5.0, // nPoints
0.0 //rotation 0.5, // radiusRatio
zeroStartEnd(y, 0.1, 2.0), // Size
0.0 // rotation
); );
a5ps = clamp(a5ps,0.0,1.0); a5ps = clamp(a5ps, 0.0, 1.0);
// //put the star in back or the front of the window // //put the star in back or the front of the window
float depth = cos(progress * uRingRotation * 6.28 + (s*(6.28/uStarCount)) ); float depth = cos(progress * uRingRotation * 6.28 + (s * (6.28 / uStarCount)));
//if we want the star behind or infront of the window // if we want the star behind or infront of the window
if (depth < 0.0) if (depth < 0.0) {
{ result = alphaOver(result, getStarColor(y, a5ps));
result = alphaOver(result,getStarColor(y,a5ps)); } else {
} result = alphaOver(getStarColor(y, a5ps) * (1.0 - oColorAlpha), result);
else
{
result = alphaOver(getStarColor(y,a5ps) * (1.0 - oColorAlpha),result);
} }
} }
} }
// and we are returning the result // and we are returning the result
return result; return result;
} }
void main() { void main() {
// Calculate the animation progress, flipping direction if opening // Calculate the animation progress, flipping direction if opening
@@ -414,17 +363,14 @@ void main() {
// Initialize the output color to fully transparent black // Initialize the output color to fully transparent black
vec4 oColor = vec4(0.0, 0.0, 0.0, 0.0); vec4 oColor = vec4(0.0, 0.0, 0.0, 0.0);
// get scales
//get scales
float scale8bit = eightBitScale(progress); float scale8bit = eightBitScale(progress);
vec2 scaleV2 = vec2(easeInOutSine(progress), easeInQuad(progress)); vec2 scaleV2 = vec2(easeInOutSine(progress), easeInQuad(progress));
vec2 fscale = mix(vec2(scale8bit),scaleV2,uScaleStyle); vec2 fscale = mix(vec2(scale8bit), scaleV2, uScaleStyle);
// Fetch the color based on the scaled texture coordinates // Fetch the color based on the scaled texture coordinates
oColor = getInputColor( oColor = getInputColor(scaleUV(iTexCoord.st, fscale));
scaleUV(iTexCoord.st, fscale)
);
// Store the alpha value of the fetched color for later use // Store the alpha value of the fetched color for later use
float oColorAlpha = oColor.a; float oColorAlpha = oColor.a;
@@ -438,26 +384,20 @@ void main() {
vec2 starUV = vec2(iTexCoord.s - 0.5, 1.0 - iTexCoord.t) * vec2(aspect, 1.0); vec2 starUV = vec2(iTexCoord.s - 0.5, 1.0 - iTexCoord.t) * vec2(aspect, 1.0);
// If four-point stars are enabled, overlay them on the current color // If four-point stars are enabled, overlay them on the current color
if (uSparkCount > 0.0) if (uSparkCount > 0.0) {
{
oColor = alphaOver(oColor, getSparks(progress)); oColor = alphaOver(oColor, getSparks(progress));
} }
// If rays are enabled, overlay them on the current color // If rays are enabled, overlay them on the current color
if (uRaysColor.a > 0.0) if (uRaysColor.a > 0.0) {
{
oColor = alphaOver(oColor, getRays(progress)); oColor = alphaOver(oColor, getRays(progress));
} }
// If five-point stars are enabled, overlay them using stored alpha // If five-point stars are enabled, overlay them using stored alpha
if (uRingCount > 0.0 && uStarCount > 0.0) if (uRingCount > 0.0 && uStarCount > 0.0) {
{
oColor = alphaOver(oColor, getStars(starUV, aspect, progress, oColorAlpha)); oColor = alphaOver(oColor, getStars(starUV, aspect, progress, oColorAlpha));
} }
// Set the final output color to the computed value // Set the final output color to the computed value
setOutputColor(oColor); setOutputColor(oColor);
} }
-3
View File
@@ -61,7 +61,6 @@ export var Shader = GObject.registerClass({
}, },
class Shader extends Shell.GLSLEffect { class Shader extends Shell.GLSLEffect {
// -------------------------------------------- // --------------------------------------------
// The constructor automagically loads the shader's source code (in // The constructor automagically loads the shader's source code (in
// vfunc_build_pipeline()) from the resource file resources/shaders/<nick>.glsl // vfunc_build_pipeline()) from the resource file resources/shaders/<nick>.glsl
@@ -209,6 +208,4 @@ export var Shader = GObject.registerClass({
// Add a trailing newline. Else the GLSL compiler complains... // Add a trailing newline. Else the GLSL compiler complains...
return common + '\n' + code + '\n'; return common + '\n' + code + '\n';
} }
}); });
+1 -1
View File
@@ -61,7 +61,7 @@ export default class ShaderFactory {
// Only try to register the new type once. // Only try to register the new type once.
if (GObject.type_from_name(typeName) == null) { if (GObject.type_from_name(typeName) == null) {
const outerThis = this; const outerThis = this;
GObject.registerClass({GTypeName: typeName}, class ShaderImp extends Shader{ GObject.registerClass({GTypeName: typeName}, class ShaderImp extends Shader {
// This will actually load the GLSL source code from the resources. // This will actually load the GLSL source code from the resources.
_init() { _init() {
super._init(outerThis._nick); super._init(outerThis._nick);
-2
View File
@@ -172,6 +172,4 @@ export function parseColor(string) {
return [color.red / 255, color.green / 255, color.blue / 255, color.alpha / 255]; return [color.red / 255, color.green / 255, color.blue / 255, color.alpha / 255];
} }