2012-01-25 18 views
5

Bir parça gölgelendiricide, here bulunan Gürültü işlevini kullanarak süper basit Perlin gürültü bulutları oluşturmaya çalışıyorum.Pürüzsüzleştirici düşük oktav perlin gürültüsü

Düşük oktavlarda çıktım, daha iyi bir kelime istemek için 'blobby'. Bu blobi alanları düzeltmek ve düzgün bir gürültüye sahip olmak isterdim ama sadece bir oktavdan biraz daha detaylı.

Fragment shader:

#ifdef GL_ES 
precision mediump float; 
#endif 

uniform float time; 
uniform vec2 resolution; 

// Noise related functions go here .. 

float surface3 (vec3 coord) { 
     float frequency = 4.0; 
     float n = 0.0; 

     n += 1.0 * abs(cnoise(coord * frequency)); 
     n += 0.5 * abs(cnoise(coord * frequency * 2.0)); 
     n += 0.25 * abs(cnoise(coord * frequency * 4.0)); 

     return n; 
} 

void main(void) { 
     vec2 position = gl_FragCoord.xy/resolution.xy; 

     float n = surface3(vec3(position, time * 0.1)); 

     gl_FragColor = vec4(n, n, n, 1.0); 
} 

Canlı örnek:
http://glsl.heroku.com/e#1413.0

Sol şu anda ne var. Doğru görüntü ile daha fazla satır içi bir şeye nasıl ulaşabilirim?

cevap

4

En kolay yol, yüzey işlevindeki iki gürültü çağrısını çıkarmaktır. İlk gürültü çağrı hattını bırak ve ilki gibi görünen bir şey olsun: abs (kullanarak gelen çoklu oktav gürültü

http://glsl.heroku.com/e#1450.0

keskin çizgiler), abs (kaldırmak) ve değiştir gürültü değerini karelendirmek veya 0,5 * (1,0 + cnoise()) gibi bir şey yapmakla (cnoise çıkışı -1.1 arasındaysa).

İşte bazı işe yaramaz http://glsl.heroku.com/e#1450.1

+0

Teşekkür Ilmari sonucudur. Çözümünüzü düşündüm ve sadece bir oktav gürültü kullandım, ancak sonuç hala oldukça göz kamaştırıcı görünüyor. Ayrıca siyah ve beyaz alanlar arasındaki yüksek kontrastı çok sevmiyorum. Anladığım kadarıyla ek oktavlar ekleyerek detaylar ekledik ama sonuçta (http://libnoise.sourceforge.net/tutorials/tutorial4.html#octaves'e göre) kontrastı da azaltıyordum. Makul muyum? –

+0

Ahh, tamam, şimdi ne demek istediğini görüyorum. Cevabı düzenledim. –

+0

Güzel, bu hile yaptı - teşekkürler! –

İlgili konular