у меня монитору очень плохо, когда эти картинки скроллю. очень.
ud1
Красиво получилось, особенно в #13-м посте.
На самом деле, я тоже интересовался клеточными автоматами, но эту задачку вижу впервые.
Поскольку во всех клеточных автоматах значения в ячейках вычисляются независимо друг от друга, у меня возникла идея реализовать это дело на шейдерах.
Идея здесь проста, просто "перекидываем" наши данные из одного рендер таджерта в другой, обрабатывая их шейдером.
Посмотреть, что у меня получилось можно здесь: cell_automat
Реализованные автоматы:
1) Разделение фаз.
2) "Красивая математическая задача" (ud1 респект. Как увидел задачу, сразу начал думать, как записать её на шейдерах)
3) Игра жизнь.
4) Шейдер находящий выпуклые оболочки тел (пока не до конца доделан: в оболочке могут быть только гор-е, верт-е линии и линии под углом 45 градусов )
[A][R][T]
Что-то медленно работает на шейдерах, думал, что должно быть гораздо быстрее чем на проце. Еще цвет откуда-то берется, вроде все монохромное должно быть. Наверно ты делаешь один и шаг и выводишь на экран, попробуй делать сразу несколько шагов, а на экран выводить только каждые 30 миллисекунд.
Клеточные автоматы наверно можно и для чего-нибудь полезного использовать, для динамических процедурных текстур, и экспериментировать можно много.
[A][R][T]
А у тебя еще и не пиксель в пиксель выводится, а с растяжением. Наверно поэтому у меня и не монохромным выглядит.
ud1
Наверное, работает не правильно из-за того, что я не учел особенности разных видеокарт. Я тестил на двух компах, все работало правильно(картинка получалась в точности как у тебя). Если не сложно выложи скрин с багом и скажи какая у тебя видеокарта, это поможет мне узнать в чем ошибка.
На счет скорости, я и сам не ожидал, что будет медленее чем на проце. Мне кажется, что метод даст выигрыш производительности, если использовать его для задач, требующих бо'льших вычислений.
[A][R][T]
На скрине все получается монохромным, наверно цвет получается в динамике из-за того, что ты не рисуешь пиксель в пиксель + особенность монитора.
[A][R][T]
> На счет скорости, я и сам не ожидал, что будет медленее чем на проце.
Ты не ответил на
> Наверно ты делаешь один и шаг и выводишь на экран, попробуй делать сразу несколько шагов, а на экран выводить только каждые 30 миллисекунд.
Думаю из-за этого и получается медленнее, я то в программе рисую не каждый шаг.
Ну и хотелось бы еще попробовать большие поля, например 2048*2048.
main
Тоже профита от шейдеров не видно, если есть шейдеры, то я ожидаю увидеть приемлемую скорость на очень больших полях. Вообще я считаю, что игру жизнь стоит только рассматривать на очень больших, желательно бесконечных полях.
ud1
Да я там протупил... Забыл убрать v-sync )))))
Теперь летает. Сделал рендеринг раз в 20 мс стало работать еще быстрее. Вот демка: prog.
И что значит рендеришь не пиксель в пиксель? Может это из-за того, что размер текстуры не кратен степени двойки?
main
Посмотрел, работает. Даже шейдер видел, открыв exe-шник в Far-е))
main
Ага прикольно вышло. Только результат долго ждать. Наверно ты, как и я, забыл убрать синхронизацию.
main
381 - 386
5600 - 6000 FPS
main
3000 фпс. Неплохо получилось. Хотелось бы еще возможность иметь помимо дыр клетки с постоянным числом частичек, как например в #13 посте, в центре была клетка с 4мя частицами. А также менять уровень начального заполнения, и размер доски.
В #17 посте у меня было начальное заполнение 8, и крестовая дыра в центре, но условие задачи немного дополненное, если в клетке 4,5,6,7 частиц, то разбрасывается как и раньше 4 частицы, а если 8,9,10,11 то разбрасываются 8 частиц, по 2 в каждую соседнюю клетку (ну и дальше по аналогии).
возможно сделать ещё одну маску для точек с постоянным числом частиц?
сгенерил себе обоину на телефон)) крутую программу сделали)
ud1
Забавно), пиши ещё.
main
Видать расчитано на самые последние шейдера? А то мне только черный экран показывает и фпс считает
Тема в архиве.