Was ist der Ursprung dieses einzeiligen GLSL rand ()?

Ich habe diesen Pseudozufallszahlengenerator für die Verwendung in Shadern gesehen, auf die Bezug genommen wirdhier und da im Web:

float rand(vec2 co){
  return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}

Es wird verschiedentlich "kanonisch" oder "Einzeiler, den ich irgendwo im Internet gefunden habe" genannt.

Woher kommt diese Funktion? Sind die konstanten Werte so willkürlich, wie sie scheinen, oder gibt es eine Kunst für ihre Auswahl? Gibt es eine Diskussion über die Vorzüge dieser Funktion?

EDIT: Der älteste Hinweis auf diese Funktion, der mir begegnet ist, istDieses Archiv von Feb '08, die ursprüngliche Seite wird jetzt aus dem Web entfernt. Aber es gibt dort nicht mehr Diskussionen als anderswo.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage