2015-07-23 1 views
0

J'ai vu de nombreuses implémentations de bruit pour des choses comme perlin et simplex noise pour atteindre procedural terrain generation, et ils semblent tous utiliser 256 valeurs de permutation. Pourquoi est-ce? et quel serait l'effet de l'utilisation de plus de 256?Pourquoi les algorithmes de bruit utilisent-ils 256 valeurs de permutation?

+0

Pourriez-vous donner plus de contexte? Quelle application ou quelle base de code voyez-vous cela? – Nayuki

+4

Parce que c'est le nombre de valeurs uniques dans un octet. –

+0

Un grand nombre de heightmaps de terrain sont spécifiés par des images en niveaux de gris à 8 bits. Il s'agit donc du nombre attendu de valeurs que vous devez remplir. L '"effet d'utiliser plus de 256" serait que vous deviez soit quantifier vos résultats ou trouver un moyen d'utiliser une résolution de couleur plus élevée pour vos heightmaps: p –

Répondre

1

Vous pouvez utiliser n'importe quel nombre de valeurs de permutation. La raison pour laquelle deux puissances sont préférées est, parce qu'il est moins coûteux de calculer le module de N^2.

La raison est la suivante:

value % (N^2) 

est équivalent à

value & (N^2 - 1) 

Et il est beaucoup moins cher pour calculer Bitwise & au lieu d'un%.

Par exemple, dans votre code, vous pouvez écrire ceci:

int v = perm[(x + perm[y % 256]) % 256]; 

Ou

int v = perm[(x + perm[y & 255]) & 255]; 

Les deux vous donnent le même résultat, mais la deuxième méthode est plus rapide.

Bien sûr, toute puissance de deux peut être utilisée pour cela. Je pense que la raison de choisir 256 est que c'est un bon équilibre entre une variété de nombres pseudo-aléatoires et une faible consommation de mémoire.