mass effect 1 баг с текстурами на вершине 15
Mass effect 1 баг с текстурами на вершине 15
Важно: Необходимо внести изменения в bioengine.ini, чтобы исправить карты нормалей без использования TexMod. Файл расположен по адресу: Ваш диск:\Users\Имя пользователя\Документы\BioWare\Mass Effect\Config
Отыщите следующие 3 строки:
Это позволит игре отображать более детальные карты нормалей без использования TexMod, благодаря чему в свою очередь автор смог избежать модификации целой кучи карт нормалей.
Исправление динамических теней
Внесите следующие изменения в Bioengine.ini
Отыщите следующие 4 строки:
ShadowFilterRadius=2.000000
DepthBias=0.030000 или(0.012 если вы вернулись к превдарительным значениям патча 1.2)
MinShadowResolution=32
MaxShadowResolution=512
ShadowFilterRadius=5.000000
DepthBias=0.006000
MinShadowResolution=32
MaxShadowResolution=4096
ShadowFilterQualityBias = 4
Эти изменения совместно с текстурным модом очень сильно улучшат динамические тени в игре.
Известные проблемы Mass Effect
1. Проблемы с аппаратным звуком. Может привести к вылетам и прочим ошибкам. Этой проблеме в интернете посвящено множество страниц начиная с 2008 года. Воспользуйтесь гуглом. Обычно данная проблема решается внесением простого изменения в bioengine.ini, которое зависит от вашего звукового оборудования.
2. Процессоры AMD (bulldozer и последующие чипсеты). Проблема возникает из-за того, что Mass Effect обнаруживает AMD и ищет инструкции к 3D now, существовавшие во время его выхода. Но AMD избавился от данных инструкций в последующих процессорах, что привело к ошибкам и проблемам во взаимодействии Mass Effect и CPU. Из-за этого вы можете увидеть персонажей с черными текстурами, а также игра может быть нестабильной и вылетать.
Сначала убедитесь, что это не одна из проблем Mass Effect, затем проверьте bioengine.ini, чтобы там не было опечаток, поскольку они вполне могут привести к ошибкам, пропаданию текстур лодов и уровней и многим другим проблемам. На всякий случай можете удалить свой Bioengine.ini и запустить игру, чтобы она создала новый, избавленный от ошибок наверняка.
Если ошибки все так же происходят, тогда удостоверьтесь, что вы применили LAA на Mass Effect. exe.
Запустите командную строку, обязательно от имени администратора, и введите:
«bcdedit /set IncreaseUserVa 3072» (без кавычек)
Теперь LAA будет правильно работать с 32 разрядной системой.
Дефектные тени на лицах:
Установите shadowdepthbias на 0.03, чтобы отключить тени на лицах. Многим игрокам так нравится больше, в то время как автор предпочитает 0.006.
После установки мода проверьте папку «CookedPC», она должна весить 20 ГБ. Если весит меньше, то у вас недостает текстур, такое обычное происходит из-за пуска установки не от имени администратора или если Mass Effect был уже модифицирован на момент установки. Если у вас никак не выходит выполнить полную установку, тогда измените пусть установки на новую папку, установите, скопируйте обе папки (должно быть 13.25 ГБ) в папку Mass Effect.
Проблема с отображением текстур на Новерии и Иле
Моё железо:
AMD A10-5800K 3.8GHz, 8Gb RAM, Radeon HD7970 with 3072Mb
Windows 7×64, драйвера последние, DirectX и прочий дистрибутив обновлён.
Версия игры: 1.02 Золотое Издание
Как я боролся с проблемой:
1. Менял репаки и ставил лицензию
2. Ставил патчи.
3. Обновлял драйвера. Пробовал откатывать на более ранние версии.
4. Менял настройки игры.
Подскажите пожалуйсто как решить проблему.
у меня у друга вчера тоже самое произошло,вот выход ищем.
А на Теруме и ряде других планет у Вас нет черных областей на ландшафте?
Если да (скорее всего, так и есть), то скачайте и замените в папке Mass Effect\BioGame\CookedPC файл RefShaderCache-PC-D3D-SM3. Файл должен быть от 20.07.2009.
Cvoxalury
Нет, только на Вершине 15 и на Иле. В остальных локациях все отображалось хорошо.
Файлик Ваш что-то на распаковывается, выдаёт что битый.
У меня обратно скачанный распаковался (правда, долго как-то). Обновить архиватор?
Хотя уже не факт, что поможет. При кривом рефшейдере первое, что в глаза бросается — черная лава и куски ландшафта на том же Теруме.
upd
Почитал форумы. Лучшее, что предлагают — вводить в консоли (включается правкой Мои документы\Bioware\Mass Effect\Config\BioInput.ini, добавлением в секцию Engine.Console строки ConsoleKey=Tilde, включает запуск консоли при нажатии на
) команды viewmode unlit (отключает освещение/тени, все засвечено) и viewmode lit (как обычно), в целом включении первой команды, пробегании проблемного участка, введении второй команды. Костыль, но у кого-то вроде работает.
Оо! Знакомая проблема, только вчера там начал проходить и такой же баг вышел, думал у меня одного такое. У тебя часом не Золотое издание стоит?
Что удивительно у меня с золотым изданием был только один вылет в лифте, после установки патча, проблем больше не было.
Исправляем графический баг Mass Effect, возникающий на современных процессорах AMD
Введение
Mass Effect — популярная франшиза научно-популярных RPG. Первая часть сначала была выпущена BioWare в конце 2007 года эксклюзивно для Xbox 360 в рамках соглашения с Microsoft. Спустя несколько месяцев, в середине 2008 года, игра получила порт на PC, разработанный Demiurge Studios. Порт был достойным и не имел заметных недостатков, пока в 2011 году AMD не выпустила свои новые процессоры на архитектуре Bulldozer. При запуске игры на PC с современными процессорами AMD в двух локациях игры (Новерия и Илос) возникают серьёзные графические артефакты:
Да, выглядит некрасиво.
Хоть это и не делает игру неиграбельной, такие артефакты раздражают. К счастью, решение существует, например, можно отключить освещение консольными командами или модифицировать карты игры, удалив поломанные источники освещения, но, похоже, никто никогда так и не понял полностью причины этой проблемы. В некоторых источниках утверждается, что эту проблему позволяет устранить и мод FPS Counter, но мне не удалось найти информацию о нём: исходный код мода, похоже, не выложен онлайн, а документация о том, как мод исправляет ошибку, отсутствует.
Почему эта проблема так интересна? Баги, возникающие только на оборудовании отдельных производителей, встречаются довольно часто, и в играх они встречаются уже много десятилетий. Однако, по моей информации, это единственный случай, когда проблема с графикой вызвана процессором, а не графической картой. В большинстве случаев проблемы возникают у продуктов определённого производителя GPU и никак не касаются CPU, однако в данном случае всё совсем наоборот. Поэтому эта ошибка уникальна, а значит, её стоит исследовать.
Почитав онлайн-обсуждения, я пришёл к выводу, что проблема, похоже, касается чипов AMD FX и Ryzen. В отличие от более старых процессоров AMD, в этих чипах нет набора команд 3DNow!. Возможно, ошибка никак с этим не связана, но в целом у сообщества геймеров сложился консенсус о том, что это причина бага и что обнаружив процессор AMD, игра пытается использовать эти команды. Учитывая то, что случаи возникновения этого бага на процессорах Intel неизвестны, и что команды 3DNow! использовала только AMD, неудивительно, что сообщество посчитала причиной этот набор команд.
Но в них ли проблема, или ошибку вызывает нечто совершенно другое? Давайте выясним!
Часть 1 – Исследования
Прелюдия
Хотя воссоздать эту проблему чрезвычайно просто, мне долгое время не удавалось оценить её по простой причине — у меня не было под рукой PC с процессором AMD! К счастью, на этот раз я занимаюсь исследованиями не в одиночку – Рафаэль Ривера поддержал меня в процессе изучения, предоставив тестовую среду с чипом AMD, а также поделился своими предположениями и мыслями, пока я делал слепые догадки, как это обычно бывает, когда я ищу источники таких неизвестных проблем.
Так как теперь у нас была тестовая среда, первой, разумеется, мы протестировали теорию cpuid – если люди правы, предполагая, что следует винить команды 3DNow!, то в коде игры должно быть место, проверяющее их наличие, или хотя бы определяющее изготовителя CPU. Однако в таких рассуждений есть ошибка; если бы игра действительно пыталась использовать команды 3DNow! на любом чипе AMD без проверки возможности их поддержки, то она, скорее всего, «вылетела» бы при попытке выполнения недопустимой команды. Более того, краткое исследование кода игры показывает, что она не проверяет возможности CPU. Следовательно, что бы ни было причиной ошибки, не похоже, что она вызвана неправильным определением функцональности процессора, потому что игре она вообще не интересна.
Когда случай начал казаться не подлежащим отладке, Рафаэль сообщил мне о своём открытии – отключение PSGP (Processor Specific Graphics Pipeline) устраняет проблему и все персонажи освещаются правильно! PSGP — не самое подробно задокументированное понятие; если вкратце, то это legacy-функция (касающаяся только старых версий DirectX), позволяющая Direct3D выполнять оптимизации под конкретные процессоры:
В предыдущих версиях DirectX существовал путь выполнения кода под названием PSGP, позволявший производить обработку вершин. Приложения должны были учитывать наличие этого пути и поддерживать путь для обработки вершин ядрами процессора и графической карты.
При таком подходе логично, что отключение PSGP устраняет артефакты на AMD — путь, выбиравшийся современными процессорами AMD был каким-то образом испорчен. Как его отключить? На ум приходят два способа:
Ограничивает вычисления только основным потоком приложения. Если флаг не установлен, то среда выполнения может выполнять программную обработку вершин и другие вычисления в рабочем потоке (worker thread), чтобы повысить производительность в многопроцессорных системах.
Как обычно, при возникновении проблем с графикой их, скорее всего, поможет диагностировать PIX. Мы выполнили захват схожих сцен на оборудовании Intel и AMD, а затем сравнили результаты. Сразу же бросилось в глаза одно различие — в отличие от моих предыдущих проектов, где захваты не записывали в себя баг и один и тот же захват мог выглядеть на разных PC по-разному (что указывает на баг драйвера или d3d9.dll), эти захваты записывали в себя баг! Другими словами, если открыть сделанный на «железе» AMD захват на PC с процессором Intel, то баг будет отображаться.
Захват с AMD на Intel выглядит точно так же, как выглядел на оборудовании, где был сделан:
О чём это нам говорит?
На этом этапе для нахождения бага необходимо обнаружить все расхождения между захватами. Это скучная работа, но иного пути нет.
После долгого изучения захваченных данных моё внимание привлёк вызов отрисовки целого тела персонажа:
В захвате Intel этот вызов выводит бОльшую часть тела персонажа вместе с освещением и текстурами. В захвате AMD он выводит сплошную чёрную модель. Похоже, мы взяли нужный след.
Первым очевидным кандидатом на проверку будут соответствующие текстуры, но с ними, похоже, всё в порядке и в обоих захватах они одинаковы. Однако странно выглядят некоторые константы пиксельных шейдеров. В них не только содержатся NaN (Not a Number), но они также есть только в захвате AMD:
1.#QO обозначает NaN
Выглядит многообещающе — часто бывает, что значения NaN вызывают странные графические артефакты. Довольно забавно, что в версии Mass Effect 2 для PlayStation 3 была очень похожая проблема в эмуляторе RPCS3, тоже связанная с NaN!
Однако не стоит пока слишком радоваться — это могут быть значения, оставшиеся от предыдущих вызовов и не используемые в текущем. К счастью, в нашем случае чётко видно, что эти NaN передаются в D3D для этой конкретной отрисовки…
…и используемый в этой отрисовке пиксельный шейдер ссылается на обе константы:
Похоже, обе константы берутся напрямую из Unreal Engine и, судя по их названию, они могут влиять на освещение. Бинго!
Тест в игре подтверждает нашу теорию — на машине с Intel вектор из четырёх значений NaN никогда не передаётся как константы пиксельного шейдера; однако на машине с AMD значения NaN начинают появляться сразу, как игрок входит в место, где ломается освещение!
Значит ли это, что работа сделана? Далеко нет, потому что обнаружение сломанных констант — только половина успеха. По-прежнему остаётся вопрос — откуда они берутся и можно ли их заменить? Во внутриигровом тесте замена значений NaN частично устранила проблему — уродливые чёрные пятна пропали, но персонажи всё равно выглядят слишком тёмными:
Почти правильно… но не совсем.
Учитывая то, насколько важными эти значения освещения могут быть для сцены, мы не можем остановиться на таком решении. Однако мы знаем, что на верном пути!
Увы, любые попытки отследить источники этих констант указывали на нечто, напоминающее поток рендера, а не истинное место передачи. Хоть отладка этого и возможна, очевидно, что нам нужно попробовать новый подход, прежде чем тратить потенциально бесконечное количество времени на отслеживание потоков данных между внутриигровыми и/или относящимися к UE3 структурами.
Часть 2 – Приглядимся внимательнее к D3DX
Mass Effect импортирует набор функций D3DX, компонуя d3dx9_31.dll :
Если бы я увидел этот список, не зная информации, полученной нами из захватов, то предположил бы, что вероятными виновниками могут быть D3DXPreprocessShader или D3DXCompileShader — шейдеры могли быть неверно оптимизированы и/или скомпилированы на AMD, но их починка может быть безумно сложной задачей.
Однако у нас уже есть знания, поэтому для нас из списка выделяется одна функция — D3DXMatrixInverse является единственной функцией, которую можно использовать для подготовки констант пиксельного шейдера.
Эта функция вызывается только из одного места в игре:
Опровергнув эту теорию, мы вернулись к PSGP — что же конкретно PSGP делает в D3DX? Рафаэль Ривера изучил этот вопрос, и логика этого конвейера оказалась довольно простой:
Как нам проверить эту гипотезу? Тестами, естественно!
Часть 3 – Независимые тесты
Мы подготовили простую независимую программу для проверки точности инвертирования матриц. На протяжении короткой игровой сессии в месте возникновения бага мы записали все входящие и выходящие данные D3DXMatrixInverse в файл. Этот файл считывается независимой тестовой программой, а результаты пересчитываются заново. Для проверки правильности выходные данные игры сравниваются с данными, вычисленными тестовой программой.
После нескольких попыток на основании данных, собранных с чипов Intel и AMD со включенным/отключенным PSGP мы сравнили результаты разных машин. Результаты показаны ниже с указанием успешных (, результаты равны) и ошибочных (, результаты не равны) прогонов. В последнем столбце указано, обрабатывает ли игра данные правильно, или «глючит». Мы намеренно не учитываем неточность вычислений с плавающей запятой и сравниваем результаты при помощи memcmp :
Источник данных | Intel SSE2 | AMD SSE2 | Intel x86 | AMD x86 | Приняты ли данные игрой? |
---|---|---|---|---|---|
Intel SSE2 | ️ | ️ | |||
AMD SSE2 | ️ | ||||
Intel x86 | ️ | ️ | ️ | ||
AMD x86 | ️ | ️ | ️ |
Результаты тестов D3DXMatrixInverse
Любопытно, результаты демонстрируют, что:
Я быстренько написал код, отправил его Рафаэлю, и…
Он отлично заработал! (?)
В конечном итоге, то, что мы считали проблемой, возникающей из-за небольших отличий команд SSE2, может быть исключительно численной проблемой. Несмотря на то, что XMMatrixInverse тоже использует SSE2, она дала идеальные результаты и на Intel, и на AMD. Поэтому мы заново прогнали те же тесты и результаты оказались неожиданными, если не сказать больше:
Источник данных | Intel | AMD | Приняты ли данные игрой? |
---|---|---|---|
Intel | ️ | ️ | ️ |
AMD | ️ | ️ | ️ |
Результаты тестов с XMMatrixInverse
Игра не только хорошо работает, но и результаты идеально совпадают и переносятся между машинами!
Учтя это, мы пересмотрели свою теорию о причинах бага — без всяких сомнений, в нём виновата игра, слишком чувствительная к проблемам; однако после проведения дополнительных тестов нам показалось, что D3DX писался под быстрые вычисления, а DirectXMath больше волнует точность вычислений. Это выглядит логично, ведь D3DX — продукт 2000-х и вполне разумно, что его основным приоритетом была скорость. DirectXMath был разработан позже, поэтому авторы могли уделить больше внимания точным, детерминированным вычислениям.
Часть 4 – Соединяем всё вместе
Статья оказалась довольно длинной, надеюсь, вы не устали. Подведём итог тому, что мы сделали:
Заменная DLL обеспечивает очень чистую и надёжную установку, она отлично работает с версиями игры с Origin и Steam. Её можно использовать сразу, без необходимости ASI Loader или любого другого стороннего ПО.
Насколько мы понимаем, теперь игра выглядит так, как должна, без малейшего ухудшения освещения:
Загрузки
Модификацию можно скачать в Mods & Patches. Нажмите сюда, чтобы сразу перейти к странице игры:
После скачивания достаточно извлечь архив в папку игры, и на этом всё! Если не знаете, что делать дальше, то прочитайте инструкции по настройке.
Полный исходный код мода опубликован на GitHub и его можно свободно использовать как отправную точку:
Проблема с отображением текстур на Новерии и Иле
Моё железо:
AMD A10-5800K 3.8GHz, 8Gb RAM, Radeon HD7970 with 3072Mb
Windows 7×64, драйвера последние, DirectX и прочий дистрибутив обновлён.
Версия игры: 1.02 Золотое Издание
Как я боролся с проблемой:
1. Менял репаки и ставил лицензию
2. Ставил патчи.
3. Обновлял драйвера. Пробовал откатывать на более ранние версии.
4. Менял настройки игры.
Подскажите пожалуйсто как решить проблему.
у меня у друга вчера тоже самое произошло,вот выход ищем.
А на Теруме и ряде других планет у Вас нет черных областей на ландшафте?
Если да (скорее всего, так и есть), то скачайте и замените в папке Mass Effect\BioGame\CookedPC файл RefShaderCache-PC-D3D-SM3. Файл должен быть от 20.07.2009.
Cvoxalury
Нет, только на Вершине 15 и на Иле. В остальных локациях все отображалось хорошо.
Файлик Ваш что-то на распаковывается, выдаёт что битый.
У меня обратно скачанный распаковался (правда, долго как-то). Обновить архиватор?
Хотя уже не факт, что поможет. При кривом рефшейдере первое, что в глаза бросается — черная лава и куски ландшафта на том же Теруме.
upd
Почитал форумы. Лучшее, что предлагают — вводить в консоли (включается правкой Мои документы\Bioware\Mass Effect\Config\BioInput.ini, добавлением в секцию Engine.Console строки ConsoleKey=Tilde, включает запуск консоли при нажатии на
) команды viewmode unlit (отключает освещение/тени, все засвечено) и viewmode lit (как обычно), в целом включении первой команды, пробегании проблемного участка, введении второй команды. Костыль, но у кого-то вроде работает.
Оо! Знакомая проблема, только вчера там начал проходить и такой же баг вышел, думал у меня одного такое. У тебя часом не Золотое издание стоит?
Что удивительно у меня с золотым изданием был только один вылет в лифте, после установки патча, проблем больше не было.