www.G-2B.com www.G-2B.com
форум сайта проекта "ЮКисП"
 Помощь      Поиск      Участники


 Страниц (12): В начало « ... 4 5 6 7 8 [9] 10 11 12 »   

> Описание: Игра про строительство
krre
Отправлено: 25 Августа, 2016 - 12:19:46
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Оказывается, я неправильно понимал работу алгоритма рейкастинга, потратил две недели, чтоб реализовать так, как он мне представлялся, и в итоге это закончилось провалом. Наконец, до меня дошло, что не нужны никакие матрицы и преобразования луча, потому что эта система работает совсем не так, как в OpenGL, а намного проще. И перспективные искажения получаются естественным путём, так же, как у нас в глазу, за счёт схождения лучей в одной точке. Нормализация координат объектов к единичному кубу тоже не нужна. Это просто капец, сколько всего не нужно, я в глубоком офигении с тех пор, как это понял.

Ну, и в результате откровения родился вот такой рейкастовый рендер куба. Даже FPS получился всего в 3 раза меньше нормы. Правда, ещё нет освещения, и когда я его добавлю, FPS просядет ещё больше. Что ж, будем посмотреть, насколько глубоко.
   Top
krre
Отправлено: 25 Августа, 2016 - 13:02:42
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Это мои творческие муки в попытках понять, как работает алгоритм. Количество векторов в расчётах превышает все мыслимые пределы. А я их со школы недолюбливал. Не сложилось у меня как-то с геометрией. Алгебра хорошо шла, а геометрия не очень. Но делать нечего, приходится вспоминать или заново учить то, на что в былые годы благодушно забивал. гы-гы!
   Top
krre
Отправлено: 26 Августа, 2016 - 16:47:49
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Занялся аппаратной поддержкой рендеринга вокселей. Официально видеокарты это не умеют, они натасканы на полигоны, но я их научу. гы-гы! Будет, конечно, кривовато, через заднее месте, но зато какой-никакой, а прирост производительности. Все это будет сделано GLSL шейдерами в OpenGL. Точнее, только фрагментным шейдером. Вершинный не пригодится, поскольку вершин практически нет.

Если взять разрешение окна, которое у меня устанавливается по умолчанию, 800х480, то это будет 384000 пикселей. Сейчас цвет всех этих пикселей считается в цикле на процессоре одним потоком, и это очень медленно. На видеокарте все они будут посчитаны за раз. Ну, может не совсем за раз, но по где-то 1000 штук параллельно. Согласитесь, ускорение в 1000 раз - это существенно. Проблема только в том, что отлаживать такую программу проблематично. Во-первых, она находится в памяти видеокарты, и её нельзя трассировать пошагово, а во-вторых, не будешь же проверять все 384000 версии какой-то переменной одновременно. Так что головняк ещё тот.

В общем, я уже начал это дело, но впереди выходные, а выходные - дело серьёзное, надо отвлечься от программирования и отдохнуть мозгом, поглядеть, что новенького на Ютубе. После чего затусовать очередную страшилку на форум в разделе апокалипсиса. гы-гы!
   Top
Коля Логан
Отправлено: 26 Августа, 2016 - 20:24:57
ID


почетный участник


Сообщений всего: 4476
Дата рег-ции: Июль 2008  
Откуда: Донецк, Украина
Репутация: 30




krre:
В общем, я уже начал это дело, но впереди выходные, а выходные - дело серьёзное, надо отвлечься от программирования и отдохнуть мозгом, поглядеть, что новенького на Ютубе. После чего затусовать очередную страшилку на форум в разделе апокалипсиса.

