Próbuję utworzyć super proste chmury szumu Perlina w module cieniowania fragmentów, używając funkcji szumów, która została znaleziona here.Wygładzanie niskiego oktawy hałas
W niskich oktawach moje wyniki są, z braku lepszego słowa, "blobby". Chciałbym po prostu wygładzić te nierówne obszary i uzyskać płynny dźwięk, ale mam go trochę bardziej szczegółowy niż tylko oktawę.
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);
}
żywo przykład:
http://glsl.heroku.com/e#1413.0
Lewy jest to, co mam w tej chwili. Jak byłbym w stanie osiągnąć coś więcej z właściwym obrazem?
Dzięki Ilmari. Rozważyłem twoje rozwiązanie i używałem tylko jednej oktawy szumu, ale wynik wciąż wydaje się dość nieubłagany. Nie lubię też większego kontrastu między czarnymi i białymi obszarami. Rozumiem, że dodanie dodatkowych oktaw szumu dodaje szczegółów, ale także zmniejsza kontrast w wyniku (na podstawie http://libnoise.sourceforge.net/tutorials/tutorial4.html#octaves), co jest dokładnie tym, czego szukam. Czy jestem rozsądny? –
Ahh, w porządku, teraz rozumiem, co masz na myśli. Edytowano odpowiedź. –
Cudownie, udało się - dzięki! –