Автор Тема: Рендер тени в Vice City  (Прочитано 50797 раз)

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #60 : Май 08, 2016, 06:26:05 pm »
Даблпостинг, но это важно:
Оказалось, что в новом варианте DK, когда, помимо прочего, патчится это:
Цитировать
    plugin::patch::SetPointer(0x6917D8, DynamicSetupLighting);
    plugin::patch::SetPointer(0x6917DC, DynamicRemoveLighting);

- освещение на объектах, даже без нормалей, задается в timecyc.dat в пункте Amb_Obj. Таким образом, от Amb_Obj освещаться начинает всё, а от пункта Amb - ничего. Т.е. это делает пункт Amb в timecyc.dat бесполезным.
Старый же вариант, когда патчилось лишь
Цитировать
    plugin::patch::SetPointer(0x6865C4, DynamicSetupLighting);
    plugin::patch::SetPointer(0x6865C8, DynamicRemoveLighting);

- у статичных объектов всё оставалось по-прежнему(динамическое освещение от Amb_Obj), а у динамических(у которых в этом случае не работает динамическое освещение) - освещение стало задаваться Amb. Таким образом, старый вариант, описанный DK здесь - дает больше возможностей и разнообразия для творчества.
« Последнее редактирование: Май 08, 2016, 06:39:22 pm от Shaggy »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #61 : Май 08, 2016, 06:39:08 pm »
А вот какие я провел эксперименты - отключил освещение машин, но они продолжили освещаться из функции CEntity::SetupLighting(), при этом с тем же багом выключение при повороте камеры, значит освещение сущности работает как-то криво на объектах наследованных классов и им необходимо дополнительное собственное освещение.
То что ты Shaggy говоришь, действительно имеет место, динамические объекты могут как освещаться, так и не освещаться, и это как ни странно зависит от находящихся рядом освещенных статических объектов. Я на одном и том же коде получил разный результат в зависимости от карты.
Второй вариант, предложенный DK, вроде бы убрал все проблемы, которые были у меня, надо именно так и делать для устранения выключения. Единственно с timecyc.dat действительно один параметр становится ненужным, но может быть он и не сильно важен.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #62 : Май 08, 2016, 06:43:01 pm »
xanser Да вот проблема в том, что из-за того, что во втором варианте всё освещается от Amb_Obj - невозможно сделать разное освещение на избранных объектах(например, у меня облака должны иметь свое освещение, чтобы они оставались белыми, когда всё становится слегка оранжевым, или - черными, когда на улице ночь и всё темное(а не черное))

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #63 : Май 08, 2016, 07:35:11 pm »
xanser У тебя же первый вариант DK не глючил(я про сбивание освещения)? Глючить стало, когда ты пробовал пропатчить другие адреса? Мне просто нужно знать этот момент, это важно, поскольку я решил использовать у себя первый вариант
« Последнее редактирование: Май 08, 2016, 07:39:58 pm от Shaggy »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #64 : Май 09, 2016, 06:32:51 am »
Глючил первый вариант. Из-за недоосвещения отдельно динамических объектов, как и на машинах, когда я проверил. Второй вариант можно покопать, добавить какие-то условия, чтобы задействовать все изначальные параметры timecyc.dat
« Последнее редактирование: Май 09, 2016, 06:39:21 am от xanser »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #65 : Май 09, 2016, 09:03:35 am »
Я не понимаю: у меня при первом варианте объекты, прописанные в object.dat или созданные скриптом, т.е. - динамические - вообще не имели динамического освещения, а освещались от пункта Amp в timecyc.dat. Как так?

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #66 : Май 09, 2016, 09:32:15 am »
Я сам не до конца понимаю, вчера я обнаружил то же самое, но не во всех случаях, когда освещается, когда нет, надо брать наиболее подходящий вариант, я себе выбрал.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #67 : Май 09, 2016, 09:51:03 am »
Я вот сейчас протестил тот вариант, что ты скидывал мне здесь, и там действительно освещаются объекты из object.dat(морганий пока не заметил), но в случае, когда я вставил чистый код DK себе в плагин - такого не наблюдается(т.е., как я писал ранее - объекты из object.dat просто не имеют динамического освещения, и никаких глюков не было)...

P.S. Просто мне важно найти сейчас причину этих морганий, ибо будет поздно, когда я несколько сборок подстрою под один из вариантов освещения, и потом вдруг проявятся эти глюки...
« Последнее редактирование: Май 09, 2016, 09:53:38 am от Shaggy »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #68 : Май 09, 2016, 10:23:24 am »
Что тут сказать, слушай лучше DK  :D
Я в прикрепленную asi-шку завернул только это plugin::patch::SetPointer(0x6865C4, BuildingSetupLighting);
Если честно непонятно, в каких случаях срабатывает RemoveLighting и зачем он нужен.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #69 : Май 09, 2016, 10:31:58 am »
Ну я имел в виду такой вопрос: тот, первый код DK, если пихнуть его без дополнений, тех глюков не вызывает?
Я просто уже немного потерял нить вашей "переписки" с DK, ибо мои знания C++ на уровне "скопировал-вставил"(что я и сделал с кодом DK)

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #70 : Май 09, 2016, 11:39:33 am »
Если честно непонятно, в каких случаях срабатывает RemoveLighting и зачем он нужен.

