GD3D11 X11 (Pre version)
Тесселяция-шейдеров, продолжение...
Реализованное:
1. Тесселяция и сглаживание для всего мира игры (испытуемый, мод "Одиссея"):
2. Создан и тестируется новый способ тесселяции - PNAEN-Tesselation, применяемый только для вобов/Vobs в игре:
Если все пройдет удачно, то планируется прикрутить ее отработку и для мешей со скелетной анимацией/Skeletalmeshes.
Подробнее о нём вы можете прочитать в прилагаемом файле(английский язык):
PN-AEN-Triangles-Whitepaper.pdf
Удачи..
GD3D11 X6 (test version)
"Концерт, по вашим заявкам"..
Для тех, кто хотел увидеть видео с новой водой:
Вот так это выглядит в данный момент, вода ещё немного плоская.. Позже я подумаю о том чтобы избежать явных повторений в её колебаниях, как и над реализацией прозрачности для неё.
Освещение временное, но сгодится для первого предварительного обзора.
GD3D11 X4 (test version)
Тесселяция-шейдеров, продолжение...
Ранее уже были некоторые тесты с тесселяцией, но сегодня мне удалось продвинутся в этом немного дальше обычного, потребовалось лишь немного больше желания для всего этого и, мы можем уже двигаться дальше.
Было много проблем с тем что в "Готике" меши мира игры не связаны, из-за чего каждый отдельно взятый треугольник становился видимым. Я добавил функцию которая выделяет вертексы обращенные в другую плоскость, и находящихся на краях мешей.
По-мимо этого, был включен специальный шейдер работающий без текстурных координат, накладывающий до 3-х различных текстур со всех сторон на меш.
Так что теперь я могу отвязать меш от его текстурных координат(кто виноват в том что его треугольники не связаны?!) и применить к нему тесселяцию-шейдера(Tessellation-Shader) без опасения того, что меш будет разрушен из-за этого.
Конечно, на данный момент ещё есть ряд факторов, гарантирующий, хоть и редкое, но разрушение меша.. Позже, я и об этом позабочусь тоже..
Тесселяция применялась к горе в портовой части Хориниса, выглядит это таким образом:
В порядке слава-направо:
1-Тесселяция отключена; 2-Тесселяция включена; 3-Обкатывание тесселяции на булыжниках в редакторе; 4-Тесселяция в моде Vurts'a.
Новые возможности, из запланированного:
Здесь только то, что я всегда хотел сделать, было бы только желание.. Напишу вкратце.:
— Тесселяция с использованием текстурных карт высот со смещением(Tessellation/POM: Parallax Occlusion Mapping)
— Тени для точечных источников света(PointLight-Shadows)
— Атмосферное мульти-рассеивание (Atmospheric MultiScattering)
— Лучи(Godrays)
— Улучшенная система частиц, возможно, с использованием PhysX или Bullet(Besseres Partikelsystem, vielleicht mit PhysX oder Bullet)
— Отражения, в целом касается старой воды(Reflektionen, allgemein wieder Wasserkram)
— Преграждение окружающего света в экранном пространстве(SSAO: Screen Space Ambient Occlusion)
— Визуализация водной поверхности на GPU, или аналогичное(FFT-Ocean, о. Ä.)
— Удобный редактор(Ein komfortabler Editor).
Ps. Также, скорее всего сегодня ночью, я постараюсь загрузить на сервер карты нормалей(Normalmaps) для текстурного мода Vurts'a. ну а если нет, заглядывайте почаще, значит позже будут...
GD3D11 X3 (test version)
Травушка муравушка или ленивые эксперименты, продолжение..
Адаптация цвета травы под текстуру земли:
Посмотреть вложение 36118 Посмотреть вложение 36119
Обзавелся полным комплектом текстур для границ секций, которые будут засажены травой.
Да, прошу меня пожалуйста простить за всю эту траву, но какой-то я сегодня веселый..
Небольшое правило о траве:
— Одно растение, один меш, одна текстура.
Суб-меши безжалостно игнорируются, из соображений производительности.
По-мимо этого, меш должен состоять из одного объекта "пучок травы", так как в целом все элементы для графического процессора(GPU), так или иначе должны будут отображаться только как один большой меш.
Если вы применяете траву для всего меша, то она автоматически принимает его текстуру. В данном случае это означает что всё то, что находится в границах секций "Меша", получает туже самую текстуру.
Придерживаясь этого правила, можно вместе подготовить меши и текстуры растительности, которые могут идти отдельным пакетом для загрузки.
GD3D11 X3 (test version)
Судя по тестам производительности в Бенчмарке(Benchmark), можно сказать что визуализация на данный момент медленнее рендера теней, чем следовало бы. Надо будет еще поработать над этим.
Вообщем, я пока ещё не очень доволен общей производительностью.
Тем не менее, вы уже можете посмотреть первый скриншот из игры с небольшим тестом графического интерфейса пользователя(GUI-Test), с выделенными участками сети меша миры игры:
Посмотреть вложение 36117
Серая боковая панель, слева на картинке, будет выводится сразу по нажатию клавиши F11.
Эта опция располагается после текстур, в которой по-мимо прочего, можно будет непосредственно настраивать параметры текстур, или рассадить везде траву, по всему миру, или еще что нибудь сделать с ней.
Основа интерфейса готова, и полностью написана мной с помощью Direct2D, сейчас я медленно переношу её на GD3D11. Таким образом, благодаря технологии Direct2D он обзаведётся собственной аппаратной поддержкой.
Разработка еще далека от завершения, пожалуйста, имейте это ввиду..
Зы, Я всегда открыт для обсуждения и идей связанных с графическим интерфейсом пользователя и редактора в целом.
GD3D11 X3 (test version)
Травушка муравушка или ленивые эксперименты, продолжение..
Закончил написание функции по выборке полигонов для мешей мира. Таким образом, станет возможным размещение небольших объемов растительности при помощи мыши.
Также, вы сможете выбрать, ограничивать ли "пучки травы" в объеме или нет, по нажатию кнопкой мыши по её текстуре. Я немного побегал в игре с этими надстройками и как мне кажется получаются довольно не плохие результаты:
Посмотреть вложение 36114 Посмотреть вложение 36115 Посмотреть вложение 36116
Конечно, есть еще много всего, слишком высокая трава, всегда один и тот же меш мира игры.., просто я хочу показать, что это уже возможно в игре.
Помимо этого, я начал разработку системы пользовательского интерфейса(GUI-System), которую я написал несколько лет назад, и теперь использую ее и включу в GD3D11. О ней пока могу сказать лишь то, что вижу ее как нечто большее, нежели просто кнопки и чек-боксы.
GD3D11 X3 (test version)
Травушка муравушка или ленивые эксперименты, продолжение..
Посмотреть вложение 36112 Посмотреть вложение 36113
Всё также продолжаю возится с травой, увеличил немного производительность. В мире игры "Г2", без травы я получаю на 50 FPS больше. Тем не менее, показатель FPS в игре даже сейчас очень большой, особенно на отдалении. Разумеется, многое еще не завершено, или очень далеко от завершения. Иначе, я бы уже вернулся к прежней работе с визуализацией..
Этим я буду заниматься позднее. Ну, и цвета по-прежнему не ахти, нормальный луг так не выглядит, согласен, но нам программистам, как говорится не до эстетики..
GD3D11 X3 (test version)
Здесь представлена небольшая графическая фича:
Посмотреть вложение 36110 Посмотреть вложение 36111
Давно я хотел добавить что-то на подобие этого, и сегодня, после обнаружения большой утечкой памяти, засел за работу, в том числе и по этой части.
К сожалению, у меня есть в наличии только один вариант меша травы, и текстура, - не самого приятного вида. Впрочем, вы это и сами видите..
Что это дает и как работает:
В пакете имеется клавиша при нажатии которой вы сможете создать специальный бокс и вставить его в мир игры. Он создается с учетом позиций положения камеры и имеет фиксированный размер.
Затем этот бокс отыскивает все полигоны меша мира игры находящиеся внутри границ его блока и сканирует случайные положения их позиций на его поверхности.
Если позиция находится во внутренних рамках границ бокса, то она будет сохранена.
Затем пойдет отрисовка травы на меше, которая в равной степени будет обращена к каждой из этих точек(позиций), со случайными параметрами её вращения и величиной.
При этом, трава может быть реализована инстанциями в пакете. Но на данный момент, это ещё до конца не реализовано.
Инстанциями это все делается довольно быстро, в любом случае, я точно знаю что меня ожидает с этим боксом, я должен буду провести дополнительную оптимизацию для получения более высокой производительности. По-мимо этого, должен затенить "пучки травы" в зависимости от дистанции обзора, что естественно, не может быть не реализовано.
В конце-концов, вы получите простой метод для распределения "пучков травы" в мире игры, там, где это вам нужно.
Поскольку очевидно, что эти боксы нельзя было просто так взять и приспособить к мешу мира игры, которые бы рассаживали траву вдоль дороги, на стволах деревьях или земле. Появилась идея все это дело повесить "на аналог" некоторых текстур, которые появляются в боксе и отображаются на меше мира игры.
Кроме того, я должен буду предоставить пользователю интерфейс с помощью которого он сможет распределять специфические для рендера GD3D11 объекты в мире игры. А также, некий художественный редактор для модификаций...