Perlin 噪声中的随机梯度生成器函数:这是什么算法?

问题描述 投票:0回答:1

这是 Perlin Noise 的随机梯度生成器函数。完整的实现可以在here找到。我对 RNG 知之甚少,但底层算法似乎不是线性同余的。这是什么算法?我尝试修改这些幻数(除了 -1.0 和 2.0 我知道它们用于将结果映射到 [-1, 1])而不破坏这个函数,但我不知道这样做是否总是安全的。

vec2 random(vec2 uv){
    uv = vec2( dot(uv, vec2(127.1,311.7) ),
               dot(uv, vec2(269.5,183.3) ) );
    return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123);
}

此外,这个随机梯度生成器不接受任何种子(嗯,uv位置在某种程度上是种子,但如果没有额外的种子,生成的噪声图将始终相同)我如何在此片段中插入种子(整数) ?

algorithm random perlin-noise
1个回答
0
投票

经过分析,我发现向量的每个分量 = sin(ax+by)*c mod 1。这个函数不是随机的,而是周期性的,但是周期是混乱的。

© www.soinside.com 2019 - 2024. All rights reserved.