Так работает Direct3D. Поставил освещение - отрендерил - убрал освещение.
Источники освещения сами по себе не отключатся.
Представь, что рендерится какой-то обьект, который освещается динамически. А после него рендерится обьект, которому не нужно динамическое освещение. Если не отключить источники после рендера первого обьекта, то и второй будет отрендерен с этими источниками.

Если тебя интересует, где именно вызываются SetupLighting и RemoveLighting - надо искать в месте, где рендерится обьект (авто, пед).
При этом, поиск лучше начать где-то "сверху", в методах класса CRenderer (класс, который рендерит игровые обьекты (сущности))

Из названия понятно, что эта функция отвечает за рендер обьектов, кторые не являются дорогами.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #71 : Май 09, 2016, 10:14:20 pm »
Короче - тот первый вариант практически идеален для комбинирования всяких идей, к примеру - динамических облаков, которые должны иметь своё освещение, отличное от остального мира, либо - незаметной моментальной подмены статики на катсценовые объекты(ниже в видео), поскольку теперь у них идентичное освещение!
! No longer available

Не хватает только теней:)
Правда, теперь возникает проблема - иногда всё же хочется, чтобы некоторые динамические объекты динамически освещались(лол), а с этим вариантом кода это не выйдет реализовать.

Второй же вариант даёт одинаковое динамическое освещение на абсолютно всех объектах, но в этом случае всё освещается от пункта Amb_Obj в timecyc.dat, а от пункта Amb теперь не освещается ничего, что лишает той свободы, что мне выше позволила запилить своё освещение динамическим облакам. Если у моделей(любых) убрать нормали - эти модели всё равно будут освещаться от Amb_Obj!

Короче - не знаю, как быть.

P.S. Также по-прежнему мучаюсь от того, что не могу вернуть управление игроку в катсценах. Из-за этого пришлось снова пилить унылою скриптовую "эмуляцию" управления, когда игроку "подвластны" лишь 2 кнопки - влево и вправо.
P.P.S. Если кому нужно будет - вот вся игра в архиве. Спецом на Диск скинул, чтобы не пришлось скачивать весь архив ради какого-нибудь timecyc.dat. Под освещение нормально настроена лишь погода 4(EXTRASUNNY). Можно по-перематывать время вперед-назад для тестов.
« Последнее редактирование: Май 09, 2016, 10:16:26 pm от Shaggy »

Оффлайн DimZet13

  • Призрак
  • Сообщений: 3
  • Репутация: +0/-0
    • Просмотр профиля
    • dimzet13.3dn.ru
Re: Рендер тени в Vice City
« Ответ #72 : Май 09, 2016, 11:59:47 pm »
Ребят, я это освещение сделал еще в прошлом году и для гта3 и для вайса.
Не получилось только исправить такие косяки:
-объект освещается когда объект и камера игрока в радиусе 2nfx
-объект освещается полигонно, а не повекторно. То есть полностью. К примеру много-полигоная плоскость освещается полностью, а не в центре 2nfx на плоскости.

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #73 : Май 10, 2016, 06:37:36 pm »
Ребят, я это освещение сделал еще в прошлом году и для гта3 и для вайса.
Не получилось только исправить такие косяки:
-объект освещается когда объект и камера игрока в радиусе 2nfx
-объект освещается полигонно, а не повекторно. То есть полностью. К примеру много-полигоная плоскость освещается полностью, а не в центре 2nfx на плоскости.
1) Не 2nfx, а 2dfx (типо 2д-эффект)
2) Возможно, из-за того, что в игре есть лимиты на кол-во корон/проекций/источников
3) Я об этом говорил. Это повершинное освещение (альтернатива - попиксельное). Оно хорошо работает только на очень детализированной сетке.
Поэтому если хочется нормального освещения - о стандартном лучше вообще забыть.
Я позже напишу небольшой пример/тутор по подключению шейдеров в игре.
Сделать базовое освещение на шейдерах довольно просто. Есть сотни примеров на любой вкус. Сделать какое-то ограничение на кол-во источников.
Но если захочется чего-нибудь крутого, например такого (куча источников в сцене), то нужно будет много чего менять в коде движка и игры.

UPD Хотя, проблема с тем, что от источников освещается вся сторона обьекта - связана с тем, что точечные источники в гта - не совсем точечные.
Может позже с картинками покажу что и как, т.к. одними словами будет трудно обьяснить.
« Последнее редактирование: Май 10, 2016, 06:44:50 pm от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #74 : Май 11, 2016, 02:10:42 am »
В версии DimZet13(для Вайса) освещение работает лишь на динамических объектах, так что версия DK на данный момент более актуальна.
Но зато в том же архиве у DimZet13 есть версия для трехи, в которой(по его словам) всё работает и для статики.
« Последнее редактирование: Май 11, 2016, 02:15:43 am от Shaggy »