• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в оценке работ на конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык
    Ссылка на тему с работами участников- тык
Рендер GD3D11

Рендер GD3D11 17.8-dev9

Тесселяция (Tessellation)

Моря и "океяны" новой воды...
s_004.gif


Устранил некоторые ошибки с последнего изображения воды и в целом немного повозился с ней, пока получается примерно так:
ocean2.jpg

Многое будет ещё дорабатываться..
Добавлена версия в инсталляторе, для ленивых.. :)
Исправление ошибок, улучшение общей производительности и HBAO+ !

Новое в этой версии:
  • Улучшена производительность рендера мешей мира игры;
  • Реализовано инстанцирование для вобов/Instancing für VOBs, что также повышает производительность при рендеринге в игре;
  • Исправление ошибки связанной с переполнением некоторых индексных буферов;
  • Исправление D3D11 при отработке пиксельных шейдеров не связанных с 4k-рендером/4k-Rendertarget при визуализации теней;
    • Пиксельный шейдер/Pixel Shader используется только там, где это действительно необходимо (деревья, кустарники)!
  • Исправление некоторых вобов/VOBs многократно добавляемых в перезаписываемый BSP-кэш, при каждой перезагрузке мира игры;
    • Это уменьшает время загрузки при загрузке сохраненной игры;
  • Исправление, теперь BSP-кэш очищается в нужное время, потому что ранее он не очищался вообще, так как не вызывалась требуемая функция после загрузки игры из сохранения;
    • Решает проблемы с производительностью при загрузке новых объектов игры и светящимися огнями в гавани;
  • Исправление вылетов игры связанных с драконами. У них по-прежнему много костей и рендер может отработать с ошибками;
  • Наконец-то мне удалось выяснить, какие текстуры используют свой альфа-канал, а какие нет!
  • Исправление панели управления в редакторе, при его вызове программа не знала какие кнопки отрисовывать в начале;
  • Добавлены эффекты HBAO+. Настройки смотрите в меню, клавиша [F11];
  • Добавлены настройки управления разрешением для карт теней/Shadowmap;
    • Дополнительная оптимизация рендеринга теней;
    • Стандартное разрешение для карт-теней в настоящее время снижено до 1024 пикселей;
  • Добавлена опция отключения "DisableWatermark", в настройках управления - "Общие";
  • Немного снижен эффект работы алгоритма для отрисовки теней из-за ошибки "Peter-Panning", эффект "Питера Пена"(оттенялись не только принадлежащие тени объекты).

Скриншоты текущей версии с модом Gothic 2: L'HIVER Edition:
lh1.jpg lh2.jpg lh3.jpg lh4.jpg lh5.jpg lh6.jpg lh7.jpg lh8.jpg lh9.jpg lh10.jpg lh11.jpg


Хорошего времяпрепровождения!
s_065.gif
Тесселяция (Tessellation)

Аппаратная тесселяция и физика воды:
ocean.jpg

Ну, здесь собственно картинка сама за себя говорит..
Хоть многое ещё не настроено, но как оно будет примерно в итоге, глянуть можно уже сейчас..
Руководство пользователя/модостроителя

Я подготовил небольшое руководство по использованию редактора и его материалов:

Основные функции редактора(Basic editor functionality):
Для открытия и закрытия панели редактора используйте клавишу [F1]. При этом вы окажетесь(точнее, ваш Гг) в том состоянии, когда фокус камеры в игре будет отделён от его модели и перемещён на боковую панель редактора с левой стороны экрана.

Инструкцию о том как перемещаться в нём выводится в верхней левой части экрана. Перемещение такое-же как в UnrealEngine(в случае, если вы знакомы с ним), сделал его аналогичным, только потому, что больше всего мне понравились виды перемещения в 3D-сценах, именно там. При первом перемещении в нём, камера будет цепляться к углу экрана, впрочем, это - известный баг.
Для быстрой телепортации вашего Гг на новое место в мире игры, нужно просто перейти к требуемой части локации и при нажатой клавише
[Shift], щёлкнуть на его новое месторасположение.

Ещё один момент, вы будете видеть его всякий раз, когда вы перемещаете курсор на одну из частей меша мира игры, это будет сопровождаться наложением красной каркасной сетки. Просто щёлкните её для выбора. При этом будут выделены все трианглы(triangles) использующие ту же текстуру в текущей секции. Размер одной секции меша равен:
16000x16000 в системе мировых единиц(сантиметры).
Растительность(Vegetation):
Простой способ добавления новой растительности. Для этого, активируйте редактор, клавиша [F1], выделите определённую часть меша игры и перейдите в панели редактора на вкладку: "Растительность/Vegetation", в верхнем левом углу, после чего щёлкните на кнопку: "Заполнить выделенное/Fill selection". Это автоматически заполнит выделенную вами часть мира травой, при этом, к текстурам травы будет применён цвет поверхности мира на которую она была вставлена.

