графика

Давайте напишем ... MMO! Часть 22: Что-нибудь такое

Опубликовано NowhereMan - вс, 06/07/2020 - 16:20

За последний месяц или около того, я работал над тремя различными аспектами проекта:

1. Как представить мой пейзаж в форме астероида. Он должен эффективно храниться, быстро рисоваться и при этом быть модифицируемым пользователем.
2. Движение по ландшафту с различной степенью детализации.
3. Освещение.
Мой наивный подход к каждой из этих проблем не очень удался, поэтому мне нужно вернуться назад и много читать и экспериментировать с различными алгоритмами. Ох.

Я семь месяцев в этом проекте. Я говорил себе, что как только я сделаю эти три вещи, я смогу построить реальный мир и увидеть его в первый раз. Но мне не терпится. Я очень устал от рендеринга сцен из Minecraft снова и снова. Я думаю, вам, читателям, тоже становится скучно, так как трафик неуклонно падает. Не так много людей интересуются деталями реализации!

Давайте напишем ... MMO! Часть 21: Свет и тень

Опубликовано NowhereMan - вт, 05/19/2020 - 00:40

24 мая 2011

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

Давайте напишем ... MMO! Часть 20: Еще прозрачность

Опубликовано NowhereMan - пт, 05/15/2020 - 20:26

18 мая 2011

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

Давайте напишем ... MMO! Часть 19: Опять прозрачность

Опубликовано NowhereMan - пт, 05/15/2020 - 18:27

10 мая 2011

В Части 16 я показал мир, отрендеренный с тремя техниками - близлежащая графика, сделанная с правильно отсортированной прозрачностью, средний диапазон, сделанный только с непрозрачной графикой (так как сортировка всех кубов так дорога) и далекие данные, сделанные с точками, которые также непрозрачные.

Давайте напишем ... MMO! Часть 18: Процедурные ландшафты

Опубликовано NowhereMan - пт, 05/15/2020 - 17:52

May 1, 2011

Ну, у меня до сих пор тонны проблем, больших и маленьких, в различных портах проекта. На данный момент я чувствую, что было ошибкой пытаться поддерживать несколько платформ, и переключиться на OpenGL с вариациями в шейдерном языке и поддержкой драйверов. Один комментатор две части назад назвал его "batshit insane". Портирование израсходовало много энтузиазма, который я испытывал по отношению к этому проекту.

Давайте напишем ... MMO! Часть 17: Меньше веселья с шейдерами

Опубликовано NowhereMan - пт, 05/15/2020 - 13:54

15 апреля 2011

После хороших результатов, которые я получил на прошлой неделе, я ожидал получить рабочее демо. На самом деле, я даже придумал лучший способ сделать то, что я делал с шейдерами, так что я собирался назвать эту часть "Больше веселья с шейдерами". К сожалению, так не получилось.

Давайте напишем ... MMO! Часть 16: Веселые шейдеры

Опубликовано NowhereMan - пт, 05/15/2020 - 05:52

10 апреля 2011

В 15-й части у меня были куски пейзажей Minecraft, плавно загружаемые и выгружаемые по мере того, как вы перемещаетесь по миру. Я предполагал, что с изменением шейдеров я смогу значительно сократить память дисплея, используемую каждым фрагментом. На этой неделе, я попытался сделать это.

Давайте напишем ... MMO! Часть 15: Огромные пространства

Опубликовано NowhereMan - вт, 05/12/2020 - 15:44

24 марта 2011

Глядя на работу, проделанную после 4-й части, я вижу, что последние три месяца были довольно разочаровывающими. Трассировка лучей была забавной, но так как я еще не занимался освещением, это было не очень полезно. Нужно было сделать дизайн мира, но я не уверен, что это окончательная версия. Вся космическая тема кажется мне немного чрезмерной, и я хочу исследовать некоторые другие идеи.

Давайте напишем ... MMO! Часть 14: Переносимость

Опубликовано NowhereMan - вт, 05/12/2020 - 12:33

Я вернулся после недельного перерыва. Меня ненадолго навестила сестра, которая проверила, что я еще дышу, не похоронен в мусоре и не унесен пыльными кроликами. И я выбрал пару дней, чтобы поплакаться о своем прогрессе в OpenGL.

Как вы помните из последней части, я преобразовал свое демо в OpenGL 3.3 и начал портировать его на Mac OS X, только чтобы узнать, что я был введен в заблуждение OpenGL SuperBible и что Apple поддерживает только OpenGL 2.1.

Я также обнаружил, что невозможно написать фрагмент шейдера, используя шейдерный язык 3.3, который работает везде. Драйвер NVidia требует, чтобы я объявил (ранее встроенную) переменную gl_FragColor, в то время как драйверы ATI отвергают это как ошибку (или предупреждение, на некоторых драйверах.) Для протокола - NVidia следует спецификации, как я ее читал, а ATI не правы.

Давайте напишем ... MMO! Часть 13: The Cake is a Lie!

Опубликовано NowhereMan - вт, 05/12/2020 - 04:11

Подводя итог, я писал эту игру на DirectX 9, и моим лучшим результатом был такой:

Непрозрачные: 1,87 мс Прозрачные: 16,49 мс Всего: 18,36 мс Частота кадров: 54 fps
Мне нужна была функция под названием текстурные массивы, которых не было в DX9, поэтому я решил попробовать OpenGL. Моя первая версия, использующая ту же логику, что и версия DirectX (без текстурных массивов), добилась таких результатов:

Непрозрачные: 1.95 ms Прозрачные: 27.19 ms Всего: 29.14 ms Частота кадров: 34 fps
Это было гораздо медленнее для прозрачных данных. Это тот же самый код, который генерирует тот же самый список треугольников, занимающий столько же места, поэтому там точно такой же объем работы. Хотя я не копался в нем, я предполагаю, что есть некоторые дополнительные накладные расходы в Windows, чтобы добраться до вызовов OpenGL, и добавление более тысячи отдельных треугольников замедляет процесс.