SKShader 创建视差背景

Bad*_*ger 5 fragment-shader parallax sprite-kit swift3

带有固定相机的视差背景很容易实现,但由于我正在制作自上而下的 2D 空间探索游戏,我认为有一个 SKSpriteNode 填充屏幕并成为我的 SKCameraNode 的子项并使用 SKShader 绘制一个视差星空会更容易。

我继续使用 shadertoy 并找到了这个看起来很简单的着色器。我在 shadertoy 上成功地对其进行了调整,以接受 vec2() 作为我想作为 SKAttribute 传递的运动速度,以便它可以跟随我的船的运动。

这里是原始来源:https : //www.shadertoy.com/view/XtjSDh

我设法对原始代码进行了转换,因此编译时没有任何错误,但屏幕上没有显示任何内容。我尝试了各个功能,它们确实可以生成固定图像。

有什么指示可以使它工作吗?

谢谢!

Bad*_*ger 1

编辑:代码是干净的并且现在可以工作。我已经为此设置了一个 GitHub 存储库。

我想我没有正确解释我想要什么。我需要一个跟随相机的星空背景,就像你可以在子空间中找到的那样(过去)

结果非常酷且令人信服!当节点数量成为瓶颈时,我可能会再回到这个问题。我仍然相信正确的方法是使用着色器!

这是我在 GitHub 上的代码的链接。我希望它对某人有用。该工作仍在进行中,但效果良好。存储库中包含来自SKTUtils(Ray Wenderlich 的一个库,已在 github 上免费提供)的源代码以及我自己对 Ray 工具的扩展(我称之为nut-n-bolts)的源代码。这些只是每个人都应该觉得有用的常见类型的扩展。当然,您拥有StarfieldNodeInteractiveCameraNode的源代码以及一个小型演示项目。


Starfield 在我的项目中发挥作用