Cyclic Noise
https://gyazo.com/7c9842e71710d4631794723ab42d282d
GLSL
作り方の一例。0b5vrがライブコーディングでよく使う様式 原文ではノイズの生成を dot で行っているが、こちらは cross を用いて出力を3次元にしている
pump は通常 2.0 を入れる 他の値を入れても面白い
code:glsl
vec3 cyclic(vec3 p, float pers, float lacu) {
vec4 sum = vec4(0);
mat3 rot = orthBas(vec3(2, -3, 1));
repeat(i, 5) {
p *= rot;
p += sin(p.zxy);
sum += vec4(cross(cos(p), sin(p.yzx)), 1);
sum /= pers;
p *= lacu;
}
return sum.xyz / sum.w;
}
https://gyazo.com/9b3af14e151a8c0fb86e71ff777bd000
Leon Denise版
座標ドメインに対するディスプレイスのやり方がやや異なり、sin(p.yzx) ではなく生成途中のノイズ自体を足し算している
code:glsl
// gyroid pattern
float gyroid (vec3 p)
{
return dot(sin(p),cos(p.yzx));
}
// noise
float fbm (vec2 p)
{
vec3 q = vec3(p, 0);
float result = 0., a = .5;
for (float i = 0.; i < 4.; ++i, a /= 2.)
{
q += (result-.5);
result += gyroid(q/a)*a;
}
return result;
}