RealityKit 地形着色器 - 表面着色器和几何修改器

RealityKit 地形着色器

此项目向您展示如何使用分形布朗运动 (fBM) 通过 iOS RealityKit 自定义材料生成增强现实 (AR) 地形。RealityKit 自定义材质包括表面着色器和几何修改器,在 OpenGL 中也称为片段和顶点着色器。

分形布朗运动 (fBM)

fBM(分形布朗运动)在计算机图形学中广泛用于模拟自然现象和纹理,如地形、海岸线、火、烟、云、水流、水波、急流、恐龙皮肤、皱纹等。值得注意的是如何在如此多的领域使用如此简单的随机函数来模拟自然界的各种形式。

该项目展示了如何使用 fBM 函数使用 iOS RealityKit 自定义材质(包括表面着色器和几何修改器,在 OpenGL 中也称为片段和顶点着色器)非常简单地生成地形

参数

我们使用的 fBM 函数的形式主要有参数

uv – 纹理坐标([0,0] 到 [1,1] 的值,代表我们要生成的图像的四个角)

时间——以秒为单位(该值将根据时间为 fBM 生成图像设置动画)

fBM 的属性

fBM 可以返回单个值(一维值)或多个值(例如 3 维向量)。您可以将 fBM 视为依赖于图像当前像素位置的随机数生成器。然而,它不是完全随机的,因为函数相对于它的邻居变化非常平滑。

因此,如果用户传入 (0.10,0.10) 和 (0.11,0.10) 的 uv 坐标值,则返回值应该彼此非常接近。对于 3 维向量 ,每个分量的值将与其邻居的值非常相似。

除了相对于空间(即位置或 uv 坐标)平滑变化外,fBM 还相对于时间平滑变化。因此,时间 = 0.10 秒时的返回值与时间 = 0.11 秒时的值非常相似。这使它具有在时间上具有流畅动画的特性。

此外,许多实现 fBM 的连续性不仅限于值的连续性,还包括其梯度的连续性以及曲率(半径)的连续性。这使得 fBM 函数非常“平滑”,因此非常适合艺术渲染。

fBM 具有类似分形的特性。如果放大到小区域,您将能够在图像未放大时注意到类似的图案。

详细说明

带有表面着色器和几何修改器的 RealityKit 地形着色器

源代码许可证 – GPLv2

RealityKit 地形着色器 版权所有 (C) 2023 djembe-waka

该程序是免费软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可的第 2 版,或(由您选择)任何更高版本。

分发该程序是希望它有用,但不提供任何保证;甚至没有针对特定用途的适销性或适用性的默示保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应该随本程序一起收到 GNU 通用公共许可证的副本;如果没有,请写信给 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA。

编译

先决条件

  • Xcode 14
  • iOS 16

建造

  • 下载源代码
  • 启动 Xcode 并加载 RealityShaders.xcodeproj
  • 在 iPhone 模拟器或设备上构建和运行

打开管道

RealityKit Terrian Shader 是使用 Open Pipeline 构建下一代图形设计软件的社区项目的一部分。Open Pipeline使用简化的数字合成节点图减少图形设计中的认知过载。它之于图形设计软件的用户界面,就像 Markdown 之于 HTML 一样。

GitHub

查看 Github