Могу ли я использовать UIBlurEffect в сцене SpriteKit для размытия изображения

Есть много вопросов о том, как сделать размытие в SpriteKit, большинство из которых, похоже, используют фильтр CIGaussianBlur. Я сделал это, но это кажется медленным для размытия больших изображений, и есть другие проблемы, такие как размытие по краям.

UIBlurEffect кажется идеальным инструментом для представлений UIKit, и я понимаю, что он оптимизирован и эффективен, и кажется, что лучший эффект был бы, если бы он работал в SpriteKit.

Мне интересно, можно ли каким-то образом использовать размытие UIKit в SpriteKit. Например, возьмите UIImage, каким-то образом сымитируйте UIKit UIImageView, размойте его, возьмите размытое изображение и затем используйте его как текстуру в SKSpriteNode.

Я не собираюсь размывать всю сцену, только один узел в ней, и я не хочу использовать какие-либо сторонние библиотеки.


person rghome    schedule 02.12.2015    source источник
comment
Насколько я знаю, элементы UIKit не будут работать внутри элементов SpriteKit. Если вам нужно показать размытое изображение, единственный вариант, который я могу предложить, исходя из моих знаний, - это добавить его напрямую в контроллер представления, что в большинстве случаев не является практическим решением.   -  person Harikrishnan    schedule 02.12.2015
comment
Я согласен, но мне интересно, могу ли я каким-то образом подделать контекст UIKit, использовать его, а затем получить результат и перенести его в SpriteKit.   -  person rghome    schedule 02.12.2015
comment
Возможен грязный взлом. Я бы рекомендовал не пробовать, так как CIGaussianBlur может быть быстрее. Представление визуальных эффектов на самом деле не размывает изображение, поэтому вы не можете использовать его для размытия изображения ни внутри, ни снаружи UIKit. Он просто добавляет несколько слоев и делает изображение размытым. Если вам нужен тот же эффект, вы можете создать представление с помощью visualeffectview, а затем нарисовать его с помощью CGGraphics, что, конечно, является настоящим грязным и непрофессиональным взломом. :-)   -  person Harikrishnan    schedule 02.12.2015
comment
Если CIGaussianBlue слишком медленный для вас, вы можете просто предварительно визуализировать стеклянную панель размытия, сохранить ее как изображение и наложить эту стеклянную панель поверх изображения, которое вам нужно размыть.   -  person Knight0fDragon    schedule 02.12.2015
comment
На самом деле, сейчас я использую метод предварительного рендеринга, растворяя его в основном изображении. Во время рендеринга происходит небольшая задержка, которую я уменьшил, сделав это в фоновом режиме немного раньше, чем мне это нужно, а затем отложив начало действия постепенного появления, если оно не готово. Однако, если кто-то опубликует решение сделать размытие в реальном времени в SpriteKit с использованием размытия UIKit, тогда я приму его.   -  person rghome    schedule 03.12.2015