Я этого не знал, но вы вероятно правы. Хотя, иногда нет другого выхода, кроме как делать примерно так: var = buffer[id.x * height + id.y]
потому что буфферы одномерные, а данные частенько двумерные, а структуру потоков делать одномерной вроде бы тоже не очень эффективно, да и лимиты есть по каждой оси.
Фрактал Мандельброта ограничен координатами от -1 до 1 по х и у. А у пикселей координаты от 0 до 1023. Нужно проецировать, чтоб фрактал на весь экран был.
Программа перерисовывает фрактал каждый раз, как пользователь изменит масштаб или позицию выводящего прямоугольника. Так что можно путешествовать по красочным прядям фрактала.
CUDA — это просто другое API. Методы передачи данных в видеопамять похожи. Если у вас были массивы в структурах, значит там был не сам массив, а четырёхбайтный адрес. То есть, следовало записать данные массивов в буффер тоже.
Для параллельного вычисления больше подходят простые операции, равно применяемые к каждому из моделируемых объектов.
Если добавить эвристику на стороне GPU, она будет потреблять вычислительные такты, и её добавление должно будет окупаться. Но окупаться оно не будет, потому что если каким-то образом для медленных частиц снизить объём вычислений, то всегда найдётся одна быстрая частица, требующая всего объёма вычислений. И получится, что 1023 ядра ждут одно, которое обрабатывает эту одну частицу, и время выполенения операции над одной частицей не будет меньше, чем над всеми.
Спасибо за ссылки, посмотрю. Хотя, мне скорей интересно делать всё самому. Наверное, ради возможности предельной оптимизации движка под конкретную задачу.
Согласен, сделаю мышку по умолчанию. Сделаю ею ещё движение и переключение оружия, должно быть удобно играть исключительно мышью.
А для существующих отзывов я пишу ответы, предлагаю попробовать исправленную версию, но, похоже, у стима нет оповещения об ответах на отзывы, так что люди не возвращаются.
Гибрид частиц и тел сложней реализовать, а чистые частицы быстрей на видеокарте считать, потому что производятся простые и одинаковые для всех частиц операции.
Это был экспермент с чистыми частицами, я не хотел усложнять, а хотел проверить практичность метода. Если бы я начал делать такую игру с моим сегодняшним опытом, я бы скорее всего взялся именно за гибрид.
Возможно, моя игра соответствует стандарту directx10, я помню, что компилятор предупреждал о выходе за границы directx10, и я их соблюдал. Так что игра работает и на восьмёрке и на 32 битных версиях.
Кое-что изложено здесь. А для более детального изложения я решил сделать отдельную детальную статью-руководство, которая помогла бы войти в мир компьют шейдеров. Там будет объяснено, как всё настроить в Юнити, и как на HLSL накодить простеньку физ-симуляцию.
Согласен, музыка в трейлере совершенно не подходит к содержимому ролика. Но на уровне эмоций и энергетики мне эта песня показалась близкой к тому, что я хотел бы роликом передать.
С музыкой в игре ситуация такая: я переписывался с несколькими композиторами, слушал их музыку, но мне ничего не понравилось настолько, чтобы сотрудничать. У меня очень высокие требования к эмоциональному содержимому музыки. А в трейлере — просто хорошая песня.
Если tensorflow их использует, значит есть какой-то инерфейс, значит и для физики сгодится. Но всё равно, очень сложно загрузить современный GPU под завязку одной только графикой. Там всегда останется место для физики.
Редактор собираюсь прикрутить. Он уже есть, но для него остаётся интерфейс сделать, чтоб было удобно пользоваться, а то сам я всё хоткеями делаю. Редактора юнитов пока нет, но в принципе можно создать, даже интересно было бы. Я подумаю, сколько это времени займёт, может и займусь.
Cortex Command — это игра, которую чаще всего вспоминают, когда видят мою игру. Один из её разработчиков, кстати, на реддите отписывался в моей ветке, хвалил задумку. Но идти к кому-то в команду что-то не хочется, больше нравится самому свои идеи воплощать.
var = buffer[id.x * height + id.y]
потому что буфферы одномерные, а данные частенько двумерные, а структуру потоков делать одномерной вроде бы тоже не очень эффективно, да и лимиты есть по каждой оси.
Программа перерисовывает фрактал каждый раз, как пользователь изменит масштаб или позицию выводящего прямоугольника. Так что можно путешествовать по красочным прядям фрактала.
Если добавить эвристику на стороне GPU, она будет потреблять вычислительные такты, и её добавление должно будет окупаться. Но окупаться оно не будет, потому что если каким-то образом для медленных частиц снизить объём вычислений, то всегда найдётся одна быстрая частица, требующая всего объёма вычислений. И получится, что 1023 ядра ждут одно, которое обрабатывает эту одну частицу, и время выполенения операции над одной частицей не будет меньше, чем над всеми.
А для существующих отзывов я пишу ответы, предлагаю попробовать исправленную версию, но, похоже, у стима нет оповещения об ответах на отзывы, так что люди не возвращаются.
Это был экспермент с чистыми частицами, я не хотел усложнять, а хотел проверить практичность метода. Если бы я начал делать такую игру с моим сегодняшним опытом, я бы скорее всего взялся именно за гибрид.