Comme les vendeurs de pilotes GPU ne prennent généralement pas la peine de les implémenter noiseX
dans GLSL, je suis à la recherche d'un ensemble de fonctions utilitaires "graphiques aléatoires couteau suisse" , de préférence optimisé pour être utilisé dans les shaders GPU. Je préfère GLSL, mais le code de n'importe quelle langue fera pour moi, je suis d'accord pour le traduire moi-même en GLSL.
Plus précisément, je m'attendrais à:
a) Fonctions pseudo-aléatoires - Distribution uniforme à N dimensions sur [-1,1] ou plus de [0,1], calculée à partir d'une graine à M dimensions (idéalement n'importe quelle valeur, mais je suis d'accord avec la restriction de la graine à, disons, 0..1 pour une distribution uniforme des résultats). Quelque chose comme:
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) Bruit continu comme Perlin Noise - encore une fois, N-dimensionnel, + - distribution uniforme, avec un ensemble de valeurs contraint et, eh bien, bonne apparence (certaines options pour configurer l'apparence comme les niveaux de Perlin pourraient également être utiles). Je m'attendrais à des signatures comme:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Je ne suis pas très intéressé par la théorie de la génération de nombres aléatoires, donc j'opterais avec impatience pour une solution pré-faite , mais j'apprécierais également des réponses comme "voici un très bon rand 1D efficace (), et laissez-moi vous expliquer comment faire un bon rand à N dimensions () dessus ... " .
vec2 co
? est-ce la gamme? la graine?