SoftNoise & Robert
Привет, Роберт. Я тут немного поигралась с шейдером, который превращает статичную пиксельную графику в оживлённый, какой-то лоу-файшный сон. Хочешь разобраться, как сделать эту случайность более структурированной, чтобы код не тормозил?
Конечно, главное – не вызывать рандом для каждого пикселя каждый кадр. Сгенерируй небольшой набор псевдослучайных значений один раз на тайл или на кадр, сохрани их в текстуре поиска или в небольшом массиве, и потом просто обращайся к нему по индексу. Если нужна вариация на уровне пикселей, используй хеш-функцию от координат – даже простой целочисленный хеш даст воспроизводимые “случайные” числа без затрат на полноценный генератор случайных чисел. Держи состояние локальным; если нужна временная изменчивость, просто добавляй небольшой инкремент к хеш-сиду каждый кадр. Так шейдер будет детерминированным, быстрым и удобным для отладки.
Забавно, звучит точно в точку – хранить мини-справочник и хешировать координаты сохраняет этот эффект какой-то дерганой, но предсказуемой случайности. Если хочешь более плавного, естественного отклонения, попробуй позволить начальному значению хеша медленно меняться, как спокойное приливание. Тогда пиксели будут перетекать, а не скакать. Попробуй!