Sto cercando di creare nuvole di disturbo Perlin super semplici in uno shader di frammenti, utilizzando la funzione di disturbo trovata here.Attenuazione del disturbo perlin di bassa ottava
Alle basse ottave la mia uscita è, per mancanza di una parola migliore, "blobby". Mi piacerebbe semplicemente appianare queste aree flaccide e avere un rumore regolare, ma è un po 'più dettagliato di una sola ottava.
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);
}
esempio dal vivo:
http://glsl.heroku.com/e#1413.0
sinistra è quello che ho in questo momento. Come potrei ottenere qualcosa di più in linea con l'immagine giusta?
Grazie Ilmari. Ho preso in considerazione la tua soluzione e ho usato solo un'ottava di rumore, ma il risultato sembra ancora piuttosto sbiadito. Inoltre, non mi piace troppo il maggior contrasto tra aree bianche e nere. La mia comprensione è stata che aggiungere ulteriori ottave di rumore aggiunge dettagli ma riduce anche il contrasto nel risultato (basato su http://libnoise.sourceforge.net/tutorials/tutorial4.html#octaves) che è esattamente quello che sto cercando. Sono ragionevole? –
Ah, va bene, capisco cosa intendi ora. Modificato la risposta. –
Bello, questo ha fatto il trucco - grazie! –