私はフラグメントのシェーダで超単純なPerlinノイズクラウドを作成しようとしています。ノイズ関数はhereです。低いオクターブのパーリンノイズを平滑化
低オクターブでは、私の出力は「blobby」という言葉のほうがいいです。私は単にこれらのブロブビーエリアを滑らかにして滑らかなノイズを持っていますが、ちょうど1オクターブ以上のものを少し詳細にしたいと思っています。
フラグメントシェーダ:
#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);
}
ライブ例:
http://glsl.heroku.com/e#1413.0
左は私が現時点で持っているものです。正しいイメージでもっとインラインで何かを達成するにはどうすればいいですか?
おかげイルマリの結果です。私はあなたの解決策を考え、1オクターブのノイズしか使用しませんでしたが、結果は依然としてかなり混乱しているようです。私はまた、黒と白の領域のコントラストがあまり好きではありません。私の理解は、ノイズの追加オクターブを追加すると詳細を追加するだけでなく、結果(http://libnoise.sourceforge.net/tutorials/tutorial4.html#octavesに基づいて)のコントラストを減少させることです。私は合理的なのですか? –
ああ、さて、あなたが今何を意味しているのか分かります。答えを編集しました。 –
素敵な、そのトリックをやった - ありがとう! –