Также, вы можете самостоятельно размещать небольшие участки растительности. Для этого нажмите кнопку: "Добавить растительность/Add Vegetation", чтобы получить бокс прикреплённый к вашему курсору мыши. Поместите его в мир игры, щёлкнув курсором мыши в любом месте мира для его размещения. При этом, основную информацию о цвете, вставленная вами трава получит из первого найденного триангла(triangle).

Для получения наилучших результатов, используйте чек-боксы(checkboxes): "Текстура определена/Texture aware" и "Округлая форма", проставьте галочки, где параметр "Текстура определена", ограничивает размещённую вами траву, текстурой по которой вы щёлкнули.

Чтобы удалить некоторые части ранее добавленной растительности, используйте кнопку: "Удалить/Remove". После её нажатия, к вашему курсору будет применена новая кисть, для удаления лишней травы используйте зажатой клавишу
[Ctrl] и левую кнопку мыши. Для выхода из режима удаления нажмите повторно кнопку "Удалить" в панели редактора.

Важное примечание:
Имейте в виду, что пока не реализовано никакого способа для сохранения вашей работы!
Тесселяция(Tesselation):
Эта версия отличается простым способом тесселяции, основанном на анализе смещения вершин(vertices) из меша мира игры. Он по-прежнему имеет несколько существенных недостатков, но главное, это работает уже сейчас.

Для применения тесселяции к части меша мира, вам просто нужно выделить что-нибудь на нём с полностью повторяемой черепичной текстурой(как например, камни или трава) и нажать на клавишу "Пробел/Spacebar". Выделение должно окрасится в жёлтый цвет, а каркасная сетка меша получить дополнительные трианглы(wireframe-triangles). Это не количество аппаратных треугольников(hardware triangles), меш получит их позднее с рендером визуализации! Это касается только программной стороны!

Кроме того, все текстурные координаты(UV-Coords) для выделенного меша будут сброшены, и к нему будет применено проецирование трёхпланарного-текстурного-шейдера. Это не будет корректно работать для домов, дорог или текстуры камня с травой поверх него.

После того как это будет сделано, вы можете попробовать настроить некоторые дополнительные параметры, чтобы сделать её вид немного лучше. Для этого, выберите ваш меш с тесселяцией и нажмите клавишу
[F11]. На экране появится несколько других окон. Наиболее интересным из них является окно: "Настройки текстуры/Texture settings", в котором вы можете управлять различным поведением проецирования трёхпланарного-шейдера, как например: масштаб(scale) и подсветка краев модели(rim-lighting(fresnel)) или сила смещения(displacement-strength).

Для того чтобы немного увеличить силу тесселяции(tesselation-factor), просто нажмите на клавишу "Пробел/Space" снова, или используйте команду: General/TesselationFactor-variable.

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

Хорошим примером для этого являются горы в порту Хориниса. Я установил свойства материалов для некоторых из них, так-что вам нужно просто выбрать место и нажать пару раз на клавишу пробел, чтобы сделать их вид в игре немного лучше.


Вкратце:
Нажмите клавишу [F1], перейдите в порт, выберите гору, нажмите клавишу [Пробел/Spacebar], дважды.
s_064.gif
Карты нормалей/смещения(Normal/Displacement-Maps):
Использование собственных карт нормалей/смещений. Для этого нужно иметь эти карты в уже готовом виде или создавать их самому. Это можно сделать с помощью инструментария программ: "Фотошоп/Photoshop" или "DXTBmp".

При создании этих карт не забывайте, что: "Карта нормалей" должна располагаться в стандартных слоях для текстур с RGB-каналами, а "Карта смещений" должна быть помещена в слой альфа-канала.
При сохранении текстуры именуйте её как: "
TextureNameInGothic_normal.dds", где - именованиеTextureNameInGothic, это оригинальное название текстуры в игре. И убедитесь, что вы сохраняете её в формате DXT5!
После чего, поместите готовую текстуру в каталог: "..\System\GD3D11\textures\replacements", с подтверждением перезаписи старых файлов, если они есть.
Всё, ваша текстура готова к работе в игре.


Примечание:
Для сохранения текстур в формате *.dds, необходимо установить плагин: NVIDIA Texture Tools for Adobe Photoshop, если он не установлен. Подходит для большинства версий Photoshop: 5.0, 5.1, 6.0, 7.0, CS, CS2, CS3, CS4, CS5 and CS6.
Там же на странице загрузки, можно скачать дополнительный набор утилит: DDS Utilities, для работы с файлами этого формата, смотрите его в самом низу страницы.

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


