Я видел этот генератор псевдослучайных чисел для использования в шейдерах, упоминаемых здесь и там в сети :
float rand(vec2 co){
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
Его по-разному называют «каноническим» или «однострочным, который я где-то нашел в Интернете».
Каково происхождение этой функции? Являются ли постоянные значения столь же произвольными, как кажутся, или их выбор является искусством? Есть ли обсуждение достоинств этой функции?
РЕДАКТИРОВАТЬ: самая старая ссылка на эту функцию, с которой я столкнулся, - это архив от февраля 2008 года , исходная страница теперь удалена из Интернета. Но там это обсуждается не больше, чем где-либо еще.