Добавлен , опубликован

Думаю, многие уже видели проект Nirvana, в котором автор реализовал технологию Normal Mapping.
Я переделал Direct3D8to9 библиотеку из данного проекта, теперь вместо генерации карт нормалей, они загружаются из файлов.

Тестовые скриншоты

`
ОЖИДАНИЕ РЕКЛАМЫ...
25
конечно стоит, это просто отлично.
а можно чуть больше примеров того, как все это выглядит в игре со стандартными и кастомными моделями из базы и гайд по установке?
было бы круто эту штуку в каждый дом
хотя честно, нормал маппинг хз хорошо ли смотрится на деле
13
Примеры со стандартными моделями можешь посмотреть, перейдя по ссылке. Ещё лучше, если скачаешь и сам в игре посмотришь. Завтра ещё что-нибудь сделаю, на скринах плохо виден эффект нормал маппинга, да и с тенями ещё не работал.
Пока я делаю это только для своего проекта, собираюсь делать только демку на движке warcraft'а, как только сделаю (если), выложу все исходники.
24
Даю зеленый свет в надежде что проект будет развиваться, задумка хорошая и полезная, думаю все оценят.
24
Кстати потестил Нирвану, и вижу что у них реализована моя идея с троллями, так что наверное даже не буду пытаться что то сделать в плане карт.
13
На видео можно увидеть, как ведёт себя нормал маппинг с изменением времени суток.
Наполеоновские планы:
  • Переход на Direct3D11
  • Карты нормалей
  • Тесселяция
  • Динамическое освещение
  • Динамические тени
  • Отражения в режиме реального времени
  • Пост-эффекты
  • Поддержка .dds формата текстур
Пару дней назад наткнулся на проект по графической модификации игры Gothic: перенос рендера игры с D3D7 на D3D11, следовательно всё возможно реализовать, но я не гарантирую, что доведу дело до конца.
Также планирую сделать замену DGUI системе.
Melissa, прости, случайно минус поставил(
13
ENAleksey, тесселяция? Серьёзно? Ну мне и теней бы в захлёб хватило. А как скоро ты сможешь дать нам поиграться с твоим прогрессом? :3
13
Пока я делаю это только для своего проекта
И не факт, что он выйдет в свет.
Впрочем уже сам можешь скачать Нирвану и тестить.
поиграться с твоим прогрессом
Да и прогресс не такой уж и большой: всего лишь вместо генерации карт нормалей, они теперь загружаются из файлов.
6
Круто! А можешь сделать скрины со стандартными моделями?
13

Небольшой Update

  • Реализована поддержка .dds файлов. Теперь текстуры не нужно импортировать в карту, что значительно снижает её вес, diffuse и normal текстуры загружаются из папки (далее можно сделать загрузку из .mpq архива).
  • Простая отрисовка спрайтов и текста. В дальнейшем буду пробовать совместить данную систему с SharpCraft'ом, что позволит выводить изображения и текст используя jass.
Всё ещё улучшаю Bump mapping и Dynamic shadows. Планирую переносить всё на шейдеры, добавлять поддержку источников света, различные пост-эффекты.
Параллельно с этим пишу системы для игровой action механики: передвижение, боевая система.
10
Оху...
Охренеть.
Апплодирую стоя. Вот это вещь.
13
Нужна помощь.
Кто-нибудь имеет опыт работы со взломом игр, в получении и изменении данных?
Кто может объяснить, как получить данные, возвращаемые jass функцией, из сторонней программы?
Библиотека, которую я использую имеет GameHook. Я получил адрес нужной мне функций, например, "GetCameraTargetPositionX". Что теперь я должен с ним сделать, чтобы получить возвращаемое функцией значение?
12
Хмм, sharpcraft + direct3d11 + hjass. Теперь из варкрафта можно лепить всё что угодно. Почти. Если суммировать эти и еще остальные наработки получается уже "свой" варик. Если бы ещё опенсурс
13
А ты можешь подобные вещи (чтение карт нормалей из файла) реализовать для любой игры?
13
J64_, сорцы sharpcraft'а есть, а что такое hjass? Прости, не в курсе.
Skarn, Для каждой игры нужно вручную настраивать: во-первых, нужно знать адрес вызова функции Direct3DCreateX, если используется Direct3D, во-вторых нужно получить доступ к функциям отрисовки игры, или, как в данной библиотеке, использовать ручное установление текстур для заранее найденных примитивов по их NumVertices, Stride и PrimCount.
ENAleksey:
что такое hjass
Поискал, вспомнил.
13
ENAleksey:
J64_, сорцы sharpcraft'а есть, а что такое hjass? Прости, не в курсе.
Skarn, Для каждой игры нужно вручную настраивать: во-первых, нужно знать адрес вызова функции Direct3DCreateX, если используется Direct3D, во-вторых нужно получить доступ к функциям отрисовки игры, или, как в данной библиотеке, использовать ручное установление текстур для заранее найденных примитивов по их NumVertices, Stride и PrimCount.
ENAleksey:
что такое hjass
Поискал, вспомнил.
Если бы запилил такую же тему на WoW был бы очень благодарен. Хватит уже адовой некрофилией с трупом wc3 заниматься.
15
Хмм, sharpcraft + direct3d11 + hjass. Теперь из варкрафта можно лепить всё что угодно.
Как на счет адекватного 16:10, неглючащего WASD и реконекта?
Если бы запилил такую же тему на WoW был бы очень благодарен. Хватит уже адовой некрофилией с трупом wc3 заниматься.
Skarn, разве WoD этого не умеет из коробки?
13
Решил переносить освещение и bump mapping на шейдеры. Шейдеры готовы, но в них нужно передавать такие данные, как координаты положения и цели камеры.
Я нашёл адреса данных функций:
0x003D8F6C "GetCameraTargetPositionX"
0x003D8F80 "GetCameraTargetPositionY"
0x003D8F94 "GetCameraTargetPositionZ"

0x003D8FBC "GetCameraEyePositionX"
0x003D8FD0 "GetCameraEyePositionY"
0x003D8FE4 "GetCameraEyePositionZ"
Теперь нужно как-то получить значения возвращаемые этими функциями.
Здесь имеется код hook'а, где происходит возвращение значения функции GetUnitDamage, кто сможет объяснить, как сделать тоже самое, только для работы с игровой?
Новостей месяц не будет: сегодня уезжаю отдыхать.
13
Харгард:
Хмм, sharpcraft + direct3d11 + hjass. Теперь из варкрафта можно лепить всё что угодно.
Как на счет адекватного 16:10, неглючащего WASD и реконекта?
Если бы запилил такую же тему на WoW был бы очень благодарен. Хватит уже адовой некрофилией с трупом wc3 заниматься.
Skarn, разве WoD этого не умеет из коробки?
Неа, нормал мэппинг в WoW не используется, насколько мне известно.
25
Как на счет адекватного 16:10, неглючащего WASD и реконекта?
:3333 16 на 9 и реконнект это супир
13
На следующий день после того, как я уехал, мне в голову пришла мысль, как заставить всё работать без использования дополнительных hook'ов!
Жаль, что под рукой был только телефон, и я не мог проверить данный способ на работоспособность. У меня были все файлы проекта, и я уже всё написал, но проверить смогу только через месяц, когда приеду домой.
Если всё получится, не будет проблем сделать normal и parallax mapping, отражения, мягкие тени и многое другое. Но есть большой шанс, что ничего не получится, поэтому я всё ещё жду вашей помощи и буду очень вам благодарен за запасной способ реализации.
Что касается поддержки Direct3D11, я думаю, что нельзя просто поменять цифру 9 на 11 во всех файлах. Пока рано об этом думать, и сначала нужно завершить работу с "девяткой".
Чтобы оставить комментарий, пожалуйста, войдите на сайт.