繁体   English   中英

带有SpriteKit的ShaderToy?

[英]ShaderToy with SpriteKit?

有人可以提供一些有关如何使用Sprite Kit中shadertoy网站中的代码的指导吗? 这可以与.fsh文件中的其他着色器一起使用,但是我似乎无法从shadertoy中获取任何代码来工作。 我使用.sks文件将SpriteNode添加到场景中。 我使用界面生成器中的SKNode检查器将自定义着色器应用于SpriteNode。

我设法从shadertoy网站上获得了一些着色器,可用于Sprite Kit。

首先,在着色器中,您将看到:

void mainImage( out vec4 fragColor, in vec2 fragCoord )

更改为:

void main ()

通常,您将需要更改以下变量的名称:

iGlobalTimeu_time

fragColorgl_FragColor

fragCoordgl_FragCoord

iResolutionu_sprite_size

但是在iOS9中, u_sprite_size损坏了。 我一直在遵循其他地方建议的解决方案,方法是创建我自己的制服并c_sprite_size并在检查器的sks文件中设置值。

SpriteKit制服列表在这里:

SKShader类参考

全局变量似乎在fsh文件中不能很好地工作。 在某些情况下,我不得不更改代码以将变量值作为函数参数传递; 我是着色器编程的新手。 可能还有其他方法可以使变量如何声明为统一变量和可变变量等。

我遇到了一些无法在模拟器或Sprite Kit场景编辑器上使用的着色器,但可以在设备上使用。 我一直在使用带有iOS 9.2的iPhone 6s。

最后,值得注意的是,当您在iDevice上运行该应用程序时,着色器编译错误将显示在调试控制台中。 例如


Jet: Error Domain=MTLLibraryErrorDomain Code=3 "Compilation failed: 

program_source:6:1: error: unknown type name 'precision' precision mediump float; ^ program_source:6:19: error: expected unqualified-id precision mediump float; ^ program_source:8:1: error: unknown type name 'varying' varying vec2 position; ^ program_source:8:13: error: expected ';' after top level declarator varying vec2 position; ^

这样就可以修复一些着色器。 😊

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM