GTA Builder Форум

GTA Vice City => Идеи => Тема начата: Shagg_E от Март 15, 2015, 06:24:56 pm

Название: Отражения воды
Отправлено: Shagg_E от Март 15, 2015, 06:24:56 pm
В общем, xanser уже работал с водой, так что эта тема по большей части к нему, но вдруг кто еще что-то знает..
В вайсе вода имеет отражения лишь в небольшом радиусе, и это убивает возможность создания "шейдерной водички"(т.е. замены стандартного отражения на реалтаймового) - граница воды с отражением и без находится слишком близко(на расстоянии около 30 игровых метров):
GTA vice city sea look like IV (http://www.youtube.com/watch?v=mxhJWcUn5Dk#)

Собственно, вопрос: как увеличить дальность прорисовки стандартных отражений воды в Vice City? Хотя бы раз в 10 увеличить, тогда шейдерные отражения выглядили бы норм.
Название: Re: Отражения воды
Отправлено: xanser от Март 17, 2015, 03:42:19 pm
Шейдерная вода похожа на жидкое стекло. Расширить я пока не смог, нашел что эта часть воды рисуется здесь:

Код: ASM
  1. .text:005C1579 16C FF 57 48           call    dword ptr [edi+48h]

Еще интересный параметр попался тут 0x69CD38 (float = 16.0), им можно регулировать рябь на воде, сделать более речной что-ли.
Название: Re: Отражения воды
Отправлено: Sektor от Март 17, 2015, 07:33:47 pm
Код: ASM
  1.  call    dword ptr [edi+48h]

xanser, Это виртуальный метод. Тут нужно понять что у нас находиться в edi по смещению +0x48, там находиться адрес самого метода.

Цитировать
0x69CD38
По поводу этого параметра, надо уже смотреть где он используется, кнопкой X, смотреть места. Возможно это константа, если не было записи в него.
Название: Re: Отражения воды
Отправлено: xanser от Март 18, 2015, 05:42:52 am
Может  быть нужен даже не сам метод, а то как формируются его параметры, скорее всего в них и размер области с отражением, но мне пока непонятно, где именно.
По пути сделал еще один фикс с отражением солнечных лучей для расширенной воды:

(http://s6.postimg.org/cgzp9jzep/scr_20150318023114657.jpg) (http://s6.postimg.org/wpn2v9ypt/scr_20150318023117672.jpg)

Сделал это тут 0x542E4E (dword) 1440 поменял на 2000 и 0x542E66 (byte) 20 поменял на 127
Название: Re: Отражения воды
Отправлено: GHOST от Март 18, 2015, 08:38:13 am
По пути сделал еще один фикс с отражением солнечных лучей для расширенной воды

Мм.. Потом скачать можно будет?)
Название: Re: Отражения воды
Отправлено: Prographer от Март 18, 2015, 10:34:27 am
Шейдерная вода похожа на жидкое стекло. Расширить я пока не смог, нашел что эта часть воды рисуется здесь:

Код: ASM
  1. .text:005C1579 16C FF 57 48           call    dword ptr [edi+48h]

Еще интересный параметр попался тут 0x69CD38 (float = 16.0), им можно регулировать рябь на воде, сделать более речной что-ли.
Видимо ты нашёл адрес, отвечающий за какой-то параметр сетки поверхности воды. Надо бы включить режим отображения сетки, чтобы точно узнать, что с ней происходит
P.S. Визуально, 0x69CD4C делает что-то аналогичное
Название: Re: Отражения воды
Отправлено: Shagg_E от Март 19, 2015, 02:43:23 am
Цитировать
Шейдерная вода похожа на жидкое стекло
Да знаю, но это просто автор видео так стремно настроил. Если всё сделать грамотно - вода будет потрясная. А уж с новой рябъю на воде - так и подавно.

Главное - найти способ увеличить дальность этой отражающейся воды...
Название: Re: Отражения воды
Отправлено: xanser от Март 19, 2015, 05:33:35 am
Shaggy, попробуй еще рябь поменять вот этим параметром 0x69CD44 (float, хотя не совсем так) вместо первого, я поставил 3.0, у меня поинтереснее вода стала.

GHOST, потом я может свой WaterMod дополню. Кто-то переписывал его на Cleo, можно просто добавить туда, все адреса я написал.
Название: Re: Отражения воды
Отправлено: Prographer от Март 19, 2015, 09:51:55 am
Цитировать
Шейдерная вода похожа на жидкое стекло
Да знаю, но это просто автор видео так стремно настроил. Если всё сделать грамотно - вода будет потрясная. А уж с новой рябъю на воде - так и подавно.

Главное - найти способ увеличить дальность этой отражающейся воды...
Нашёл что-то похожее на рябь, вот 0x69CD0C (float)

А также...
0x69CCF0 (float) - конечный размер шлейфа от лодки
0x69CCE0 (float) - начальный размер шлейфа от лодки
0x69CD30 (float) - высота бликов над поверхностью воды
0x69CD2C (float) - высота волн
0x69CD20 (float) - размер сегмента
0x69CCDC (float) - коэффициент изменения размера шлейфа(?)
Название: Re: Отражения воды
Отправлено: Shagg_E от Март 19, 2015, 06:13:02 pm
Всё это вместе изменит вид воды вкорень! Жаль, дальность отражающейся воды пока никто не нашел:(
Название: Re: Отражения воды
Отправлено: Prographer от Март 19, 2015, 08:23:27 pm
Всё это вместе изменит вид воды вкорень! Жаль, дальность отражающейся воды пока никто не нашел:(
Возможно, дальность отражений лежит в одном или нескольких этих адресах
0x69CC00 (float)
0x69CBFC (float)
0x69CBF8 (float)
0x69CBF4 (float)
0x69CBF0 (float)

Название: Re: Отражения воды
Отправлено: Shagg_E от Март 20, 2015, 09:19:47 am
Покопавшись во всех этих адресах, а также в этой части памяти(отрисовка воды) вручную, а именно - методом тыка, откопал еще несколько адресов, но почти все они приводили к тупым результатам.
В итоге, отфильтровал всё добро,  и вот что получилось(на скринах не особо заметно, но в игре чувствуется):
скрины "было/стало"
(http://i67.fastpic.ru/big/2015/0320/28/f736d3ba5019785bdf7f929a712c1e28.jpg)(http://i57.fastpic.ru/big/2015/0320/55/828089182f68130391859c5ced190655.jpg)
(http://i68.fastpic.ru/big/2015/0320/63/8abc3488b344c6aa76f2db2957e44363.jpg)(http://i65.fastpic.ru/big/2015/0320/8f/8763bc13c8e82e6706affb16f586058f.jpg)
(http://i60.fastpic.ru/big/2015/0320/0c/50fcc2db83cfc7ae3305aa2043dc140c.jpg)(http://i59.fastpic.ru/big/2015/0320/62/fe719d6fc5a476d9b3962e414ff6bc62.jpg)
05DF: write_memory 0x69CBF4 size 4 value 4.0 virtual_protect 0
05DF: write_memory 0x69CBFC size 4 value 1.0 virtual_protect 0
05DF: write_memory 0x69CC00 size 4 value 4.0 virtual_protect 0
05DF: write_memory 0x69CD0C size 4 value 0.12 virtual_protect 0
05DF: write_memory 0x69CD2C size 4 value 0.1 virtual_protect 0
05DF: write_memory 0x69CD3C size 4 value 0.59 virtual_protect 0
05DF: write_memory 0x69CD44 size 4 value 2.5 virtual_protect 0

Накатал скрипт(в аттаче), который просто включает новые волны после нажатия N+7 и возвращает старые при повторном нажатии(прост для наглядного теста).
Вот код, ес интересно:
{$CLEO .cs}

//-------------MAIN---------------
thread 'NEWWWVS'

:NEWWATERWAVES_02
wait 0
if and
05EE:   key_pressed 78  // VK_N
05EE:   key_pressed 55  // VK_7
jf @NEWWATERWAVES_02

:NEWWATERWAVES_04
wait 0
if or
85EE:   NOT key_pressed 78  // VK_N
85EE:   NOT key_pressed 55  // VK_7
jf @NEWWATERWAVES_04
05DF: write_memory 0x69CBF4 size 4 value 4.0 virtual_protect 0
05DF: write_memory 0x69CBFC size 4 value 1.0 virtual_protect 0
05DF: write_memory 0x69CC00 size 4 value 4.0 virtual_protect 0
05DF: write_memory 0x69CD0C size 4 value 0.12 virtual_protect 0
05DF: write_memory 0x69CD2C size 4 value 0.1 virtual_protect 0
05DF: write_memory 0x69CD3C size 4 value 0.59 virtual_protect 0
05DF: write_memory 0x69CD44 size 4 value 2.5 virtual_protect 0

:NEWWATERWAVES_12
wait 0
if and
05EE:   key_pressed 78  // VK_N
05EE:   key_pressed 55  // VK_7
jf @NEWWATERWAVES_12

:NEWWATERWAVES_14
wait 0
if or
85EE:   NOT key_pressed 78  // VK_N
85EE:   NOT key_pressed 55  // VK_7
jf @NEWWATERWAVES_14
05DF: write_memory 0x69CBF4 size 4 value 8.0 virtual_protect 0
05DF: write_memory 0x69CBFC size 4 value 2.0 virtual_protect 0
05DF: write_memory 0x69CC00 size 4 value 1.0 virtual_protect 0
05DF: write_memory 0x69CD0C size 4 value 0.1 virtual_protect 0
05DF: write_memory 0x69CD2C size 4 value 0.05 virtual_protect 0
05DF: write_memory 0x69CD3C size 4 value 0.39 virtual_protect 0
05DF: write_memory 0x69CD44 size 4 value 2.39 virtual_protect 0
jump @NEWWATERWAVES_02
Можно будет сделать что-то типа дополнения к Water Mod, которое изменяет волны. Не то чтобы волны стали убер-мега реалистичными, но, на мой взгляд, стали "живее" без неприятных последствий.

Еще нашел адреса увеличения дальности прорисовки этих "физических"(анимированных) волн:
69CD70: сменил с 70.0 на 10000.0
69CD74: сменил с 160.0 на 10000.0
(http://i59.fastpic.ru/big/2015/0320/e3/42888d7a23f1b62c30c612faa78bcae3.jpg)(http://i58.fastpic.ru/big/2015/0320/12/40ff6518c22c563a92f1b90c2938b612.jpg)

Правда появился баг: теперь "анимированные" волны "просачиваются" сквозь "дальнюю" воду, создавая артефакты на отражении солнца:
(http://i66.fastpic.ru/big/2015/0320/f0/ea6e76b659b4b9e263b62478bc148ef0.jpg)

Дальность прорисовки того самого отражения, о котором я писал в первом посте - так и не нашел  :'(
Название: Re: Отражения воды
Отправлено: Prographer от Март 20, 2015, 10:05:28 am
Придётся покопать ещё немного, наверняка адрес есть. Но есть и свои плюсы. Нашли немало новых интересных адресов :)
Название: Re: Отражения воды
Отправлено: xanser от Март 21, 2015, 10:22:50 am
Правда появился баг: теперь "анимированные" волны "просачиваются" сквозь "дальнюю" воду, создавая артефакты на отражении солнца

Отражение солнца можно приподнять тут 0x6958D8 (float), например на уровень воды + высоту волн, это вроде бы выглядит не заметно.
Название: Re: Отражения воды
Отправлено: ilufir от Сентябрь 24, 2016, 05:04:58 pm
Кхм. Пришла ко мне такая мысль, что где-то есть адрес памяти, отвечающий за количество полигонов воды (так как плоскость генерируется программно же). И если увеличить его значение, то мы получим два результата(в зависимости от того, как работает формула генерации этих волн):
а)мы получим более частые, но очень плавные волны, на которых будет красиво ложиться отражение
б)волны останутся того же размера, но будут более сглаженные из-за количества полигонов
(открыл IDA-базу в первый раз, ничего не понял, простите)
Название: Re: Отражения воды
Отправлено: ilufir от Март 22, 2017, 10:05:05 pm
Сегодня еще покопался в адресах воды. Предлагаю создать небольшую базу, в которой будут записаны адреса памяти с их описанием для удобства скриптинга.
Название: Re: Отражения воды
Отправлено: SpitFire от Декабрь 17, 2017, 11:27:21 am
0x69CD68 f - Дальность прорисовки прозрачной, анимированной воды по X в машине(рекомендуемое значение 10000)
0x69CD6C f - Дальность прорисовки прозрачной, анимированной воды по Y в машине(рекомендуемое значение 10000)
0x69CD70 f - Дальность прорисовки прозрачной, анимированной воды оп X пешком(рекомендуемое значение 10000)
0x69CD74 f - Дальность прорисовки прозрачной, анимированной воды по Y пешком(рекомендуемое значение 10000)
0x69CD80 f - Дальность прорисовки воды по X(рекомендуемое значение 10000)
0x69CD7C f - Дальность прорисовки воды по Y(рекомендуемое значение 10000)
0x6958D8 f - отражение воды от солнца(рекомендуемое значение 6.25)



Название: Re: Отражения воды
Отправлено: Shagg_E от Декабрь 17, 2017, 06:04:04 pm
Крутяк :D
Название: Re: Отражения воды
Отправлено: spartaque12 от Декабрь 25, 2017, 11:09:55 pm
а выключить кубы воды как в гта са , возможно в вс?
Название: Re: Отражения воды
Отправлено: Lacrix84 от Декабрь 27, 2017, 12:49:37 am
0x69CD68 f - Дальность прорисовки прозрачной, анимированной воды по X в машине(рекомендуемое значение 10000)
0x69CD6C f - Дальность прорисовки прозрачной, анимированной воды по Y в машине(рекомендуемое значение 10000)
0x69CD70 f - Дальность прорисовки прозрачной, анимированной воды оп X пешком(рекомендуемое значение 10000)
0x69CD74 f - Дальность прорисовки прозрачной, анимированной воды по Y пешком(рекомендуемое значение 10000)
0x69CD80 f - Дальность прорисовки воды по X(рекомендуемое значение 10000)
0x69CD7C f - Дальность прорисовки воды по Y(рекомендуемое значение 10000)
0x6958D8 f - отражение воды от солнца(рекомендуемое значение 6.25)

А какой-нибудь скрипт или плагин, улучшающий прорисовку сделаешь?
Название: Re: Отражения воды
Отправлено: spartaque12 от Декабрь 27, 2017, 01:51:57 am

А какой-нибудь скрипт или плагин, улучшающий прорисовку сделаешь?

уже есть, если ты про воду
http://gtabuilder.ru/gta_vc/mods/asi_plugins/76-water-mod-by-xanser.html (http://gtabuilder.ru/gta_vc/mods/asi_plugins/76-water-mod-by-xanser.html)
если ты про общую прорисовку есть такой мод от Shagg_E
http://newrockstar.do.am/Other_Files/LOD.rar (http://newrockstar.do.am/Other_Files/LOD.rar)
Название: Re: Отражения воды
Отправлено: xanser от Декабрь 27, 2017, 05:45:25 am
Первые 4 параметры как-то не улучшают воду, ухудшается плавность перехода прозрачной воду в непрозрачную, мне кажется дефолтный вариант самый оптимальный. Остальные параметры по указанной ссылке использовались.