问题标签 [simplex-noise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4507 浏览

glsl - GLSL - 将 2D 纹理用于 3D Perlin 噪声而不是程序 3D 噪声

我为太阳表面实现了一个着色器,它使用simplex来自ashima/webgl-noise 的噪声。但是它花费了太多的 GPU 时间,特别是如果我要在移动设备上使用它。我需要做同样的效果,但使用噪声纹理。我的片段着色器如下:

如何更正此着色器以使用噪声纹理以及纹理应该是什么样子?

据我所知,OpenGL ES 2.0不支持 3D 纹理。此外,我不知道如何创建 3D 纹理。

0 投票
1 回答
167 浏览

java - 为什么噪声算法使用 256 个排列值?

我已经看到了许多噪声实现,例如perlinsimplex noiseto procedural terrain generation,它们似乎都使用 256 个排列值。为什么是这样?使用超过 256 会有什么影响?

0 投票
0 回答
415 浏览

unity3d - 单纯形噪声中的 CG 着色器视觉伪影

我目前正在尝试在 CG 着色器中创建 3D 单纯形噪声实现以实现统一。我决定使用这个最初用 C++ 编写的实现并将其移植到 CG,因为它们很相似。

我决定提供排列和梯度向量作为纹理,因此它们可以很容易地在代码中使用。一切正常,除了每个单纯形边缘的地方。这会导致我想修复的不可接受的视觉伪影。

神器

注意纹理上的虚线。我认为这可能是舍入/地板的问题,但我无法弄清楚是哪个操作导致了这种情况。我试过玩地板,但没有任何帮助。

这是我的着色器代码:

以下是在着色器中模仿常量数据的图像:

梯度 研究生3

排列 向量

请记住将它们分配给着色器中的适当属性。

0 投票
1 回答
1065 浏览

java - 将 2D 单纯形噪声转换为 1D?

好吧,我正在用 Java 开发一个小游戏,我正在使用我在网上找到的这个Simplex Noise 生成器。我面临的问题是:我正在生成我的游戏世界,如下所示:

这很明显给了我二维噪声。最终结果如下所示: 看

据我了解噪音,2D噪音适用于自上而下的游戏。不过,我正在开发的是一款横向卷轴游戏(如泰拉瑞亚、星界边境、克雷亚等)。所以我需要一个 terragen 来给我地形的最顶层,谷歌告诉我那是一维噪声,所以这里的问题是:如何将这个二维噪声转换成一个类似于地形的一维噪声?

0 投票
1 回答
1066 浏览

directx-11 - 3D 单纯形噪声突然高度变化

我在生成 3D 噪波时遇到问题。

我编写了一个使用 DirectX11 渲染所有内容的框架。

我生成一个 Geo-sphere 并使用 3D Simplex Noise 函数修改高度值。

问题是,当我看到结果时,我看到高度的突然变化根本不像噪音......

在此处输入图像描述

(图片中央的长方形)

我已将 Persistence 修改为 0.1,因此在这里很容易看到错误...

在此处输入图像描述

我无法弄清楚身高突然变化的问题。这是一个错误,对吧?

我用以下方法计算高度......

此外,更改函数的基坐标并不能消除这种奇怪的输出。(对于任何认为从 0,0,0 开始以某种方式搞砸的人)

噪声实施

float Noise::octavenoise3D( const float octaves, const float persistence, const float scale, const float x, const float y, const float z, int *perm, int *grad3 )

浮动噪声::rawnoise3D( 常量浮动 x, 常量浮动 y, 常量浮动 z, int *perm, int *grad3 )

int Noise::fastfloor( const float x )

浮动噪声::点(常量 int* g,常量浮动 x,常量浮动 y,常量浮动 z)

0 投票
1 回答
672 浏览

perlin-noise - Perlin 和 Simplex Noise 的排列和梯度表在实践中是如何工作的?

因此,我一直在研究 Perlin 和 Simplex 噪声的工作原理,虽然我了解了常规 Perlin 噪声的核心原理,但我对排列和梯度表的工作原理有点困惑。

据我了解,它们提供比种子随机数生成器更好的性能,因为它们是预先计算的值的表,可以很好地索引以便快速访问。

我不完全明白的是它们实际上是如何工作的。我已经看到一个排列表实现为从 0-255 的洗牌值的数组,如下所示:

但我不确定这样做的实际目的是什么。我想知道的是:

  • 排列表是如何与网格点相关的?
  • 梯度表是如何生成的?
  • 排列表中的值如何与梯度表一起使用?排列值是否对应于梯度表中的索引?
0 投票
1 回答
695 浏览

algorithm - 使用另一种算法修复由 Perlin 噪声产生的方向性伪影

我最近看到 Simplex 噪声(3D 和更高维度)已获得专利......存在一种单纯形噪声的替代品来避免(只有律师可以告诉)专利部件,即 Opensimplex。但我不是律师,所以我不想冒任何风险......

回到旧的噪声算法,即 Perlin 噪声及其方向伪影。

谁能想到一种算法可以消除或至少减少 3D 中 Perlin 噪声生成的方向性伪影?即我需要一种算法来纠正 Perlin 噪声的最终生成结果。这个算法是否慢也没关系,因为一切都是在启动时生成的!:)

0 投票
1 回答
616 浏览

java - 绘制并获得 OpenSimplexNoise 结果

我想用 OpenSimplexNoise 生成一个随机地形。首先,我只想得到一个结果并将其绘制到一个窗口中。

我现在的问题是:如何获得 OpenSimplexNoise 的正确输出(因为有很多方法,我只是不知道哪个是正确的)以及如何绘制这个结果。

它应该如下所示: 在此处输入图像描述

这是我得到的当前代码。

这是任何需要它的人的 OpenSimplexNoise 的链接: https ://gist.github.com/KdotJPG/b1270127455a94ac5d19

0 投票
1 回答
270 浏览

java - OpenSimplexNoise 更高的细节级别

我是世界生成和用于它们的算法的新手,所以我希望有人能给我一些有用的解释或代码或两者兼有,或链接到我在寻找解决方案时错过的一些资源。

如何使用 OpenSimplexNoise 获得更高的细节级别?

我知道在像 PerlinNoise 这样的算法中,它可以通过频率和相加倍频来完成。那么如何使用 OpenSimplexNoise 实现这样的目标呢?

这是我已经得到的:

我怎样才能实现它以获得更平坦的森林等结果?

0 投票
1 回答
221 浏览

java - 如何将 SimplexNoise 用于 1D

我一直在玩 Simplex Noise。但我仍然不知道我应该如何正确使用它。我的目标是为 Sidescroller 游戏获取地形。它应该具有多边形风格的外观。

我从这里得到了 SimplexNoise 的来源

问题:

  • 方法getNoise(int x, int y)它们的值是什么。他们改变了什么?我见过人们使用嵌套的 for 循环和 do getNoise(i + x, j + z)

  • 为什么值最大特征,持久性不变?我应该有超过 1 个 SimplexNoise 类来获得不同的生物群落吗?