Da sich die Anbieter von GPU-Treibern normalerweise nicht die Mühe machen, sie noiseX
in GLSL zu implementieren , suche ich nach einem Dienstprogramm mit der Funktion "Grafik-Randomisierung, Schweizer Taschenmesser" , das vorzugsweise für die Verwendung in GPU-Shadern optimiert ist. Ich bevorzuge GLSL, aber Code, den jede Sprache für mich tun kann, ist in Ordnung, wenn ich ihn selbst in GLSL übersetze.
Insbesondere würde ich erwarten:
a) Pseudozufallsfunktionen - N-dimensionale, gleichmäßige Verteilung über [-1,1] oder über [0,1], berechnet aus M-dimensionalem Keim (idealerweise ein beliebiger Wert, aber ich bin damit einverstanden, dass der Keim zurückgehalten wird zum Beispiel 0..1 für eine gleichmäßige Ergebnisverteilung). Etwas wie:
float random (T seed);
vec2 random2 (T seed);
vec3 random3 (T seed);
vec4 random4 (T seed);
// T being either float, vec2, vec3, vec4 - ideally.
b) Kontinuierliches Rauschen wie Perlin-Rauschen - wiederum N-dimensional, + - gleichmäßige Verteilung mit eingeschränktem Wertesatz und gutem Aussehen (einige Optionen zum Konfigurieren des Erscheinungsbilds wie Perlin-Pegel könnten ebenfalls nützlich sein). Ich würde Unterschriften erwarten wie:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Ich beschäftige mich nicht sehr mit der Theorie der Zufallszahlengenerierung, daher würde ich mich sehr gerne für eine vorgefertigte Lösung entscheiden , aber ich würde auch Antworten wie "Hier ist ein sehr guter, effizienter 1D-Rand ()" begrüßen und mich erklären lassen Sie, wie man einen guten N-dimensionalen Rand () darüber macht ... " .
vec2 co
? ist es die Reichweite? Samen?