说明
在 visionOS 和RealityComposerPro 中,Shader Graph 自带了几种噪声生成节点,值得我们研究一下。
分类
自带的噪声生成有 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 类型
从原理来源角度,CellNoise 和 WorleyNoise 都是来自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...