由于GPU驱动程序供应商通常不愿意noiseX在GLSL中实现,因此我正在寻找“图形随机化瑞士军刀”实用程序功能集,最好对其进行优化以在GPU着色器中使用。我更喜欢GLSL,但是可以编写任何语言的代码,我可以自己将其翻译为GLSL。
具体来说,我期望:
a)伪随机函数 -N维,在[-1,1]或[0,1]上均匀分布,根据M维种子计算(理想情况下为任何值,但我可以限制种子设为0..1(用于统一结果分配)。就像是:
float random (T seed);
vec2 random2 (T seed);
vec3 random3 (T seed);
vec4 random4 (T seed);
// T being either float, vec2, vec3, vec4 - ideally.
b)像Perlin 噪声这样的连续噪声 -同样是N维,分布均匀,具有一组受限制的值,而且看起来不错(一些配置外观(如Perlin级别)的选项也可能有用)。我希望像这样的签名:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
我不太熟悉随机数生成理论,因此我非常希望获得预制的解决方案,但是我也很喜欢这样的回答:“这里有一个非常好的,高效的一维rand(),让我解释一下您如何在其上制作一个良好的N维rand()...”。
30秒到达战场
相关分类