Новое в этой версии:
  • Новые средства управления перемещением редактора;
  • Возможность выбора и удаления информации о размещенной растительности;
  • Исправление для накладываемых объектов в меню;
  • Реализован собственный обработчик исключений с трассировкой стека/stack-tracer;
  • Водяной знак/Watermark(не совсем понял что здесь имеется ввиду ?!);
  • Исправление, теперь нельзя заполнить растительностью один и тот-же меш, дважды;
  • Возможность установки стартовой позиции игрока с помощью редактора;
  • Реализована кисть для удаления растительности;
  • Исправление багов связанных с исчезновением некоторых объектов(Полки в башне Ксардаса);
  • Исправление багов с незарегистрированными вобами/VOBs, появляющихся и видимых после загрузки игры(Факела);
  • Исправление багов с переключением флагов оружия для Непесей/NPC, не происходила смена оружия для меша меча(избиение Нпс луком);
  • Исправление багов для Непесей/NPC, связанных с невозможностью смены брони/одежды;
  • Реализована возможность обнаружения границ для мешей;
  • Реализована простая тесселяция/Tesselation для меша мира/WorldMesh;
  • Реализована аппаратная тесселяция/Hardwaretesselation и необходимые свойства материалов/MaterialProperties;
  • Реализована возможность перезаписи шейдеров/Shader-Overwrite для специфичных мешей;
  • Заменяемый меш мира/WorldMesh игры теперь загружается в правильных координатах пространства;
  • Реализован эффект Френеля(с подсветкой краев модели)/Fresnel-Effect(Rim-Lighting), для мешей с использованием трёхпланарного-текстурного-шейдера/Triplanar-Texture-Shader и тесселяции;
  • Добавлена возможность выбора текстур;
  • Реализована более агрессивная выборка для рендера теней. Могут быть проблемы когда солнце находится очень низко, хотя;
  • Небольшое улучшение производительности для обычного рендеринга мира.

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


Дополнительные материалы
Если вы собираетесь использовать оригинальную игру "Г2:НВ" или моды и/или текстурные пакеты на её основе с рендером визуализации GD3D11, то вам понадобятся специально подготовленные для них пакеты карт нормалей в формате *.dds

1. Replacements_dds.7z — пакет карт нормалей/Normalmap Pack, для игры "Готика 2: Ночь Ворона".
Примечание: Никаких изменений в него не вносилось, поэтому нет необходимости его повторно загружать, если он у вас уже установлен.

2. Replacements_vurt.zip — пакет карт нормалей/Normalmap Pack, для текстурного мода Gothic 2: Graphics Overhaul, за авторством Vurts'a.
Примечание: По-мимо этого, у вас должен быть установлен оригинальный пакет текстур этого мода, а затем, просто объедините новый пакет со старым оригиналом мода.

Установка: распаковать в каталог игры:
"..\System\GD3D11\textures\replacements".
Примечание: В случае установки карт нормалей для текстурных модов и паков, сначала нужно скачать и установить(распаковать) в указанный каталог пакет для оригинальной игры "Г2: Ночь Ворона", после чего, распаковать в него пакет карт нормалей для конкретного мода(ели он есть), с подтверждение замены файлов, если это потребуется.

Удачи!
s_065.gif
Тесселяция (Tessellation)

Тесселяция-шейдеров, продолжение...

Ранее уже были некоторые тесты с тесселяцией, но сегодня мне удалось продвинутся в этом немного дальше обычного, потребовалось лишь немного больше желания для всего этого и, мы можем уже двигаться дальше.
Было много проблем с тем что в "Готике" меши мира игры не связаны, из-за чего каждый отдельно взятый треугольник становился видимым. Я добавил функцию которая выделяет вертексы обращенные в другую плоскость, и находящихся на краях мешей.
По-мимо этого, был включен специальный шейдер работающий без текстурных координат, накладывающий до 3-х различных текстур со всех сторон на меш.
Так что теперь я могу отвязать меш от его текстурных координат(кто виноват в том что его треугольники не связаны?!) и применить к нему тесселяцию-шейдера(Tessellation-Shader) без опасения того, что меш будет разрушен из-за этого.

Конечно, на данный момент ещё есть ряд факторов, гарантирующий, хоть и редкое, но разрушение меша.. Позже, я и об этом позабочусь тоже..
s_072.gif


Тесселяция применялась к горе в портовой части Хориниса, выглядит это таким образом, в порядке слава-направо:
Tesselation_off.jpg Tesselation_on.jpg Tesselation_pavement.jpg Tesselation_vurt.jpg
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. ну а если нет, заглядывайте почаще, значит позже будут...
s_064.gif
Сделан ещё один шаг в направлении развития проекта на пути его корректной работы в игре. Мне пришлось отключить рендеринг для некоторых объектов и с тех пор я пока не получил ни одного сбоя в игре.

