Yoshisor
animator/coder (mod FNF) sur mon temps libre
 
 
Ceci est un shader pour donner un effet d'écran cathodique:

#pragma header
uniform float iTime;

vec2 curve(vec2 uv) {
uv = (uv - 0.5) * 2.0; // Centrer les coordonnées
uv *= 1.1; // Appliquer un zoom
uv.x *= 1.0 + pow((abs(uv.y) / 5.0), 2.0); // Déformation en x
uv.y *= 1.0 + pow((abs(uv.x) / 4.0), 2.0); // Déformation en y
uv = (uv / 2.0) + 0.5; // Ramener les coordonnées à l'intervalle [0, 1]
uv = uv * 0.92 + 0.04; // Ajustement final
return uv;
}

void main() {
vec2 q = openfl_TextureCoordv; // Récupérer les coordonnées de texture
vec2 uv = q; // Initialiser uv avec q
uv = curve(uv); // Appliquer la fonction de courbure

float oga = flixel_texture2D(bitmap, uv).a; // Composante alpha
vec3 oricol = flixel_texture2D(bitmap, uv).xyz; // Couleur d'origine

vec3 col = vec3(0.0); // Initialiser la couleur à zéro
float x = sin(0.3 * iTime + uv.y * 21.0) * sin(0.7 * iTime + uv.y * 29.0) * sin(0.3 + 0.33 * iTime + uv.y * 31.0) * 0.0017;

// Calculer les couleurs avec des décalages
col.r = flixel_texture2D(bitmap, vec2(x + uv.x + 0.001, uv.y + 0.001)).x + 0.05;
col.g = flixel_texture2D(bitmap, vec2(x + uv.x + 0.000, uv.y - 0.002)).y + 0.05;
col.b = flixel_texture2D(bitmap, vec2(x + uv.x - 0.002, uv.y + 0.000)).z + 0.05;

col = clamp(col * 0.6 + 0.4 * col * col * 1.0, 0.0, 1.0); // Ajustement de la couleur

float vig = (1.0 * 16.0 * uv.x * uv.y * (1.0 - uv.x) * (1.0 - uv.y)); // Vignetting
col *= vec3(pow(vig, 0.3)); // Appliquer le vignettage

col *= vec3(0.95, 1.05, 0.95); // Ajustement des couleurs

float scans = clamp(0.35 + 0.35 * sin(3.5 * iTime + uv.y * openfl_TextureSize.y * 1.5), 1.0, 1.0);
float s = pow(scans, 1.7);
col *= vec3(0.4 + 0.7 * s); // Appliquer l'effet de scanlines

col *= 1.0 + 0.01 * sin(110.0 * iTime); // Variation dynamique

// Conditions pour éviter les pixels hors limites
if (uv.x < 0.0 || uv.x > 1.0) col *= 0.0;
if (uv.y < 0.0 || uv.y > 1.0) col *= 0.0;

col *= 1.0 - 0.65 * vec3(clamp((mod(openfl_TextureCoordv.x, 2.0) - 1.0) * 2.0, 0.0, 1.0)); // Effet de bord

float comp = smoothstep(0.1, 0.9, sin(iTime)); // Transition douce

// Mélanger la couleur traitée avec la couleur d'origine
col = mix(col, oricol, comp);

gl_FragColor = vec4(col, oga); // Sortie finale
}
Currently Offline
Artwork Showcase
Gigachad version Virus R