Войти
ПроектыФорумУтилиты

4k intro с GPU-частицами и Android приложение

Страницы: 1 2 3 Следующая »
#0
18:45, 2 апр 2016

Быстрая система частиц на GPU, обладающая следующими характеристиками:
1) Занимает константное количество памяти, не зависящая от количества частиц. Я запускал слайдшоу из миллиарда частиц на смартфоне с 1 ГБ памяти)
2) Не потребляет процессорного времени, так как всё делает GPU.
3) Помещается в exe'шник размером менее 3 КБ.
4) Является функцией от времени => её можно перематывать в любой момент и её не нужно просчитывать, когда она не видима камерой.
5) Для реализации достаточно поддержки OpenGL ES 2.0 и даже не нужно ни одного расширения!
6) Нет сортировки, поэтому используется только аддитивный блендинг. Но метод можно расширить, если реализовать поразрядную сортировку на GPU с помощью вычислительных шейдеров. Но в этом случае пункты 1, 3 и 5 исчезнут.

+ Старая

Новая оптимизированная версия под Android на OpenGL ES 2.0 с возможностью крутить камерой и кучей других фич. Благодаря пункту 5 работает даже на таком говне мамонта, как Mali 400.
Ссылка: Google Play
Подробнее про управление можно узнать из ролика на странице приложения или прочитать в окне "О программе...".

#1
20:46, 2 апр 2016

скриншоты?

#2
21:17, 2 апр 2016

Suslik
> скриншоты?
Добавил один, но пришлось jpeg'ом качество сильно испортить, чтобы влезть в ограничение 125 КБ. И вообще это надо в движении смотреть. Ещё добавил незапакованную версию, на которую антивирусы ругаться не должны.

#3
21:21, 2 апр 2016

прикольно, как делал? это через image2D во фрагментном шейдере или через геометрический шейдер?

#4
21:33, 2 апр 2016

Suslik
> прикольно, как делал? это через image2D во фрагментном шейдере или через
> геометрический шейдер?
Вершинный шейдер + фрагментный шейдер. Никаких геометрических и вычислительных шейдеров не использовал. В демке нет ни одной текстуры. Всё полностью генерируется в вершинном шейдере в реальном времени и сразу же рисуется как point sprites. Шейдер использует только текущее время, пару десятков констант (uniform'ов) и gl_VertexID. Никаких вершинных атрибутов, никаких текстур не используется вообще.
VBO только один - на 4 байта. Он нужен OpenGL, чтобы тот не подумал, что если я не задал ни одного атрибута, то можно ничего и не рисовать. Такое поведение вроде как прописано в спецификации compatibility контекстов версии меньше 4.3 и я реально с ним сталкивался. Правда не на всех драйверах. В core контексте и в compatibility начиная 4.3 такого уже нет. Но я создавал compatibility, чтобы за счёт фиксированного функционала уменьшить размер демки.

#5
21:35, 2 апр 2016

аа, понял. я просто думал, что в таком случае память под автоматически сгенерированные индексы всё равно выделяется на стороне GPU. но логично, что по идее может и обойтись без неё.

#6
21:56, 2 апр 2016

Но вообще можно сколько угодно расширять этот метод текстурами, UBO и другими способами передавать данные в шейдер. Можно передавать какие-нибудь коэффициенты полинома или явную зависимость какого-то параметра от возраста частицы. И так далее.
А можно прямо в код шейдера вписать любую функцию от времени.

#7
21:21, 3 апр 2016

Новая версия: FlyingParticles 1.1
По сравнению с предыдущей версией стало намного красивее.
Немного увеличил размер частиц и сделал их гораздо более яркими. Увеличил скорость вращения эмиттера. Теперь он разбрасывает частицы в разные стороны по спирали.

Кстати, забыл сказать, что ещё с первой версии на Shift можно ускорять время, а на Ctrl - замедлять. В замедленном режиме здорово наблюдать, как перед тобой пролетают частицы.

#8
23:58, 3 апр 2016

красиво! Сделать еще вывод FPS и будет бэнчмарк :)

#9
0:54, 4 апр 2016

RadianTOR
> Сделать еще вывод FPS и будет бэнчмарк :)
Ну эту фичу я для фрапса оставил.

#10
16:29, 8 апр 2016

Добавил музыку, изменил эффект и сделал автоматическое изменение скорости эффекта. Получилась вот такая интро:
FlyingParticles 4k intro

+ Скрин

Правда не совсем обычная, потому что нет сюжета и длится она бесконечно. К тому же, на разных видеокартах она выглядит немного по-разному.

Ещё осталось немного места, но не знаю, что бы сюда ещё полезного добавить. И это я ещё управление не выпилил, без него ещё место освободится. В целом наверное доступно ещё пол-килобайта до лимита в 4К.

Выложил на pouet.net:
http://www.pouet.net/prod.php?which=67219

#11
10:02, 9 апр 2016

gammaker
Win8.0, GTX770 - демка не работает.

#12
10:32, 9 апр 2016

запускается норм

#13
10:40, 9 апр 2016

Mikle
> Win8.0, GTX770 - демка не работает.
Странно. А что происходит? Вылетает при запуске? У меня на Win 10, GTX 755M работает...

#14
10:49, 9 апр 2016

Просто пишет, что программа закрыта потому, что не работает.

Страницы: 1 2 3 Следующая »
ПроектыФорумУтилиты

Тема в архиве.