Comments 66
На HTC One X получилось вот такое db.tt/2A2yKX5u
И еще, у вас опечатка: первые уравнения у вас для преобразования из сферической в декартову, а вторые наоборот.
И еще, у вас опечатка: первые уравнения у вас для преобразования из сферической в декартову, а вторые наоборот.
+2
Хм, странно, мне казалось, что на One я тоже тестировал. Похоже, спутал с Butterfly или ещё чем-то. Значит, там такая же беда, как на S4. :(
0
Nexus 7, аналогично.
0
30 fps на третьей тегре с двумя треугольниками? Ну оок, лол.
+4
А, я перепутал One и One X.
Значит, проблема как минимум с теграми (One X и Nexus 7).
Значит, проблема как минимум с теграми (One X и Nexus 7).
0
На WindowsAndroid сначала «Unfortunately, Planet has stopped.», потом пустое чёрное окно с заголовком.
0
Попробуйте обновлённую сборку, пожалуйста. Мне как раз случай с вашего скриншота был наиболее интересен, вдруг удалось его исправить?
0
Уже лучше, но артефакты есть. db.tt/FrXy9lO7
И по поводу некорректного отображения на стыке передней и задней полусфер: можно ведь преобразовывать координаты так, чтоб проекция с большим углом к сфере была всегда по периметру отображаемой плоской проекции.
И по поводу некорректного отображения на стыке передней и задней полусфер: можно ведь преобразовывать координаты так, чтоб проекция с большим углом к сфере была всегда по периметру отображаемой плоской проекции.
0
Там тот же билд. :)
Вообще, странно, что даже для одного и того же чипа (Tegra 3) результаты получаются разными (на Nexus 7 всё ОК, на One X нет), но тут уже, видимо, какая-то разница в драйверах начинает сказываться. Если мне One X попадётся в руки, попытаюсь додавить этот эффект. Ну, или может быть кто-нибудь мне поможет, исходники-то открыты. :)
Вообще, странно, что даже для одного и того же чипа (Tegra 3) результаты получаются разными (на Nexus 7 всё ОК, на One X нет), но тут уже, видимо, какая-то разница в драйверах начинает сказываться. Если мне One X попадётся в руки, попытаюсь додавить этот эффект. Ну, или может быть кто-нибудь мне поможет, исходники-то открыты. :)
0
В свое время делал что-то похожее (еще на спектрум потом на 386х).
Вращающиеся фигуры назывался. (разные фигуры на выбор вращались на экране)
Типа наглядного пособия по математике.
Только там я применял массивы значений косинусов, чтобы быстрее считалось.
Писалось на Бейсике, в тетрадках. Потом по полдня вбивалось.
Была даже скомпилиная программа, которая зачетом ушла и больше не осталась.
Надо бы повторить, с оглядкой на Ваш код.
И кстати, просчет не видимости точки (что-то типа Z буфера) высчитывался как-то интересно.
Я потом эту формулу в другом виде в мат.анализе нашел. Хотя вывел сам.
Вращающиеся фигуры назывался. (разные фигуры на выбор вращались на экране)
Типа наглядного пособия по математике.
Только там я применял массивы значений косинусов, чтобы быстрее считалось.
Писалось на Бейсике, в тетрадках. Потом по полдня вбивалось.
Была даже скомпилиная программа, которая зачетом ушла и больше не осталась.
Надо бы повторить, с оглядкой на Ваш код.
И кстати, просчет не видимости точки (что-то типа Z буфера) высчитывался как-то интересно.
Я потом эту формулу в другом виде в мат.анализе нашел. Хотя вывел сам.
+3
На Lenovo A750 всё работает, 30FPS.
А Земля у Вас в правильную сторону вращается? А то мне кажется что нет )
А Земля у Вас в правильную сторону вращается? А то мне кажется что нет )
+1
О, а вот об этом я ни разу не задумывался, спасибо. :)
0
Забавный результат…
50+ FPS но появились деформации как на скрине в первом коменте только гораздо меньшие. как буж-то землю нарезали на плоские круги и некоторые слегка провернули относительно других.
50+ FPS но появились деформации как на скрине в первом коменте только гораздо меньшие. как буж-то землю нарезали на плоские круги и некоторые слегка провернули относительно других.
0
Ого, вот это странно. У меня сейчас такой эффект на One тоже воспроизводится (именно такой, «слоями», а не как в комментарии), но с чего бы он мог появиться, если предыдущий вариант работал нормально?.. Загадочно.
0
Выглядит забавно :) На вскидку — может где-то ошибки округления возникают ( всмысле погрешности вычисления координат)?
0
Ну, они бы и в предыдущем варианте тогда возникали. :) А вычисление текстурных координат в обоих шейдерах сделано одинаково.
Вообще, вот сейчас я ковыряю One, и у меня стойкое ощущение, что он насильно сжимает текстуру. Если это так, то я уже ничего сделать не смогу…
Вообще, вот сейчас я ковыряю One, и у меня стойкое ощущение, что он насильно сжимает текстуру. Если это так, то я уже ничего сделать не смогу…
0
Собрал ещё три варианта. :)
На этот раз, у меня получилась почти нормальная работа на HTC One, путём переставления битов и изменения множителя. Мелкие артефакты изображения всё равно присутствуют, но стало уже лучше.
Итак, для HTC One: версия "только вращение", версия с наклоном.
На этот раз, у меня получилась почти нормальная работа на HTC One, путём переставления битов и изменения множителя. Мелкие артефакты изображения всё равно присутствуют, но стало уже лучше.
Итак, для HTC One: версия "только вращение", версия с наклоном.
0
выглядит классно на nexus 7, 60fps, только где наклон выбают артефакты
0
Такие, как на последнем скриншоте? ;)
0
да, как думаете, справитесь с этим? я залип на этот шарик, на работе, минут на 15, еще коллегам потом показывал ) А можно еще звезды добавить на задний фон?
0
Хороший вопрос. С одной стороны, хочется это исправить, а с другой — шейдер «с наклоном» уже и так очень сложный, от изящества первой версии в нём почти ничего не осталось. Так-то демка создавалась чисто ради вращения вокруг своей оси.
Так или иначе, исходники доступны всем, поэтому если не я, то кто-нибудь другой наверняка что-то сможет сделать. :)
Ну а звёзды… чуть позже прикручу. :)
Так или иначе, исходники доступны всем, поэтому если не я, то кто-нибудь другой наверняка что-то сможет сделать. :)
Ну а звёзды… чуть позже прикручу. :)
0
Тестирую эту версию, обе дают 60 фпс, версия с наклоном изначально без наклона, покрутил, всё ок, только на полюсах артефакты.
0
Вот так, имея один эмулятор Android, можно потестировать свое приложение «коллективным разумом» на большом количестве различных android девайсов
+1
Evo 3D, 60-61 fps. Только при приближении появляется небольшой шум.
0
Читаю коменты, и мне страшно. Если два треугольника с шейдерами вызывают такие различия на разных девайсах, через что же проходят разработчики более серьезных игр…
0
Спасибо за статью. Я подобное во флеше делал, тока до гениальности проще. Брал рисовал круг, под ним слой с прямоугольной картой+ маска по форме круга и двигал карту слева направо циклично. В итоге сделал солнечную систему из 7 планет. Задачка на экзамене такая была.
0
можно еще с нормалями побаловаться, придав земле эффект трехмерности.
ru.wikipedia.org/wiki/Рельефное_текстурирование
ru.wikipedia.org/wiki/Рельефное_текстурирование
0
Ну да, решив задачу нахождения сферических текстурных координат, дальше уже можно двигаться в направлении любых спецэффектов, использующих текстуры. :)
0
Я такое реализовывал
0
просто имхо в тему, может пригодится:
http://www.ixbt.com/video/sphere-triangles.shtml
http://www.ixbt.com/video/sphere-triangles.shtml
0
Стал портировать на WebGL, получилась вот такая пангея.
+3
А почему только в Chrome работает?
0
У меня работает в Chrome и Firefox, но не работает в Safari.
Я пока не разбирался в причинах, всё-таки это мой первый webGL, сделанный менее чем за сутки.
Я пока не разбирался в причинах, всё-таки это мой первый webGL, сделанный менее чем за сутки.
0
Ан нет, у меня в Safari тоже работает: там надо было явно включить поддержку WebGL, тогда всё пучком.
Больше скажу, теперь у меня это работает даже в Firefox for Android.
Больше скажу, теперь у меня это работает даже в Firefox for Android.
+1
Отличная статья!
И очень хорошая идея. Ваш код и «хак» arbg-формата отлично работает на IOS.
Попробовала сделать на IPhone,
Одна проблема с fps. С чего ей так падать непонятно, может у кого есть мысли насчет этого?
Причем пробовала сделать нативные шрейдеры, которые сами делают преобразование из декартовых в сферические, но тоже грустно получилось с производительностью.
И очень хорошая идея. Ваш код и «хак» arbg-формата отлично работает на IOS.
Попробовала сделать на IPhone,
Одна проблема с fps. С чего ей так падать непонятно, может у кого есть мысли насчет этого?
Причем пробовала сделать нативные шрейдеры, которые сами делают преобразование из декартовых в сферические, но тоже грустно получилось с производительностью.
+1
Да, на четверке смотрю. На ipad-mini ситуация получше. Но все-таки это довольно странно. Я работаю на cocos2d и там огромное множество преобразований со спрайтами, и fps не падает. А тут от одной картинки все так опустилось. В предложенном методе, вообще, исключительно линейные преобразования, которые GPU по сути должен на раз-два делать. Возможно тут переключение между текстурами играет нехорошую роль. Но за статью и за идею Вам спасибо, при любом fps).
0
Преобразования со спрайтами обычно делаются на уровне вершин, которых в спрайте всего четыре штуки (как и здесь). А вот пикселей здесь — примерно 321700 (это только те, которые попадают под «if (z2 > 0.0)», а так их 409600), и для каждого выполняется довольно сложный пиксельный шейдер с произвольной выборкой из двух текстур.
Так что, да, в данном случае это всего лишь просто забавная демка, с сомнительной применимостью, хотя позапрошлогодние GPU её уже вполне тянут на 60 fps, а дальше будет только лучше.
Так что, да, в данном случае это всего лишь просто забавная демка, с сомнительной применимостью, хотя позапрошлогодние GPU её уже вполне тянут на 60 fps, а дальше будет только лучше.
0
Sign up to leave a comment.
Сфера из двух треугольников