试玩 RealityComposerPro 中的 Shader Graph:不同噪声图像 Noise 可视化

313 阅读2分钟

说明

在 visionOS 和RealityComposerPro 中,Shader Graph 自带了几种噪声生成节点,值得我们研究一下。

截屏2024-07-07 16.03.23.png

分类

自带的噪声生成有 7 种,根据输入维度分为两种:2D 和 3D。一般情况下,UV 坐标都是 2 维的,因此将 UV 坐标直接输入 2D 噪声节点就能产生完整图像,但 3D 版可以多一个输入变量(比如位置、距离或时间)用来产生连续平滑的变化。

2D 版有三个:

  • Noise2D:2D 版的 Perlin 噪声,当输入连续时,可以产生连续平滑的图像,可以返回 Float 或 Vector2、Vector3、Vector4 类型
  • CellNoise2D:2D 版的 Cell 噪声,当输入连续时,可以产生不连续的噪声,只能返回 Float
  • WorleyNoise2D:2D 版的 Worley 噪声,当输入连续时,可以产生连续但聚集成团的噪声,只能返回 Float

3D 版有四个,多了分形噪声 FractalNoise:

  • Noise3D:3D 版的 Perlin 噪声,当输入连续时,可以产生连续平滑的图像,可以返回 Float 或 Vector2、Vector3、Vector4 类型
  • CellNoise3D:3D 版的 Cell 噪声,当输入连续时,可以产生不连续的噪声,只能返回 Float
  • WorleyNoise3D:3D 版的 Worley 噪声,当输入连续时,可以产生连续但聚集成团的噪声,只能返回 Float
  • FractalNoise3D:3D 版的 Fractal 噪声,当输入连续时,产生快速变化的噪声,可以返回 Float 或 Vector2、Vector3 类型

从原理来源角度,CellNoiseWorleyNoise 都是来自Voronoi 图,区别是 CellNoise 不连续而 WorleyNoise 是连续的。 而分形噪声 FractalNoise 其实是从 Perlin 噪声(即 Noise3D)叠加产生的,两者整体效果类似但分形版细节变化更为剧烈。

图像

为了更好呈现效果,我们的输入范围为:0~5,3D 版本将 Time 做为第 3 个变量输入,用以产生连续平滑的变化。

下图从左到右分别为: CellNoise2D->CellNoise3D->FractalNoise3D->Noise2D->Noise3D->WorleyNoise2D->WorleyNoise3D

项目代码

请参考 NoiseVisualization 目录 github.com/XanderXu/Re…

或 S02_Noise 目录 github.com/XanderXu/Sh…