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

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #90 : Сентябрь 20, 2016, 07:28:58 pm »
Можно. Когда будет более-менее разобраны классы CPed в plugin-sdk, я попробую это сделать.
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
« Ответ #91 : Октябрь 15, 2016, 07:33:48 pm »
Интересное наблюдение: катсценовые тени корректнее ложатся на поверхности, а именно - замечено правильное их наложение на полностью вертикальные стены:


Пруф вертикальности - обычная тень педа(игнорирует стену) в сравнении с корректной катсценовой:


Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #92 : Октябрь 15, 2016, 08:31:46 pm »
Для "катсценовских" теней используется другой алгоритм "наложения".
Я позже, если найдется свободное время, подробное расскажу об этом алгоритме.
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
« Ответ #93 : Октябрь 16, 2016, 05:29:31 am »
Что интересно - "наложение" катсценовых теней имеет на всех поверхностях(в т.ч. - вертикальных) тот же небольшой отступ, что и обычные тени имеют по оси Z.
« Последнее редактирование: Октябрь 16, 2016, 05:31:55 am от Shagg_E »

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #94 : Октябрь 16, 2016, 11:16:39 am »
Для создания теней используется геометрия коллизий, а не рисуемых обьектов.
Скорее всего, это так не совпадают модели коллизии и самого здания.
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
« Ответ #95 : Октябрь 16, 2016, 02:06:49 pm »
Не - совпадают они идеально(неоднократно проверял на собственных моделях) - просто в игре всегда приплюсовывается некий оффсет для всех наземных партиклов. DimZet находил его в памяти игры и уменьшал, что убирало все эти неприятные щели:
05DF: write_memory 6917580 size 4 value 1017118720 virtual_protect 1 // Понижает тени и свет ближе к землеНо вот то, что катсценовая тень плюсует оффсет еще и для вертикальных поверхностей - я узнал лишь недавно...
P.S. Чем больше узнаю о катсценовых тенях, тем больше я проклинаю тот день, когда их заметил: они же идеальны!!!*





*В сравнении со стандартными тенями, ессно...
« Последнее редактирование: Октябрь 16, 2016, 02:14:41 pm от Shagg_E »

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #96 : Октябрь 16, 2016, 02:36:50 pm »
Попробуй так
Код: C++
  1. 05DF: write_memory 0x698DE4 size 4 value 0.1 virtual_protect 0
« Последнее редактирование: Октябрь 16, 2016, 02:40: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
« Ответ #97 : Октябрь 16, 2016, 04:37:09 pm »
Попробуй так
Круто! Именно тот адрес!
Короче, усилиями DimZet и DK мы имеем:
//0A8C: write_memory 0x698DCC size 4 value 0.01 virtual_protect 0 // InGame shadows and lights perfect offset...UPD:DON'T TOUCH THIS!!!
0A8C: write_memory 0x698DE4 size 4 value 0.01 virtual_protect 0 // CutScene shadows perfect offset
Смысла скринить нет, поскольку "просвет" едва виден лишь при особо извращенных ракурсах камеры на full-hd монике или если уж камера вовсе "разрезает" пространство в месте наложения тени.
Ниже 0.01 ставить не советую - тени могут иногда "моргать" при определенных обстоятельтвах(уже при 0.005 появляются глитчи).
« Последнее редактирование: Октябрь 16, 2016, 05:08:03 pm от Shagg_E »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #98 : Октябрь 16, 2016, 05:01:20 pm »
UPD:
Ошибка: оффсет IG теней лучше вообще не трогать(стандартного 0.029999999 вполне достаточно): поскольку эти тени, как и любые наземные партиклы, отрисовывается сверху вниз, то и оффсет у него строго по Z.
Это значит, что при определенных крутых склонах, фактический оффсет, перпендикулярный к поверхности, может снизиться с 0.01 до 0.001 и ниже, что вызывает "моргание" теней, света и прочего:


С катсценовыми тенями такого не наблюдается, поскольку их отрисовка идет "правильно", и тот адрес, что нашел DK является фактическим оффсетом, т.е. на любой поверхности оффсет будет перпендикулярен ей и, соответственно - не будет уменьшаться, вызывая глитчи.

И снова я пускаю слюни на катсценовые тени...
« Последнее редактирование: Октябрь 16, 2016, 05:03:29 pm от Shagg_E »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #99 : Октябрь 18, 2016, 05:55:20 am »
Поэкспериментировал с тенью, хотел добиться большей насыщенности, а то столько надежд, а тень то почти не видно, но из всех значений вокруг этих адресов удалось только увеличить размер тени и развернуть угол, вобщем ничего интересного.
Изменить насыщенность удалось только с помощью настроек timecyc.dat в параметре Shdw, я так понял 255 максимально насыщенное, но хотелось бы больше, вот что вышло



Изменение параметра влияет и на обычные тени педов, я попробовал полностью убрать альфу с тени игрока, но она осталась полупрозрачной



То есть в коде предположительно все-таки есть значение, которое может уменьшить прозрачность тем самым увеличив насыщенность тени, возможно этим параметром можно было бы и кутсценную тень усилить, но не до такой степени как в mvl, там перебор.

Оффлайн FrogByte

  • Призрак
  • Сообщений: 13
  • Репутация: +7/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #100 : Ноябрь 18, 2016, 05:44:45 pm »
Недавно разобрал классы теней, немного подсмотрел код mvl и решил попробовать прикрепить их к педам. Получилось довольно криво, но как-то работает, пока что понятия не имею, как это сделать нормально.



Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #101 : Ноябрь 18, 2016, 07:45:38 pm »
Отлично, пошло дело, даже не верится глазам. Тени успевают за педами? Я пока вижу только два недочета, отрыв от ног и резкость в сравнении с пальмами, а так выглядит вполне рабочим вариантом.

Оффлайн FrogByte

  • Призрак
  • Сообщений: 13
  • Репутация: +7/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #102 : Ноябрь 18, 2016, 08:07:56 pm »
Отлично, пошло дело, даже не верится глазам. Тени успевают за педами? Я пока вижу только два недочета, отрыв от ног и резкость в сравнении с пальмами, а так выглядит вполне рабочим вариантом.


Да, успевают. Резкость не проблема, можно "заблюрить". В исходниках что я кидал выше, есть закомментированная строка с альтернативным способом создания тени.

Код: C++
  1. This->dwTimerUnused->Create((RwObject*)This->m_pRwObject, 8, true, 1, true);

« Последнее редактирование: Ноябрь 18, 2016, 08:10:55 pm от FrogByte »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #103 : Ноябрь 18, 2016, 11:03:28 pm »
Круто! Но немного не понятно, как всё это может быть проще применения уже существующих катсценовых теней к педам... Там и такого отрыва от ног нет, и заблюрено достаточно...

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #104 : Ноябрь 19, 2016, 05:21:29 pm »
Последний скрин отлично смотрится. У меня asi-шка к сожалению не сработала, вылет при появлении педа.