Так что я все еще получаю голоса за свой древний комментарий к этому вопросу: Каково происхождение этого однострочника GLSL rand()?
И это заставило меня задуматься, как бы выглядела хорошая хэш-функция GLSL? Для него есть очевидные варианты использования, такие как шум Перлина. Есть некоторые свойства, которые я бы искал в хорошей реализации.
- Стабильный при различных точностях (средний, высокий). Это можно настроить.
- Должен использоваться в ES2, поэтому он не может использовать поддержку целых чисел.
- Только ALU, без текстур
- Не поиск криптографических качеств, а больших периодов и "перцептивной" случайности
- В идеале должен давать те же результаты при минимальной реализации спецификации ES2.
Практически я думаю, что большинство людей просто смешивают входные данные x, y, умножая их на некоторые простые числа, добавляя их, снова умножая их и просматривая координаты результата в мозаичной текстуре случайных чисел с ближайшей выборкой.
Таким образом, этот вопрос не столько о поиске «ответа», сколько о любопытстве, есть ли хороший способ сделать это. Я также хотел бы знать аргументы о том, почему это невозможно.