1
251
对于看起来很简单的伪随机的东西,我使用我在互联网上找到的一行代码:
你也可以使用任何你喜欢的PRNG生成一个噪波纹理,然后以正常的方式上传并在你的着色器中采样值;如果你愿意,我可以稍后挖掘一个代码示例。 还有,退房 this file 对于Perlin和Simplex噪声的GLSL实现,由Stefan Gustavson完成。 |
2
71
不,从2005年开始就没有了。只是人们坚持下载旧版本。您提供的链接上的版本仅使用8位二维纹理。 Ashima和我自己的Ian McEwan的新版本没有使用纹理,但是在具有大量纹理带宽的典型桌面平台上运行的速度大约是其速度的一半。在移动平台上,无纹理版本可能更快,因为纹理通常是一个重要的瓶颈。 我们积极维护的源代码库是: https://github.com/ashima/webgl-noise 下面是无纹理和使用噪波版本的纹理的集合(仅使用二维纹理): http://www.itn.liu.se/~stegu/simplexnoise/GLSL-noise-vs-noise.zip
如果您有任何具体问题,请直接给我发电子邮件(我的电子邮件地址可以在
|
3
70
我突然想到,可以使用一个简单的整数散列函数,并将结果插入浮点的尾数。IIRC GLSL规范保证32位无符号整数和IEEE二进制32浮点表示,因此它应该是完全可移植的。 我刚才试了一下。结果非常好:我尝试的每个输入看起来都是静态的,根本没有可见的模式。相比之下,流行的sin/fractsnippet在我的GPU上有相当明显的对角线,输入相同。 一个缺点是它需要GLSL v3.30。虽然它看起来足够快,但我还没有根据经验来量化它的性能。AMD的Shader Analyzer声称HD5870上的vec2版本每时钟13.33像素。与sin/fract片段的每个时钟16像素形成对比。所以肯定是慢了一点。 这是我的实现。我把它放在不同的思想排列中,以便更容易从中派生出自己的函数。
截图: 我在一个图像编辑程序中检查了屏幕截图。有256种颜色,平均值是127,这意味着分布是均匀的,覆盖了预期的范围。 |
4
24
黄金噪音
See Gold Noise in your browser right now!
截至2017年9月9日,@appas'答案中,此函数改进了当前函数的随机分布:
@appas函数也不完整,因为没有提供种子(uv不是每个帧的种子都一样),并且不能与低精度芯片组一起工作。默认情况下,Gold Noise以低精度运行(更快)。 |
5
11
还有一个很好的实现 here 由McEwan和@StefanGustavson设计,看起来像Perlin noise,但“不需要任何设置,即不需要纹理或均匀阵列。只需将其添加到着色器源代码中,并在任何需要的地方调用它”。 这非常方便,特别是考虑到Gustavson的早期实现@dep链接到使用1D纹理,即 not supported in GLSL ES (WebGL的着色语言)。 |
6
3
请使用:
不要使用这个:
你可以在 Improvements to the canonical one-liner GLSL rand() for OpenGL ES 2.0 |
7
2
刚刚发现这个版本的GPU 3d噪音,尽管它是最快的一个:
|
8
1
一种直的,锯齿状的1d珀林,本质上是一个随机的lfo之字形。
我还在shadertoy的所有者inigo quilez perlin教程网站和voronoi等网站上找到了1-2-3-4d perlin noise,他有完全快速的实现和代码。 |
9
1
搞砸: 现在webGL2.0已经存在,所以整数可以在(w)GLSL中使用。 ->对于高质量的可移植散列(成本与丑陋的浮点散列相似),我们现在可以使用“严肃的”散列技术。 智商在 https://www.shadertoy.com/view/XlXcW4 (及更多) 例如。:
|
10
0
请参见下面的示例如何向渲染纹理添加白噪声。 解决方案是使用两种纹理:原始和纯白色噪波,如下所示: wiki white noise
共享的片段包含参数uNoiseFactor,主应用程序在每次呈现时都会更新该参数:
|
11
0
我已经将Ken Perlin的一个Java实现翻译成GLSL,并在ShaderToy上的几个项目中使用了它。 以下是我对GLSL的解释:
我从Ken Perlin噪声硬件第2章的附录B中翻译过来: https://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf 下面是我在Shader Toy上使用posted noise函数的公共阴影: https://www.shadertoy.com/view/3slXzM 我在研究期间发现的关于噪音的其他一些好的来源包括: https://thebookofshaders.com/11/ https://mzucker.github.io/html/perlin-noise-math-faq.html https://rmarcus.info/blog/2018/03/04/perlin-noise.html http://flafla2.github.io/2014/08/09/perlinnoise.html https://mrl.nyu.edu/~perlin/noise/ https://rmarcus.info/blog/assets/perlin/perlin_paper.pdf https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch05.html 我强烈推荐《着色器之书》,因为它不仅提供了一个很好的噪声交互式解释,而且还提供了其他着色器概念。 编辑: 可能可以通过使用GLSL中的一些硬件加速功能来优化翻译的代码。如果我最终这么做的话,我会更新这篇文章的。 |
ecology · 基于R中随机生成数集的子集列 2 年前 |
Alan Jones · 使用random从列表创建动态列表 2 年前 |
breking bed · 单击按钮时如何随机选择唯一编号 2 年前 |
Carrot Man · 如何让熊猫数据框随机填充1和0? 2 年前 |
Justin Arnold · 范围内的随机数不是随机数 2 年前 |
Menna Magdy · 如何使用非模型字段进行过滤? 2 年前 |