Gürültü fonksiyonları rasgele / GLSL için
GPU sürücüsü satıcılar genellikle GLSL noiseX
uygulamak için zahmet etmeyin, bir şey arıyorum< . em ^"rasgele isviçre çakısı" . grafik fayda fonksiyonu ayarlayın, tercihen GPU gölgeleme içinde kullanılmak için optimize edilmiş. GLSL, ama herhangi bir dil, benim için, tek başıma çevirmek için sorun yok yapacak kod GLSL tercih ederim.
Özellikle beklerdim:
a)Pseudo-rastgele fonksiyonları- N-boyutlu, tekdüze dağılım içinde [-1,1] veya [0,1], hesaplanan M-boyutlu tohumu (ideal olmanın herhangi bir değer, ama iyiyim sahip tohum ölçülü için, diyelim ki, 0..1 için aynı sonucu dağıtım). Gibi bir şey
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)Sürekli gürültüPerlin Gürültüsü gibi - tekrar, N-boyutlu homojen dağılımı ile kısıtlı set değerleri ve, iyi, iyi görünüyor (bazı seçenekleri yapılandırmak için görünüm gibi Perlin düzeyde yararlı olabileceğini de. İmza gibi beklerdim:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Rasgele sayı üretimi çok teori haline değilim, en istekli bir giderdimönceden yapılmış bir çözümama cevapları da memnun olurum< . em ^"burada çok iyi, verimli bir 1D rand () ve beni N-boyutlu iyi bir rand nasıl anlatayım() üzerine...".
CEVAP
Çok basit rastgele görünen şeyler, internette bir yerde bulduğum bu oneliner kullanıyorum:
float rand(vec2 co){
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
Sen-ebilmek da üretmek bir gürültü doku kullanarak ne olursa olsun PRNG senin gibi, sonra karşıya bu normal moda ve örnek değerleri içinde shader; ben kazmak bir kod örneği daha sonra Eğer isterseniz.
Ayrıca, Stefan Gustavson'a tarafından Perlin ve Simplex gürültü GLSL uygulamaları, this file check out.
Nasıl alfa-sayısal rasgele bir dize ol...
Nasıl bazı HTML etiketleri için rasgel...
PHP fonksiyonları için Büyük-O listesi...
Nasıl C fonksiyonları nesneleri geçirm...
Senin için Python jeneratör fonksiyonl...