El código del juego está escrito íntegramente en lenguaje matemático . Vamos a analizarlo.
N es responsable del tamaño de las células.
pow (1.02, iTime) crea una animación uniforme de las celdas, 1.02 - velocidad de animación; tarde o temprano esto causa un desbordamiento del búfer, pero la animación se puede apagar haciendo t = 1 o hacer que se ralentice con el tiempo t = iTime.
dx y dy - desplazamiento xey de la posición del cursor.
flotar f = flotar ((x-dx) * (x-dx) * t + (y-dy) * (y-dy) * t); // Estas son las reglas del juego: en esta función (no en realidad una función) puedes hacer cambios y obtener una nueva lógica de juego.
flotar F = abs (f * sin ((x) / N) * sin ((y) / N)); // Crea una membrana celular para función (no función) f.
int R = int (piso (F * pow (16.0, 6.0-ceil (log2 (F) /4.0)))); // Adapte los colores de la membrana agregando ceros al final de la notación hexadecimal o recortándola hacia la derecha. Básicamente, es un índice de color X11 listo para usar que se usa en HTML o Photoshop.
En resumen, todo es sencillo. De hecho, soy nuevo tanto en matemáticas como en GLSL, pero a mis amigos les gustó este juego y me pregunto cómo lo calificará Habr. Si tiene alguna idea, puede bifurcarla. Para aquellos que quieran intentar transferir a otros lenguajes de programación, les advertiré que tales cálculos para cada píxel son muy difíciles para el procesador; necesita programar sombreadores (bueno, personalmente, mi experiencia, pero en general no me importa )