我想旋转我的Sprite Kit场景并同时将SKShader应用于场景

时间:2018-04-09 12:33:35

标签: swift sprite-kit

我现在正在使用SKAction旋转SKCamera,实习生旋转场景。这非常重要,因为重力和所有节点(除了摄像机子节点)也会旋转。现在我有一个应用于场景的色差着色器,每次旋转场景时,场景的背景颜色都会立即覆盖整个屏幕。无论使用哪种着色器都会发生这种情我甚至做了一个着色器,只是给出了确切的纹理,它仍然发生。另外只是设置相机zRotation并不能解决这个问题,所以SKAction不是造成这个问题的原因。这是着色器:

 void main( void )
{
    float divider = 200;
    float deltaX = sin(v_tex_coord.y * 3.14 * 10 + u_time * 4) * 0.01;

    vec2 rCoord = v_tex_coord;
    rCoord.x = rCoord.x - sin(u_time * 10) / divider + deltaX;
    rCoord.y = rCoord.y - sin(u_time * 10) / divider;

    vec2 gCoord = v_tex_coord;
    gCoord.x = gCoord.x + sin(u_time * 10) / divider + deltaX;
    gCoord.y = gCoord.y + sin(u_time * 10) / divider;

    vec2 bCoord = v_tex_coord;
    bCoord.x = bCoord.x + deltaX;

    vec4 rChannel = texture2D(u_texture, rCoord);
    vec4 gChannel = texture2D(u_texture, gCoord);
    vec4 bChannel = texture2D(u_texture, bCoord);

    gl_FragColor = vec4(rChannel.r, gChannel.g, bChannel.b, 1.0);;
}

这也是初始化着色器的代码:

let shader = SKShader(fileNamed: "ChromaShader.fsh")
self.shader = shader
shouldEnableEffects = true

提前致谢!

0 个答案:

没有答案