Это включает в себя:
  • Меши брони и предметов;
  • Динамически порождаемых частиц;
  • Динамическую анимацию мешей на скелете.
Решение этих проблем я отложу на один из будущих релизов.


Новое в этой версии:
  • Ускорен рендер мира игры(меш мира/Worldmesh + Вобы/VOBs), для геометрии теней/ShadowGeometry он по-прежнему медленный;
  • Ночи теперь стали ярче;
  • Добавлен интерфейс редактора(используйте клавишу F1 для его открытия):
    • С графическим интерфейсом пользователя(GUI) моей разработки, его портирование в проект до конца ещё не завершено, не хватает нескольких элементов управления для создания хорошего интерфейса. таким образом пока это только тестовый билд, а вовсе не финал;
    • Вы можете проверить его в работе по вкладке: "Растительность/Vegetation". Все остальные настройки только для моего тестирования.
  • Автоматическое размещение растительности:
    • В редакторе интерфейса вы можете использовать различные виды генераторов растительности:
      • Нажмите "Добавить растительность/Add Vegetation", чтобы получить бокс прикрепленный к вашему курсору мыши. Щёлкните в любом месте мира игры для его размещения;
      • Используйте опцию "Текстура определена/Texture aware" для создания травы, она появится как только вы щёлкните по текстуре, которая также будет базовым цветом травы;
      • Если опция "Текстура определена/Texture aware" отключена, весь бокс будет заполнен растительностью с использованием первой найденной текстуры в качестве базового цвета для травы;
      • Выберите меш и нажмите "Заполнить выделенное/Fill selection", чтобы заполнить все выделение растительностью. Выбор осуществляется всё с той-же текстурой в текущей секции;
      • Пока ещё вы не можете сохранить результат вашей работы;
      • Пока ещё вы не можете изменить количество или размер меша травы;
      • Выборка нужного на данные момент очень простая;
      • Скриншот:
        vegetation11.jpg
  • В "Общие настройки/General Settings" добавлен параметр "Сила ветра/Wind Strength", который влияет только на размещенную растительность;
  • Снижено время загрузки игры и потребление памяти. Загрузка игры для активной сессии по-прежнему медленная при её первом запуске;
  • Мелкие исправления и изменения, о которых я забыл;
  • Этот релиз содержит исходный код проекта, который находится здесь: "..\System\GD3D11\g2d3d11_source".

Известные ошибки и отсутствующие возможности:
  • Анимированные меши на скелете (например, оружие или факела) не могут быть изменены;
  • Лица персонажей статичные;
  • Вода ещё не полностью реализована;
  • Эффекты частиц/ParticleEffects не будут отображены если они были добавлены после загрузки игрового уровня, для предотвращения краха игры;
  • Видео не воспроизводится;
  • Гг получает неправильную текстуру если он без брони;
  • Анимированные текстуры не анимируются, чтобы предотвратить крах игры;
  • Исчезновение некоторых объектов во внутренних интерьерах игры.

С добавлением графического интерфейса пользователя(GUI), визуализация использует Direct2D, поэтому, пожалуйста, дайте мне знать, если при его запуске вы получите ошибки и/или вылеты. Особенно это касается владельцев Windows 7, поскольку я не уверен есть ли он у всех..


Дополнительные материалы:
Normalmap-Pack, — карты нормалей/NormalMap в формате *.dds
Установка: распаковать в каталог игры: "..\System\GD3D11\textures\replacements".

Никаких изменений в него не вносилось, поэтому нет необходимости его повторно загружать, если он у вас уже установлен.

Удачи!
s_065.gif
Новая растительность (New Vegetation)

Травушка муравушка или ленивые эксперименты, продолжение..

Адаптация цвета травы под текстуру земли:
vegetation10.jpg vegetation11.jpg

Обзавелся полным комплектом текстур для границ секций, которые будут засажены травой.
Да, прошу меня пожалуйста простить за всю эту траву, но какой-то я сегодня веселый..
s_004.gif



Небольшое правило о траве:
— Одно растение, один меш, одна текстура.
Суб-меши безжалостно игнорируются, из соображений производительности.
По-мимо этого, меш должен состоять из одного объекта "пучок травы", так как в целом все элементы для графического процессора(GPU), так или иначе должны будут отображаться только как один большой меш.
Если вы применяете траву для всего меша, то она автоматически принимает его текстуру. В данном случае это означает что всё то, что находится в границах секций "Меша", получает туже самую текстуру.

Придерживаясь этого правила, можно вместе подготовить меши и текстуры растительности, которые могут идти отдельным пакетом для загрузки.
s_072.gif
Сверху Снизу