Это конечно правильно, но если чёткого графика работы нет - выходные становятся как раз-таки творческим бумом. Мне вот за них надо явно много соорудить... :(
   Top
krre
Отправлено: 27 Августа, 2016 - 06:57:38
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




У меня обычно творческий бум в рабочие дни, а в выходные расслабуха. Но раз ты настаиваешь, то сегодня в 6 утра я уже посидел немного и добавил в игру ещё одну фичу. гы-гы!

Итак, решил сделать в игре два типа рендеринга - один на CPU, другой на GPU. То есть процессорный без ускорения и графический с ускорением. Переключается режим при запуске программы параметром командной строки -cpu или -gpu соответственно. По умолчанию стоит GPU, он же более быстрый и поэтому предпочтительный.

Делаю я всё это затем, что написать сходу рендеринг шейдерами на GPU едва ли получится. Без возможности отладки ничего не выйдет. Так что придётся писать сперва на обычном C++, добиваться, чтоб рендерер работал, а потом стараться один к одному, насколько это возможно, переносить код во фрагментный шейдер на языке GLSL. Заодно будет прикольно сравнивать, насколько ускорился рендеринг.

Чтоб не путать рендереры, сделал индикацию в DebugHUD. GPU рендерер пока что никакой. Всё, что он делает, - это рисует зелёный цвет, если координата x < 250, и белый, если больше. Так я, по крайней мере, твёрдо убеждён, что шейдер различает координаты x и y.
   Top
2B администратор
Отправлено: 27 Августа, 2016 - 09:02:28
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Поддержка двух типов карт - вдвое больше работы?
   Top
krre
Отправлено: 27 Августа, 2016 - 09:08:11
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Ну, не карт, а процессоров. Не в двое больше, а скорее сколько же. Если делать сразу для GPU, то это долго, потому что там тяжело отлаживать программу. Написал что-то не правильно, запускаешь - чёрный экран. Почему - фиг его знает. Сидишь наугад код меняешь. Трудоёмкость, условно говоря, 10 единиц. Когда пишешь для CPU, то отлаживать легко, получается быстрее. Трудоёмкость 5 единиц. Получается 5 единиц, чтоб написать код для CPU, потом ещё 5 или даже меньше, что перевести это на GPU. Получается в сумме те же 10 или меньше. Как-то так, если кто-то что-то понял, кроме меня. Улыбка
   Top
2B администратор
Отправлено: 27 Августа, 2016 - 09:31:55
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Да, понятно Подмигну-ка
   Top
krre
Отправлено: 27 Августа, 2016 - 18:29:43
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Я, конечно, понимаю, что неосвещённый куб говнистого цвета всем уже надоел, но РАДИ ТАКОГО стоит показать его ещё раз. Смотрите внимательней, там в углу написано 60 fps и тип рендерера - GPU!

УУУУУУУУУУУУУУУУУУУУААААААААААААААААААА!!!!!! Ура!!Ура!!Ура!!

Заработало! Воксель рендерится аппаратно видеокартой. Никаких тормозов, даже в окне, развёрнутом на весь экран (а у меня это 1600х900). Теперь можно со спокойным сердцем продолжать дальше. Как минимум, при не сильно нагруженной вокселями сцене вполне даже терпимо будет играть. Улыбка
   Top
Коля Логан
Отправлено: 27 Августа, 2016 - 21:30:42
ID


почетный участник


Сообщений всего: 4476
Дата рег-ции: Июль 2008  
Откуда: Донецк, Украина
Репутация: 30




krre:
Заработало! Воксель рендерится аппаратно видеокартой. Никаких тормозов, даже в окне, развёрнутом на весь экран (а у меня это 1600х900). Теперь можно со спокойным сердцем продолжать дальше. Как минимум, при не сильно нагруженной вокселями сцене вполне даже терпимо будет играть.

Поздравляю с продвинутым кубом. Отлично!
   Top
krre
Отправлено: 30 Августа, 2016 - 14:15:47
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Воксельный рендерер научился обрабатывать свет. Но светом это ещё рано называть. Пока что оно похоже на какое-то непонятное шершавое шизо. Это всё вектора, много векторов, и где-то они не туда завернули. Как же они меня выводят из нервного равновесия. вы меня точно достали!

FPS, конечно, тут же просел в CPU режиме. В GPU режиме свет ещё не работает. Надо сперва с этим разобраться.
   Top
krre
Отправлено: 30 Августа, 2016 - 19:03:10
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Что ж оно всё такое неподдатливое? Мне удалось-таки исправить свет в CPU режиме, и теперь там куб чистый и шелковистый, но когда я один к одному перенёс код в GPU режим, получил вот такое. Очевидно, что с нормалями расходняк, но как определить в коде, где именно - вот в чём вопрос?
   Top
krre
Отправлено: 31 Августа, 2016 - 19:17:29
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Пофиксил все проблемы с нормалями и перешёл к следующему этапу - отрендерить сразу несколько кубов в одной сцене. И вот тут меня поджидал капкан. Выяснилось, что рендеринг более чем одного куба заметно отличается в CPU и GPU режиме. И чем сложнее будет сцена, тем больше ожидается отличий. Получается, что нет смысла возиться одновременно с двумя режимами, всё равно я не смогу скопировать код из одного в другой. Только напрасный расход человеко-часов в итоге.

Короче говоря, с тяжёлым сердцем пришлось удалить CPU рендерер и убрать даже упоминание о нём из Debug HUD. Теперь картинка всегда создаётся видеокартой, всегда на 60 fps, а отлов ошибок становится адским адом. гы-гы!
   Top
2B администратор
Отправлено: 02 Сентября, 2016 - 06:45:45
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Так получилось или нет в итоге? или в игре лишь один куб будет? Улыбка
   Top
krre
Отправлено: 02 Сентября, 2016 - 08:01:11
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Читаю документацию по OpenGL. Игра - штука сложная, требует серьёзной теоретической подготовки, поэтому развивается волнообразно. Попрограммировал - поразбирался в теории, потом снова программирование и снова теория. Сейчас передо мной встала задача - запихать массив кубов в память видеокарты. И не просто так запихать, а чтоб их прямо там можно было изменять в процессе анимации. Есть куча способов отправить данные в видеокарту, и у каждого есть свои особенности. Нужно выбрать самый подходящий для моего случая, а для этого нужно тщательно разобраться во всех вариантах.

Отвечая на твой вопрос, скажу: я не обещал, что в игре будет что-то кроме кубов, но несколько кубов точно будет. гы-гы!
   Top
krre
Отправлено: 02 Сентября, 2016 - 13:30:52
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Случилось печальное. Я выбрал самый лучший способ обмена данными с видеокартой, но он доступен не везде, для этого нужна поддержка OpenGL 4.3. У меня дома она доступна, а на работе нет, там только 3.3. Называется эта фича Shader Storage Buffer Object. Однако я обнаружил, что если подключить расширение GL_ARB_shader_storage_buffer_object, то фича включается, но нет гарантии, что подключится на других машинах.

Расширения OpenGL - это такие новые фичи, которые ещё не вошли в официальную версию, но доступны на некоторых видеокартах в качестве тестирования, либо просто производитель видеокарты добавил её у себя в драйвере для конкурентных преимуществ. Иногда они становятся стандартными в новых версиях OpenGL, иногда нет. Чтобы мне знать, на что рассчитывать, я вывел в Debug HUD всю необходимую по аппаратуре информацию, включая поддержку расширений GL_ARB_shader_storage_buffer_object и GL_ARB_compute_shader. Если у моих тестеров окажется, что поддержка этих двух расширений включена, значит, игру ожидает светлое будущее. Иначе игру всё равно ждёт светлое будущее, но кто-то из тестеров не сможет тестировать игру, потому что она у него не запустится. гы-гы!

Вот так выглядит сейчас полная информация. Куб нарочно занял весь экран, чтоб текст было лучше видно. Позже я сделаю новый тестовый дистрибутив игры и выложу для скачивания.
   Top
Коля Логан
Отправлено: 02 Сентября, 2016 - 15:08:16
ID


почетный участник


Сообщений всего: 4476
Дата рег-ции: Июль 2008  
Откуда: Донецк, Украина
Репутация: 30




krre:
Вот так выглядит сейчас полная информация. Куб нарочно занял весь экран, чтоб текст было лучше видно. Позже я сделаю новый тестовый дистрибутив игры и выложу для скачивания.

О, отлично, как раз потопчемся на кубе. Отлично!
   Top
krre
Отправлено: 02 Сентября, 2016 - 19:25:50
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Сделал снэпшот и закачал на Гугл-диск. Ищите у себя по адресу:

Gagarin\Bin\Snapshots\0.1.0\Gagarin-0.1.0-20160902-1915.7z

Что надо сделать? Скачать, распаковать, запустить, нажать F5, чтобы появился отладочный текст, как у меня на скриншоте выше. Затем нажать F12, чтобы сделать свой скриншот, найти его в папке Screenshot с игрой и показать мне. Можно прямо тут на форуме. Затем можно полазить вокруг куба и поглядеть fps, не просядет ли. Но сперва надо отойти немного назад, чтоб куб не закрывал весь экран. Я потом погляжу, какие у вас характеристики железа и буду по ним ориентироваться. А проще говоря, я увижу, что у вас оборудование и драйвера удовлетворяют минимальным требованиям, и буду спокоен. гы-гы!
   Top
2B администратор
Отправлено: 02 Сентября, 2016 - 20:46:21
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




мыши не видно Обхохочешься!
   Top
krre
Отправлено: 03 Сентября, 2016 - 06:46:19
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Ооооооо, батенька, как у вас всё запущено. Видеокарта NVIDIA, и нет поддержки расширений? Что-то я не понял юмора. А что с драйверами вообще? Они родные для видеокарты, и когда обновлялись в последний раз? Странно, что версия драйвера не показывается, как у меня в третьей строке - 368.39.

Мышь в игровом режиме не должна быть видна, иначе как поворачивать пространство. ESC надо нажать, тогда появится меню и мышь, можно будет легко закрыть окно.
   Top
Страниц (12): В начало « ... 4 5 6 7 8 [9] 10 11 12 »
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« флуд »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




www.g-2b.com


Powered by ExBB. ExBB FM 1.0 RC1 by TvoyWeb.ru. InvisionExBB Style converted by Markus®, edited by 2B. Smiles by Aiwan, Connie and others. Hosted by Peleng.

[Script Execution time: 0.0462]     [ Gzip Disabled ]