Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
https://www.shadertoy.com/view/fs23Wt
Код игры написан целиком на языке математики. Давайте его разберем.
N отвечает за размер клеток.
pow(1.02, iTime) создает равномерную анимацию клеток, 1.02 - скорость анимации; рано или поздно это вызывет переполнение буфера, но анимаию можно отключить сделав t=1 или сделать так чтобы она замедлялась со временем t=iTime.
dx и dy - смещение позиции курсора по x и по y.
float f = float((x-dx)*(x-dx)t+(y-dy)*(y-dy)*t); // Это правила игры - в эту функцию (на самом деле не функцию) вы можете внести изменения и получить новую логику игры.
float F = abs(f*sin((x)/N)*sin((y)/N)); // Создает клеточную мембрану для функции (не функции) f.
int R = int(floor(F*pow(16.0, 6.0-ceil(log2(F)/4.0)))); // Адаптирует цвета мембраны добавив нули в конце шестнадцатиричной записи числа или обрезае его по правому краю. По сути это готовый индекс цвета X11, который используется в HTML или Photoshop.
Короче всё просто. Я на самом деле новичок и в математике и в GLSL, но моим друзьям понравилась эта игра, и мне интересно, как её оценит хабр. Если у вас есть идеи, вы можете форкнуть. Тех, кто захочет попробовать перенести на другие языки программирования, предупрежу, что такие вычисления для каждого пикселя весьма затруднительны для процессора - надо программировать шейдеры (ну лично мой опыт, но вообще я не против.)