SORU
16 Kasım 2010, Salı


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
25 Kasım 2010, PERŞEMBE


Ç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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • Rayone GB

    Rayone GB

    14 Temmuz 2007