Intento crear nubes de ruido Perlin súper simples en un sombreador de fragmentos, utilizando la función Noise found here.Alisar ruido de perlas de baja octava
En octavas bajas mi salida es, a falta de una palabra mejor, 'blobby'. Simplemente me gustaría suavizar estas áreas problemáticas y tener un sonido suave, pero tenerlo un poco más detallado que solo una octava.
Fragmento de sombreado:
#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);
}
ejemplo vivo:
http://glsl.heroku.com/e#1413.0
izquierda es lo que tengo en este momento. ¿Cómo podría lograr algo más en línea con la imagen correcta?
Gracias Ilmari. Consideré tu solución y solo utilicé una octava de ruido, pero el resultado parece ser bastante complicado. Tampoco soy demasiado aficionado al mayor contraste entre las áreas en blanco y negro. Según tengo entendido, agregar octavas de ruido adicionales agrega detalles pero también reduce el contraste en el resultado (basado en http://libnoise.sourceforge.net/tutorials/tutorial4.html#octaves), que es exactamente lo que busco. ¿Estoy siendo razonable? –
Ahh, está bien, veo lo que quieres decir ahora. Editado la respuesta. –
Encantador, eso funcionó - ¡gracias! –