Проблемы с производительностью SKLightNode
Я экспериментировал сSKLightNode
в SpriteKit (новинка в iOS8) и даже в очень простом тестовом примере я получал ужасную производительность. Например, содин источник света насплошной цветSKSpriteNode
я получил13,2 FPS наIPad третьего поколения, Если я добавлювторой источник света, это падает до ужасного7,7 FPS.
Видео сессии WWDCЧто нового в SpriteKit упоминается, что вы можете получить менее 60 FPS, если у вас есть более одного источника света на одном и том же спрайте, но я не могу даже получить 60 FPS с одним.Вот соответствующий раздел.
Вот моя тестовая сцена в swift (она начинается с одного источника света, и можно нажать еще несколько):
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let center = CGPointMake(size.width / 2.0, size.height / 2.0)
let background = SKSpriteNode(color: SKColor.lightGrayColor(), size: size)
background.position = center
background.lightingBitMask = 1
addChild(background)
let light = SKLightNode()
light.position = center
light.falloff = 1.0
light.lightColor = SKColor(hue: 0.62 , saturation: 0.89, brightness: 1.0, alpha: 0.4)
light.shadowColor = SKColor.blackColor().colorWithAlphaComponent(0.4)
addChild(light)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let light = SKLightNode()
light.position = location
light.falloff = 1.0
light.lightColor = SKColor(hue: 0.62 , saturation: 0.89, brightness: 1.0, alpha: 0.4)
light.shadowColor = SKColor.blackColor().colorWithAlphaComponent(0.4)
addChild(light)
}
}
}
Вот несколько скриншотов, показывающих это на моем третьем поколении iPad:
А вот как выглядит вкладка производительности после нажатия кнопки «Анализ», когда она работает с одним источником света:
Это явно связано с GPU, но я пытаюсь понять, что я просто делаю что-то ужасно неправильное или это просто проблема с бета-версией, которая (надеюсь) будет устранена ко времени выпуска. Я в настоящее время использую Xcode6-Beta5.
ОБНОВИТЬ
Я обновил свой iPhone 5S до iOS8 и попробовал там то же самое, и он отлично работал при 60FPS с 8 источниками света. Итак, я думаю, что это просто проблема с GPU iPad 3-го поколения, просто не подходящей для этой задачи. Я попробую еще раз после того, как выйдет следующая бета-версия, и посмотрю, что изменится, на всякий случай.