Я использую пользовательский фрагментный шейдер для создания цветового градиента по круговой траектории SKShapeNode
.Вот результат:
Что я могу сделать, в SpriteKit или в пользовательском шейдере, чтобы устранить наложение?
PS Я хочу, чтобы это работало и на watchOS.
Фрагмент шейдера:
void main() {
float normalizedPosition = v_path_distance / u_path_length;
gl_FragColor = vec4(normalizedPosition, normalizedPosition, normalizedPosition, 1.0);
}
ViewController:
import UIKit
import SpriteKit
class ViewController: UIViewController {
var skView: SKView {
return view as! SKView
}
var scene: SKScene!
override func viewDidLoad() {
super.viewDidLoad()
scene = SKScene(size: view.frame.size)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
skView.presentScene(scene)
// Create node
let ringNode = SKShapeNode(circleOfRadius: scene.size.width / 4)
ringNode.position = CGPoint(x: scene.frame.midX, y: scene.frame.midY)
ringNode.lineWidth = 30
// Apply shader
ringNode.strokeShader = SKShader(fileNamed: "fragment.fsh")
// Add node to scene
scene.addChild(ringNode)
}
}