Пока вижу такие варианты: - Либо проблема в шейдерах (маловероятно). - Либо проблема в анимированных объектах - там у анимаций тоже квантизация где то есть, возможно не хватает точности. - Либо в коде, который считает позицию худа, нужно пробовать все float заменять на double.
Я у себя это заметил и на объектах без анимации и не только на худовых. Причем что интересно, чем меньше объект, тем сильнее дрожание, даже если объект находится близко к камере. Еще заметил, что направление камеры влияет, да. Чем больше угол камеры вниз или вверх, тем сильнее дрожит. И самое главное, если отключить update в camera manager, дрожание пропадает полностью, но только для неподвижных объектов. Если же объект в движении (перемещение, вращение), это уже не помогает.
Можно еще грешить на низкую точность z-buffer, но раз при удалении от центра локации (нулевые координаты) дрожание усиливается, значит по идее дело в низкой точности float в мировых координатах. С другой стороны, почему при снижении fov дрожание усиливается, даже если мы находимся близко к центру локи?
Цитата(xrModder @ 27.10.2019, 07:21)
А при каких значениях начинает дрожать объекты? Поиграл со значениями fov вплоть до 5 и hud_fov 0.1...1, но не могу заставить объекты дрожать.
Статичные объекты не дрожат, только динамика. У меня дрожание начинает быть заметно при fov < 15, но не на всех объектах. При fov 5 дрожат уже почти все, особенно мелкие, и тем более, если камеру вниз или вверх под 45 град. и более направить. Но проще всего это выявить на худе оружия при прицеливании через сквозянку с низким fov.
xrModder
27.10.2019, 19:32
Цитата(Zagolski @ 27.10.2019, 22:26)
Цитата(xrModder @ 27.10.2019, 07:21)
А при каких значениях начинает дрожать объекты? Поиграл со значениями fov вплоть до 5 и hud_fov 0.1...1, но не могу заставить объекты дрожать.
Статичные объекты не дрожат, только динамика. У меня дрожание начинает быть заметно при fov < 15, но не на всех объектах. При fov 5 дрожат уже почти все, особенно мелкие, и тем более, если камеру вниз или вверх под 45 град. и более направить. Но проще всего это выявить на худе оружия при прицеливании через сквозянку с низким fov.
Щя проверю у себя, тут явно дело в каких-то константах или типах как писал один товарищ.
RayTwitty
27.10.2019, 19:39
Нашел у себя видео, тестировал другое, но на нем видно именно это дрожание. https://youtu.be/1raLa9ttGso Впрочем, я тогда подумал что это просто у ГГ руки трясутся или воздух дрожит
Zagolski
27.10.2019, 20:11
Цитата(RayTwitty @ 27.10.2019, 19:39)
но на нем видно именно это дрожание.
О да, оно самое. На худе дрожание сильнее заметно, потому что сам худ рендерится при 0.45*fov, т.е. реально там выходит более чем вдвое ниже fov камеры.
Shoкer
27.10.2019, 20:50
Цитата(Zagolski @ 27.10.2019, 19:26)
С другой стороны, почему при снижении fov дрожание усиливается, даже если мы находимся близко к центру локи?
Мне кажется что при высоком fov модель просто слишком мелкая, чтобы заметить дрожание. Для чистоты эксперимента камеру игрока лучше исключить, вместо этого поправь в движке дефайн VIEWPORT_NEAR (чтобы объекты вблизи не обрезались) и без всякого зума просто подлетай к ним через demo_record. Мне показалось что дин. объект на земле в таком случае не дрожал (подлетал вплотную к мушке ствола). А вот тряску худа я всё равно видел.
Diesel
27.10.2019, 20:58
Shoкer, в ЧН худ не трясётся. Он медленно шатается вместе с камерой.
Zagolski
27.10.2019, 22:01
Цитата(Shoкer @ 27.10.2019, 20:50)
и без всякого зума просто подлетай к ним через demo_record. Мне показалось что дин. объект на земле в таком случае не дрожал (подлетал вплотную к мушке ствола)
Как раз если задействовать демо-рекорд, тряска неподвижных объектов прекращается. Я так выявил зависимость от апдейта камеры. Из глаз смотришь - трясет, переключаешься на демо-рекорд - перестает. А если объект перемещается, то и при демо-рекорд или с отключенным cam update начинает трясти. Загадка.
mortan
27.10.2019, 23:12
Zagolski, вообще, у меня и в деморекорде тряска. Только через раз - сейчас хотел записать а тряски и нету почти О_о
Diesel
28.10.2019, 18:45
Цитата(Дизель @ 27.10.2019, 15:55)
Нужно подумать как вывести кнопку vid_restart для сетевой игры?
Консоль: vid_restart 1 Как только заставить юзера мода этим воспользоваться? Проще однако выйти в Виндос и зайти заново. Что печально. что это происходить будет толко при самом первом запуске сети.
А может в реестре брандмауер хлопнуть, при установке мода?
xrModder
28.10.2019, 19:54
У кого есть исправления каскада теней для ТЧ?
Trollz0r
29.10.2019, 00:57
Вчера запускал дюка нюкема (которого делали 15 лет), увеличивал фов - вылезло предупреждение, что-де возможны артефакты при фов, отличном от стандартного. И действительно - при зуме с открытого прицела была тряска. Видимо, обе игры используют одну методику.
Что-то подобное бывает и в майе, когда вручную настраивается фрустум: сделаешь ближний план, скажем, 0.01м и дальний 10000м - начнет моргать геометрия, как на видосе с демонстрацией потери точности выше.
mortan
29.10.2019, 01:06
Вот кст пример подёргивания ( правда тут дёргается не сам ствол а аттач к нему ) :
Видео
А вот пример уже странного дёрганья всего худа при поворотах О_о. Есть идеи что это может быть?
Видео
Diesel
29.10.2019, 01:22
На первом видео, там всё трясётся и руки. На втором видео, там фпс валится? Буфер?
mortan
29.10.2019, 01:38
Дизель, с фпс всё нормально вроде, так что черт его знает что это за приколы) Двигло кст OXR, на почти ванили не пробовал.
Diesel
29.10.2019, 01:49
mortan, на ЧН оказывается есть подёргивание, но оно не так сильно в глаза бросается. Просто в ЧН всё ходуном ходит из-за имитации шатания ГГ. А еще прикол, у ГГ на худе рука дёргается.
Да и вообще, если бы не сказали, то и не заметил никогда.
Оружие в руках худа зафиксировано хреново - вот и дребезжит.
Возмите в руки нож и посмотрите - он вообще не вибрирует, да и вообще он не отслаивается от ГГ при прыжках в виде от 2-3.
mortan
29.10.2019, 02:14
Дизель, 2 и 3 лицо совсем другое - там рендерится мировая модель по своим координатам, так что это не совсем то.
ed_rez
29.10.2019, 02:27
mortan, не думаю, что тому, кто делал текстуры, мозгов хватило включить параллакс с картой высот. Хотя, у ПЫС такое наблюдалось. Не смотря на бампы, а нужно было бы глянуть, чтобы на 100% убедится в своем ответе. Забегу вперед. Не правильно сделаны бампы, даже учитывая тот факт, что вся правильность у кого-то ограничивается только СДК. Там много ньюансов, кстати, движковых, почему плавает текстура. Ради забавы, проверь на статическом освещении.
mortan
29.10.2019, 02:56
ed_rez, хм, причём тут текстуры - не пойму вообще. Работы с бампами как таковой нету, моделька собрана чисто для тестирования пока что) Ради забавы проверил - ничего не поменялось, так что опять таки повторюсь - текстуры не причем)
ed_rez
29.10.2019, 03:22
mortan, странно, я был на 100% уверен. Эта проблема мне знакома. Но на нет и суда нет.
NanoBot-AMK
29.10.2019, 04:32
Есть вопросик. Кто, кроме меня, сделал правку позволяющая любому классу от CWeaponMagazined стрелять очередями. Правка совсем простая. Конечно скажите вы, а на фига, но вот автопистолеты типа АПС, обычно делают на классе LR300, но при этом не работает затворная задержка. А в ЧН и ЗП во обще инвалиды ПЫСы сделали отдельный класс для автошотганов. Хотя логичней сделать всех наследников класса CWeaponMagazined с возможностью авто огня, включая гранатомёты, РПГ-7, РГ-6. Потом скину мод где демонстрируется все возможности правленого движка(рев232.19). ЗЫ Я ради прикола даже сделал "Бешеный ПМ", ПМ с подпиленным шепталом, отличается бешеной скорострельностью, поэтому и называется так. Даже историю появления в ЗОНЕ придумал.
Shoкer
29.10.2019, 11:20
> А вот пример уже странного дёрганья всего худа при поворотах О_о. Есть идеи что это может быть? Скорее всего это GSC-овский оригинальный код инерции. Он плохо переносит любые скачки FPS, в том числе и в оригинале, но в OpenXRay по ощущениям проблема ещё заметнее была, у себя я его отключил и новый писал - GSC-овский основан на разнице между векторами камеры с текущего и прошлого кадра и плохо поддаётся контролю из-за этого. Попробуй включить запись видео и просто начать крутиться на месте равномерно (зажать стрелку вправо \ влево) - там тряску будет хорошо видно.
В дискорд-чате OpenXRay где то есть обсуждение годичной давности.
Если дело в нём, то можно FPS принудительно ограничить до 60, тогда тряски не будет до тех пор, пока компьютер пользователя способен игру тянуть со стабильным FPS, но это ненадёжный костыль.
cjayho
29.10.2019, 14:22
QUOTE (Shoкer @ 29.10.2019, 10:20)
Если дело в нём, то можно FPS принудительно ограничить до 60, тогда тряски не будет до тех пор, пока компьютер пользователя способен игру тянуть со стабильным FPS, но это ненадёжный костыль.
Ха, на р2 и выше мой ноут дай бог 20 фпс выдает
mortan
29.10.2019, 14:22
Shoкer, ограничение в 60 фпс итак стоит, правки по инерции в OXR вроде бы из твоего движка как раз, только старой версии. Но я посмотрю код еще раз чтобы сказать точнее. Но мне кажется, что до работы с аттачами такой проблемы не было) NanoBot-AMK, я как-раз делал недавно, выпилил почти все различия между классом пистолетов и классом CWeaponMagazined)
macron
29.10.2019, 17:37
Может не в тему, но у меня на радеоне в ТЧ были какие-то статтеры при включенном всинке. Отключил в игре всинк, а в драйвере включил ограничение в 120 fps, тогда стало нормально.
Xottab_DUTY
29.10.2019, 19:10
Синхронный движок, в котором рендер зависит от логики (пока не обновилась логика, кадра не будет) и логика от рендера (пока кадра нет, обновлений не будет), плохо совместим с вертикальной синхронизацией. Она добавляет задержки в рендер, а, значит, и в логику, так как там всё повязано.
Цитата(macron @ 29.10.2019, 19:37)
включенном всинке.
Но мне это немного удивительно))) Потому что в ЧН и ЗП она просто выключена в движке и опция в настройках ничего не делает и я думал, что в ТЧ также)
Xottab_DUTY
29.10.2019, 19:57
Странно... Сейчас посмотрел исходники ТЧ, так там тоже функция selectPresentInterval не используется.. Тогда и в ТЧ тоже эта опция не должна ничего делать и статтеров не должно быть..
macron
29.10.2019, 20:09
Разумеется, я имел в виду фиксенный ТЧ со включенными правками всинка.
Zagolski
29.10.2019, 20:46
Цитата(Trollz0r @ 29.10.2019, 00:57)
Что-то подобное бывает и в майе, когда вручную настраивается фрустум: сделаешь ближний план, скажем, 0.01м и дальний 10000м - начнет моргать геометрия, как на видосе с демонстрацией потери точности выше.
Я делал near - far как 0.2 - 2.0, все равно дрожит, так что не из-за точности zb.
Цитата(Xottab_DUTY @ 29.10.2019, 19:10)
Синхронный движок
Если через дрова всинк активировать, тогда никаких проблем у меня не всплывало. А через игру если галку 60 Гц включить - глючит, да. И сбрасывается при переключении оконный-полноэкранный, то вообще гамму сбрасывает в белую и все рывками идет. Кстати, в меню тоже работает. 120 Гц как вкопанный, никаких Eco Render не надо. И нет рывков курсора.
xrModder
29.10.2019, 21:26
Кто-нибудь поделитесь luabind для ТЧ без boost
JustChiller
31.10.2019, 19:57
Всем Привет!
Кто-то подробно изучал xrSound?
1) Может кто подсказать что из себя представляет сущность CSoundRender_Target? Как я понимаю там и воспроизводится звук. 2) CSoundRender_Target заполняются в вектор размером 32. Правильно ли я понимаю, что одновременно в игре может воспроизводиться 32 звука?
macron
31.10.2019, 21:24
Цитата(JustChiller @ 31.10.2019, 19:57)
2) CSoundRender_Target заполняются в вектор размером 32. Правильно ли я понимаю, что одновременно в игре может воспроизводиться 32 звука?
А, теперь понятно, почему у команды snd_targets ограничение на 32.
Shoкer
31.10.2019, 23:47
> Правильно ли я понимаю, что одновременно в игре может воспроизводиться 32 звука? Верно - если звуков больше 32 то часть из них перестаёт играть, но это легко правится в движке увеличением лимита консольной команды до желаемого числа.
> Может кто подсказать что из себя представляет сущность CSoundRender_Target? Как я понимаю там и воспроизводится звук. Звук в сталкере на уровне драйверов и прочего воспроизводит OpenAl, в сталкере весь код звука по сути обёртка над ним - собирает в звуковой объект информацию о его громкости, частоте и позиции и просто передаёт в OpenAl. Плюс (по крайнем мере в ЗП) там самописный код для отслеживания таймингов звука (когда начать играть, когда прекратить), код для реакции НПС на звуки (по сути просто передаёт сигнал всем НПС, которые в радиус звука попадают), и какой то код для расчёта громкости звука в разных помещениях \ звуковых зонах - не уверен насколько он хорошо работает, я так понял это в СДК расставлять зоны надо.
У меня OpenXray, но в оригинале по идее всё также. В файле CSoundRender_TargetA.cpp находится непосредственно код, который передаёт звук в OpenAl.
Карлан
02.11.2019, 21:05
Цитата(Zagolski @ 29.10.2019, 21:42)
Если через дрова всинк активировать, тогда никаких проблем у меня не всплывало. А через игру если галку 60 Гц включить - глючит, да. И сбрасывается при переключении оконный-полноэкранный, то вообще гамму сбрасывает в белую и все рывками идет. Кстати, в меню тоже работает. 120 Гц как вкопанный, никаких Eco Render не надо. И нет рывков курсора.
Разумеется сбрасывается, при развороте ее надо обновлять, ты разве не в курсе? Ты же рендером уже несколько лет занимаешься и куда опытнее меня, галка 60гц это не всинк, это рефреш рейт и в оконном режиме это не работает, а вот всинк работает.
С всинком я уже разбирался, о чем ранее тут и писал. Это не рефреш рейт - не надо путать, и делается это совершенно по другому. Сразу скажу, что - да, можно делать через презент, но это фигня. Можете меня проверить, я проводил измерения два раза, и на первых кадрах у меня идет дикая погрешность вплоть до ~50%, остальные стабильно дает погрешность в ~5%, т.е. это не всинк а фигня. Нормально синхра кпу-гпу делается через объект ожидания (опять же можете проверить).
Везде где (пере)создаете цепочку добавьте ей флаг DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT с проверкой rsVSync.
После создания цепочки переключений получим наш объект (опять же с проверкой rsVSync, в конструкторе/хидере (зависит от версии языка) лучше ему явно задать nullptr):
void CHW::WaitSC() { if (!psDeviceFlags.test(rsVSync)) return; WaitForSingleObjectEx(m_waitableObject, 1000, true); }
И вызываем нашу функцию HW.WaitSC() перед рендерингом (в ТЧ после флага b_is_Ready, как в ЧН/ЗП не знаю, найдите аналогичный участок). Готово, можно конечно еще увеличить количество кадров в очереди, но я бы не рекомендовал, хотя можете экспериментировать, никто не запрещает .
DoberBull
02.11.2019, 21:19
Небольшой вопрос, касательно билдосорцев. Кто-нибудь пробовал декомпилить движок билда, в котором есть .pdb файлы (2215) ?
Zagolski
03.11.2019, 16:53
Цитата(Карлан @ 02.11.2019, 21:01)
галка 60гц это не всинк, это рефреш рейт
Ты не так понял. Я в курсе про 60гц, это ограничение на 60 фпс. Т.е. если моник 100гц и галку включить (при включенном всинк), частота ограничится 60 фпс, а не 100. Так вот эта галка 60гц глючит - убивает гамму и при сворачивании сбрасывает всинк. А всинк в опциях игры у меня работает корректно в оконном и полноэкранном, и при сворачивании не сбрасывается. Эту 60 Гц вообще надо из игры удалить, она вводит пользователя в заблуждение, глючит и от нее нет никакого толку.
Xottab_DUTY
03.11.2019, 17:30
Карлан, а у тебя Flip presentation модель используется? Не BitBlt?) Иными словами, какой DXGI_SWAP_EFFECT у тебя используется?
Xottab_DUTY
03.11.2019, 18:39
Я спросил про Flip именно потому, что DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT не работает на BitBlt модели. Чтобы работало, swap effect должен быть FLIP_SEQUENTIAL или FLIP_DISCARD
DiaWorld
10.11.2019, 17:14
Если собрать двигло на 2019 версии студии, проблем не будет ? Ибо помнится мне, что я собирал на 2017 версии, и там если не ошибаюсь что то с рендером не ладно было, будет ли такое на 2019 версии, кто нибудь знает ?
XinnogeN
10.11.2019, 18:54
Добрый вечер! Подскажите пожалуйста, на какой версии visual studio разрабатывался Сталкер ТЧ,ЧН и ЗП? Заранее благодарен!
ForserX
10.11.2019, 19:37
XinnogeN, 2005. Но нужно ли оно тебе? Тут сейчас на 2015-2019 народ сидит...
Цитата(DiaWorld @ 10.11.2019, 17:10)
Если собрать двигло на 2019 версии студии, проблем не будет ? Ибо помнится мне, что я собирал на 2017 версии, и там если не ошибаюсь что то с рендером не ладно было, будет ли такое на 2019 версии, кто нибудь знает ?
Ты можешь взять уже готовый вариант. Тот же Oxygen на 2017-2019 студии собирается
XinnogeN
10.11.2019, 19:52
Цитата(ForserX @ 10.11.2019, 19:33)
XinnogeN, 2005. Но нужно ли оно тебе? Тут сейчас на 2015-2019 народ сидит...
Это я всё понимаю. Хочеться попробывать собрать dll байт в байт как в релизе, но не получается. Пробывал собрать двигло-собрал,запустил. Но дело в том,что некоторые dll имеют разный размер от оригинала, например xrCore у меня получается 848кб. а в оригенале 852кб. В чём может быть причина? Собирал ЧН-1.5.10.
atanda
10.11.2019, 21:20
"Байт в байт" не получится ни при каком раскладе. Для этого надо полностью воссоздать окружение, в котором проводилась релизная компиляция, использовать те версии библиотек, которые линковались к релизной сборке, и ещё куча всего.
Да и зачем тебе надо-то "байт в байт"?
XinnogeN
10.11.2019, 21:33
Думал, я что не так что-то делаю. Ну раз так тогда я понял. Но всё же реально это сделать?
Diesel
10.11.2019, 21:50
XinnogeN, не реально. В одну реку дважды не войти. Какой то филосафф писал.
XinnogeN
10.11.2019, 21:56
Цитата(Дизель @ 10.11.2019, 21:46)
XinnogeN, не реально. В одну реку дважды не войти. Какой то филосафф писал.
Да, и кстати, собирали разрабы на 2005 студии-только какой pro, team или extrime и каккой версии 8.0.50727.762 ??? И на Хрюше, да?
Diesel
10.11.2019, 22:02
XinnogeN, да. Там инклуды системные в Виндовс СДК еще влияют. Типа 5.0 или 6.0 - уже разные.
А еще главное, что релизного кода нет. Всё что видел - это не финал.
XinnogeN
10.11.2019, 22:11
Всё ясно, спасибо за подробности!!!
RayTwitty
11.11.2019, 01:45
Цитата(Дизель @ 10.11.2019, 21:58)
А еще главное, что релизного кода нет. Всё что видел - это не финал.
Формально нет, но фактически 1.0007(rc1) тот же 1.0006. Тот же OGSR на нем основан, а на нем в свою очередь моды обычного ТЧ (OGSE, вроде недавно еще ТТ2 перенесли). Вроде играется нормально.
Впрочем мелкие изменения есть в 7 патче в лучшую сторону - меньше отладочного говна в консоли, а также исправлено пожирательство содержимого трупов
ЗЫ я даже на волне хайпа после слива исходников, первую свою правку сделал - разрядка оружия прямо в рюкзаке трупа, т.е. можно патроны получать не беря в инвентарь себе весь хлам PS2 а что, https://xp-dev.com/summary/210311 всё?
xrModder
11.11.2019, 06:27
Цитата(XinnogeN @ 10.11.2019, 21:50)
Добрый вечер! Подскажите пожалуйста, на какой версии visual studio разрабатывался Сталкер ТЧ,ЧН и ЗП? Заранее благодарен!
Оригинальный ТЧ на Visual Studio 2005, но движок с легкостью переносится на Visual Studio 2010. Здесь ссылка можешь посмотреть все правки переноса движка ТЧ из 2005 студии в 2010.
atanda
11.11.2019, 07:49
Имхо, если и переносить, то как минимум на 2013 студию. Ибо перенос на 2013 осуществляется +- как и на 2010.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.