Kode permainan seluruhnya ditulis dalam bahasa matematika . Mari kita hancurkan.
N bertanggung jawab atas ukuran sel.
pow (1.02, iTime) membuat animasi sel yang seragam, 1.02 - kecepatan animasi; cepat atau lambat ini menyebabkan buffer overflow, tetapi animasinya dapat dimatikan dengan membuat t = 1 atau dibuat sehingga melambat seiring waktu t = itime.
dx dan dy - x dan y offset dari posisi kursor.
float f = float ((x-dx) * (x-dx) * t + (y-dy) * (y-dy) * t); // Ini adalah aturan mainnya - dalam fungsi ini (sebenarnya bukan fungsi) Anda bisa membuat perubahan dan mendapatkan logika permainan baru.
float F = abs (f * sin ((x) / N) * sin ((y) / N)); // Membuat membran sel untuk fungsi (bukan fungsi) f.
int R = int (lantai (F * pow (16.0, 6.0-ceil (log2 (F) /4.0)))); // Sesuaikan warna membran dengan menambahkan nol di akhir notasi heksadesimal atau pangkas ke kanan. Pada dasarnya ini adalah indeks warna X11 siap pakai yang digunakan dalam HTML atau Photoshop.
Singkatnya, semuanya sederhana. Saya sebenarnya baru mengenal matematika dan GLSL, tetapi teman-teman saya menyukai permainan ini, dan saya bertanya-tanya bagaimana Habr akan menilai itu. Jika Anda punya ide, Anda bisa mencapainya. Bagi mereka yang ingin mencoba mentransfer ke bahasa pemrograman lain, saya akan memperingatkan Anda bahwa perhitungan seperti itu untuk setiap piksel sangat sulit untuk prosesor - Anda perlu memprogram shader (yah, secara pribadi, pengalaman saya, tetapi secara umum saya tidak keberatan )