Deathman 664 Опубликовано 7 февраля, 2023 (изменено) Nocturning studio Project X - мой первый проект, в котором я работаю комплексно со всеми аспектами игры и которым я занимаюсь как хобби в свое личное время. В данном проекте я реализовываю свое личное видение на S.T.A.L.K.E.R: Shadow of Chernobyl в аспектах визуального и саунд дизайна, геймплея, функционала движка и других. Этот проект я использую как одновременно челледж - смогу ли я привести в одиночку или почти в одиночку в хорошее состояние игру, на мой взгляд с очень спорной графикой, недоработанными механиками, и множеством других проблем, а главное смогу ли я качественно и корректно это оформить, как повод для самообразования в сфере программирования и геймдева, а также как поле для эксперементов. Автор - Deathman. Огромная благодарность за помощь и\или поддержку VAX, Maks0, LVutner, Mihan323, Никите Тимонину, Ивану Панкову и другим. Спойлер Я провел огромную работу над визуальной составляющей игры - ввел множество разных эффектов, которые дополняют визуальный стиль, деталлизацию, эффектность, а также художественных эффектов, используемых мной для полной переработки атмосферы каждого уровня и сюжета в целом. Спойлер Спойлер Одним из первых нововведений было добавление отдельного режима второго рендера, активирующего дополнительные эффекты, и предназначенного для разграничения функционала второго рендера для разных типов оборудования. Спойлер Я старался через расширенные настройки дать пользователю полностью кастомизировать игру под себя, дав возможность включить или выключить, а также отрегулировать под себя наверное почти каждый эффект. Каждый эффект или настройка названы максимально понятно, корректно, а также я старался оформить настройки интуитивно понятно. Спойлер Графику игры полностью можно настроить не заходя в раздел расширенных настроек - для этого были полностью настроены все пресеты настроек графики, а также были добавлены дополнительные пресеты, что в сумме дает семь разных настроек для разного оборудования, на котором будет запускаться игра. Также были добавлены пресеты художественных эффектов. Спойлер В игру введены и будут вводиться в дальнейшем новые методики сглаживания или же Anti-Aliasing(https://ru.wikipedia.org/wiki/Экранное_сглаживание): DLAA - Directionally Localized antiAliasing (https://github.com/ForserX/DLAA) DLAA с принудительным определением границ объектов - шейдер Directionally Localized antiAliasing, с принудительным определением мест кадра, потенциально являющихся "Лесенками", что в разы повышает четкость картинки с этим алгоритмом. FXAA - Fast approximate antiAliasing за авторством Nvidia. (https://docs.nvidia.com/gameworks/content/gameworkslibrary/graphicssamples/d3d_samples/fxaa311sample.htm) Двупроходный вариант FXAA - вариант Fast approximate antiAliasing, расчитываемый для кадра два раза, один после другого. Для каждой технологии сглаживания доступно четыре градации качества. Предупреждение - каждая из методик имеет сложную кодовую реализацию, на компиляцию каждой из которых уходит длительное время, которое может варьироваться на разном оборудовании, для смягчения чего в игру было введено кеширование шейдеров, которое ликвидировало проблему долгой рекомпиляции при переключении окон и так далее, но которое не может убрать долгий сбор кеша при первом запуске игры, переключении типа сглаживания, его качества и других настроек, так что при включенном сглаживании может возникнуть необходимость ожидания, которое можно перепутать с зависанием игры. Спойлер Добавлены три новых алгоритма Ambient occlusion (https://ru.wikipedia.org/wiki/Окружающее_затенение, https://ru.wikipedia.org/wiki/Окружающее_затенение_в_экранном_пространстве, https://habr.com/ru/articles/421385/): Screen space ambient occlusion на основе шейдера GSC из билда 3120, переписанного с целью большей читаемости и более тонкой настройки (Дополнительно считается в меньшем разрешени, для увеличения скорости расчета). Hight definition ambient occlusion - на основе шейдера SSAO, но расчитываемого в актуальном разрешении экрана и большим качеством Horizontal based ambient occlusion+ за авторством Mihan323 с небольшой доработкой Deathman, по части шума и других аспектов. Добавлено трехступенчатое шумоподавление для Ambient occlusion: Первая ступень - box фильтр с 10 выборками для SSAO и билинейный фильтр для других алгоритмов. Вторая ступень - импровизированная версия шумоподавления из этой статьи - https://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/. Третья ступень - box фильтр с 18 выборками для SSAO и 9 для других методик Спойлер Добавлена поддержка карт рассеянного освещения (Baked AO Maps) Карты рассеянного освещения можно использовать для всех типов текстур (Base/detail/terrain detail) Использование для базовых (base) текстур: Для использования на базовых текстурах текстура AO должна лежать в той же папке и с тем же именем что и сама текстура, но префиксом _ao в конце. Больше ничего не нужно делать, текстура сама определится игрой и наложится на ту же UV сетку, что и основная текстура (https://ru.wikipedia.org/wiki/UV-преобразование) Использование для детальных текстур основных поверхностей и террейнов: Для использования для детальных текстур требования немного иные - текстура должна находиться в зеленом канале текстуры с префиксом _bump, при этом карта нормалей никак не страдает - этот компонент карты нормалей (https://habr.com/ru/articles/415579/) легко восстанавливается математической формулой в одну строку (https://docs.unity3d.com/Packages/com.unity.shadergraph@6.9/manual/Normal-Reconstruct-Z-Node.html). Рассчитал карты рассеянного освещения для некоторого оружия и актеров - Никита Тимонин. Спойлер Была проведена огромная работа над рельефом поверхностей: В игре присутсвуют три методики расчета рельефа, которые используются для всех типов поверхностей и которые можно переключать через настройки: Normal mapping - методика создания виртуального рельефа, суть которой заключается в том, чтобы модифицировать нормали каждого пикселя поверхности специальными картами нормалей без дополнительной обработки Parallax mapping - методика создания виртуального рельефа, суть которой заключается в том, чтобы с помощью данных из карты высот (https://en.wikipedia.org/wiki/Heightmap), вектора взгляда на поверхность и других данных модифицировать UV координаты (https://ru.wikipedia.org/wiki/UV-преобразование), по которым накладывается текстура, так, чтобы исказить текстуру таким образом, чтобы возникала иллюзия объемности(https://habr.com/ru/articles/416163/) Steep parallax occlusion mapping (Назван как steep parallax mapping) - методика создания виртуального рельефа, суть которой заключается в том, чтобы с помощью данных из карты высот (https://en.wikipedia.org/wiki/Heightmap), вектора взгляда на поверхность и других данных модифицировать UV координаты (https://ru.wikipedia.org/wiki/UV-преобразование), по которым накладывается текстура, так, чтобы исказить текстуру таким образом, чтобы возникала иллюзия объемности(https://habr.com/ru/articles/416163/), дополнительно используя при этом трассировку карты высот по слоям. Для детальных текстур поверхностей также используется рельеф, при этом его тип такой же, какой используется и для основной текстуры. С помощью Chat GPT я получил функцию, которая позволяет из карты высот получить карту нормалей на ее основе, которая очень сильно улучшила рельеф в целом. Рельеф используется для всех поверхностей, включая террейны. Дополнительно в NSPX больше нет разделения шейдеров на шейдеры типа flat и bump. Вместо этого все шейдеры, даже если текстуры bump нет являются bump, но использующими в таком случае текстуры "затычки", с разрешением 1х1 пиксель, что дало возможность использовать рельеф от детальных текстур на текстурах без рельефа. Спойлер Добавлена глубина резкости. Глубина резкости используется при прицеливании из оружия без прицела, при перезарядке оружия, при входе в аномалию, при разговоре со сталкерами, при открытии инвентаря и даже при запуске окна диалога перехода на другой уровень. Качество глубины резкости регулируется отдельным пунктом в настройках и имеет четыре градации. Глубина резкости может полностью работать без какого-либо подключения параметров секций, но для лучшей функциональности и более гибкой настройки рекомендуется использовать настройку из секций. Для использования глубины резкости у оружия необходимо использовать параметры: zoom_dof reload_dof В секции оружия А для аномалий секцию pick_dof_effector В секции нужной аномалии, разрешающую использование эффекта при входе в нее. По умолчанию если параметр отсутсвует то глубина резкости автоматически включена. Глубина резкости считается после всей сцены двумя шейдерными проходами один после другого. Спойлер Добавлен Motion blur. Эффект смазывания картинки в динамике при движении подчеркивающий скорость происходящего на экране и приближающий картинку к реальному восприятию движений глазом. Спойлер От зова Припяти перенесена и улучшена продвинутая система рассчета теней от солнца - солнечных каскадов. Качество теней регулируется отдельной настройкой и от него зависит деталлизация, разрешение теней, а также плавность уменьшения качества теней на удалении от камеры - количество каскадов. При максимальном качестве солнечных теней используется 19 каскадов для достижения максимальной детализации и наиболее плавного перехода качества. Отдельной настройкой добавлена степень размытия солнечных теней. Регулируется степень размытия теней отдельной настройкой и имеет четыре градации. Спойлер Перенесена мягкая вода - при включении этого параметра вода использует отражение неба, мягкий переход к берегу, пену и эффект Френеля для изменения видимости дня водоема с изменением угла взгляда на него. Спойлер Была проведена большая работа над туманом. Качество тумана разделено на четыре градации. Теперь туман использует и цвет неба, а также на максимальном качестве используется вертикальный туман. Вертикальный туман или Height fog основывается на реализации от screen space shaders, с учетом того, что использует только идею использования позиции пикселей в мировом пространстве. Вертикальный туман регулируется из погоды параметрами vertical_fog_intensity и vertical_fog_height. vertical_fog_intensity - интенсивность эффекта. vertical_fog_height - высота, являющаяся максимальной для эффекта. Спойлер Добавлен эффект Винъетирования - плавного затеменения углов экрана, для имитации кинокамеры и увеличения мрачности окружения. Имеет два режима работы - статический, когда является постоянным эффектом, и динамический, когда регулируется из погоды, параметром vignette_power, что дает возможность использовать его как художественный эффект, подчеркивающий мрачность какого-либо уровня. Спойлер Добавлен эффект цветовых аббераций - эффекта имитации линзы, при котором ввиду ее кривизны цвета спекта подвергаются дисперсии и немного расходятся друг от друга. Спойлер Была проведена работа над блеском на поверхностях: Добавлен эффект Френеля для блеска на поверхностях - при взгляде на объект, точки с большим углом относительно камеры будут больше отбрасывать свет. Улучшен и прочий блеск(Усилен, добавлено влияние цвета текстуры и цвета освещения на цвет блеска), а также исправлены отражения неба на моделях оружия - до этого, в оригинальной игре, отражения на всех моделях оружия использовали одну текстуру - sky_5_cube. Теперь для отражений используется актуальное небо. Спойлер Возвращен эффект Bloom - эффект, улучшающий яркость и насыщенность сцены, а также имитирующий эффект следов Эйри для имитации неидеальности линзы камеры. Также эффект улучшен - для последнего этапа его создания используется более мощное размытие. Спойлер В игру добавлена регулируемая сепия, являющаяся художественным эффектом, предназначенным для улучшения визуального восприятия разных игровых уровней и придания отдельным циклам погоды или погодным явлениям своего оттенка. Регулируется через погодные параметры sepia_color и sepia_power Спойлер Дополнительно я пересобрал все подземные уровни, с использованием radiosity global illumination для расчета освещения. Спойлер Первый рендер теперь использует маску для террейнов, если таковая имеется и если видеокарта поддерживает DirectX 9 В будущем я планирую намного больше делать упор на первый рендер и привносить в него намного больше нового. Спойлер Почищены и укомпонованы логи - отладочные сообщения убраны в режим отладки. Добавлено отображение всех стадий загрузки уровня, а также в лог выводится список стадий отгрузки уровня. Увеличены в три раза вертекстный и индекный буфферы, что дает поддержку уровней большего размера. Добавлена консоль от зова Припяти, огромное спасибо VAX. Добавлена многопоточная загрузка текстур, в дальнейшем появится многопоточная загрузка моделей. Добавлено кеширование шейдеров. Изменена дата создания проекта в алгоритме рассчёта номера билда. Исправлена вертикальная синхронизация и ограничение количества кадров в секунду. Оконный режим заменен на безрамочный Исправлены анимации главного героя от третьего лица. Начаты изменения в плане приближения структуры движка к оной в зове Припяти и чистом небе. xr3da переименовано в xrEngine, из xrEngine вынесены дополнительные библиотеки, а также рендеры. В дальнейшем рендеры станут интерфейсами и будет перенесен xrAPI, как первый шаг к переносу третьего рендера. В игре можно выбрать разрешения ниже 800*600 Во время отладки в Visual studio или ее работы можно свернуть игру при помощи Alt tab, а также игра в принципе не имеет приоритета над остальными окнами. Включено окно вывода и продолжения дальнейшей работы в случае вылета вместо окна Bugtrap с зеленым жуком Для любителей вырезать первый рендер движок может запуститься без xrRender_R1.dll Спойлер Спойлер Спойлер Обновлена библиотека xrSound, спасибо Maks0 за помощь, перенсена от чистого неба, что дает возможность использовать стерео звуки, использовать любую частоту звуков, при учете использования этой частоты у всех звуков, а также изменять средство воспроизведения звука. В составе файлов движка находятся полностью рабочие soft_oal.dll и wrap_oal.dll, с рабочим позиционированием звука относительно камеры, а также намного более лучшим звучанием, спасибо v2v3v4 Спойлер Исправлен и полностью работает EAX, спасибо v2v3v4 Работает за счет изначально расставленных на всех уровнях зонах звукового окружения GSC, свои делать и расставлять я буду в будущем. Спойлер Для всех уровней сделаны Sound occlusion model на основе геометрии Hierahical occlusion model, что дало нормальное отсечение звуков стенами, но не идеально, что в будущем я собираюсь исправлять, а также дополнительно и в параметрах материалов игры перенастроены параметры звукопоглощения. Спойлер Я реализовал возможность менять громкость отдельных категорий звуков: Можно менять общую громкость всех звуков, громкость игровых звуков, громкость музыки, громкость погодного звукового окружения и эксперементально громкость оружия. Спойлер Убрана старая система стерео с загрузкой двух звуков с префиксами _l и _r, а вместо них везде теперь загружается один звуковой файл Спойлер В оригинальной игре в game_level_musics можно задать музыкальные треки по периоду их воспроизведения, но при этом и днем и ночью воспроизводился дневной трек, исправил это, перенеся код фоновой музыки от чистого неба. Спойлер Абсолютно полностью заменена вся музыка на музыку из слитого архива GSC под названием PR Stuff, так как она намного более качествена и имеет некоторые отличия в лучшую сторону, относительно той, что была использована в релизной версии игры. Также музыка на локациях была частично перебалансирована. Спойлер Спойлер Спойлер Переработано покачивание камеры. Теперь покачивание камеры учитывает все состояния передвижения, в которых находится актер, исходя от чего изменяется амплитуда и интенсивность качания, а также в зависимости от скорости актера изменяется и поле зрения. При этом качание камеры можно выключить в настройках. Спойлер Команда cam_inert исправлена, теперь она по умолчанию находится в значении 1, и не ломает управление как в оригинальной игре Спойлер Спойлер HUD можно отключить отдельным параметром в настройках игры. При этом убирается и максимум сопутствующих надписей вроде сообщений о примененной аптечке или же об успешном сохранении. Спойлер Перенесен параметр minimap_zoom, прописываемый в секции уровня в game_maps_mp и game_maps_single и влияющий на масштаб участка карты локации в миникарте, по умолчанию выставлен в секциях на значение 1.25 Спойлер Ключ консольного вида от третьего лица сзади -psp включается отдельным параметром в настройках игры, но является эксперементальным и в будущем будет дорабатываться. Также для нового режима вида от третьего лица исправлены анимации главного героя. (Пресловутый бег "Ласточкой") На данный момент исправлена малая дальность подбора предметов при использовании данной вариации игровой камеры, а также исправлено прицеливание. Спойлер Спойлер Добавлено изменение разброса оружия при прицеливании, регулируемое праметром zoom_fire_dispersion_base в секции оружия. Изменение разброса оружия зависит от сложности игры. На сложности "Мастер" разброс оружия не заменяется на новую секцию вовсе. Добавлено изменение параметров отдачи оружия в прицеле параметрами zoom_cam_relax_speed zoom_cam_dispersion zoom_cam_dispersion_inc zoom_cam_dispertion_frac zoom_cam_max_angle zoom_cam_max_angle_horz zoom_cam_step_angle_horz Спойлер Добавлено неиспользуемое оружие - ТОЗ, полноценная БМ-16 и ХПСС За модель ТОЗ спасибо OLR 2.5 За адаптацию модели полноценной БМ-16 от 2205 билда к анимациям и рукам обреза спасибо Ивану Панкову Для МП-5 ипользуются анимации Водилы. Спойлер Включена и настроена инерция оружия, на мой вгляд она придает живости движениям при виде от первого лица. Спойлер Звуки всего оружия заменены на звуки от чистого неба, так как на мой взгляд они намного более качественны Спойлер Все вырезанные аддоны вроде прицела на ОЦ-14 теперь возвращены Спойлер Спойлер При помощи соответсвующей настроки можно переключать способ входа в режим прицеливания - по удержанию кнопки или же по однократному нажатию Спойлер Текстура прицела меняется в зависимости от используемого разрешения экрана. Для этого необходимо указать вариант текстуры прицела для разрешения 16:9 (scope_texture_16_9) помимо основной текстуры прицела (scope_texture) Спойлер Я переработал demo_record отчасти, в будущем я намерен продолжать работу над ним и дальше. Я добавил нормальную подсказку о клавишах ввода, нейтрального цвета, которая не моргает перед лицом и которую можно по нажатию одной кнопки можно скрыть. Добавил возможность включить вывод сетки третей для нормальной сборки композиции, в случае если ты не можешь определить трети и их пересечения на глаз. Реализовал смену глубины резкости и поля зрения при помощи колеса мыши. Хоть и криво, но реализовал активацию ватермарки и "Рамок" по кнопкам. Текстуры сетки, ватермарки и рамок лежат по пути textures/vfx/ Проблемы - сетка, рамки и ватермарка пока что доступны только на втором рендере, а при скриншоте с измененным полем зрения встроенные скриншоты ломаются, так что приходится использовать например бандикам, так как на обновление 1.4 у меня было мало времени я так и не нашел причину этой проблемы, но я думаю что на время скриншотов класс demo_record разрушается и после них создается заново, иначе я не знаю почему это происходит. Спойлер Спойлер Полностью перенесен формат погоды чистого неба и зова Припяти Спойлер Для каждого уровня создан свой собственный цикл погоды на основе оригинальных циклов, с собственной атмосферой, передаваемой через визуал и звук. Большая часть уровней имеет собственное звуковое окружение, собранное индивидуально под отдельные уровни. Спойлер Я считаю что Environment должен быть не просто погодой, а набором настроек, формирующих также и виуальный стиль и характер уровня, я начал с того что из погоды управляется винъетирование и сепия, а в будущем буду двигаться и к другим художественным инструментам. Спойлер ПОгода на Янтаре и Радаре меняется после отключения обоих выжигателей, что должно создавать ощущение влияния данных событий на мир зоны и главного героя в частности. Спойлер Спойлер Помимо фокусировки на персонаже, во время диалогом теперь можно переключать фразы прямо с клавиатуры, что удобно и может экономить время Спойлер Спойлер Добавлены новые интро ролики при старте игры Спойлер Вместо того чтобы вырезать интро, я дал возможность выключить их через настройки в главном меню Спойлер Спойлер Спойлер Добавлена команда r2_debug_render, при помощи которой можно выводить на экран разные слои рендера. Пока что можно вывести только данные из геометрического буфера, аккумулятора света, можно вывести Ambient occlusion и три стадии шумоподавления, а также полные данные об освещении. После изменения значения команды необходимо вызвать перезагрузку рендера с помощью vid_restart Спойлер При помощи команд r2_debug_textures можно вывести вместо всех текстур геометрии белую текстуру и UV чекер. Белая текстура может позволить посмотреть на геометрию как она есть, после того как она прошла через компиляцию, без помощи blender, хотя это все же стоит делать при помощи открытия сцены в блендере. UV чекер позволяет быстро проверить подтяжки и сломанные швы у текстур прямо внутри игры. Для того чтобы после смены значения этой команды изменения применились необходимо перезапустить игру. Спойлер Предупреждения, возникающие во время компиляции шейдеров теперь выводятся в логи Спойлер Помимо того, что я иду к полному переписыванию всех шейдеров под нормальный стиль кода и нормально спроектированную их архитектуру, я одним из первых изменений собрал шейдеры первого и второго рендеров в проекты для Visual studio, рассортировав по фильтрам все файлы. Спойлер Я являюсь единственным разработчиком проекта уже целый год, и хоть мне и помогали советами, а VAX комитами, я не могу заниматься этим один, поэтому если есть желание помочь - приветствую пулл реквесты или иную помощь по проекту. Спойлер 1. Каскадные тени имеют артефакты - дальние каскады еле заметно полосят, а при низком разрешении между каскадами заметна однопиксельная полоса перехода - природа проблемы одна и на данный момент неизвестна. 2. Так как Steep parallax mapping, как и другие алгоритмы рассчета рельефа избегает полумер и рассчитывается для абсолютно всех поверхностей очень заметны его проблемы, которые в дальнейшем исчезнут, из-за смены или переписи алгоритма. Из таких "езда UV по поверхностям" - при некотором движении вектора взгляда относительно поверхности можно заметить то, что отдельные текстуры меняют све положение. "Уход луча под UV" - явление, когда луч алгоритма уходит дальше границы развертки текстуры на модели и появляется эффект "Вылезания" черных областей текстуры и подобных вещей. 3. Сталкеры могут "уронить" фонари утром - природа неизвестна. 4. Настройка выбора средства воспроизведения звука не работает и сбрасывается при перезапуске игры. 5. При выводе окна перехода на другой уровень из-за того что покачивание камеры изменяет теперь еще и поле зрения возникает проблема, когда поле зрения увеличивается пропорционально без остановки. 6. При переходе в подземелья агропрома цвет освещения может стать красным - природа неизвестна. Спойлер Спойлер Спойлер Спойлер https://github.com/Nocturning-studio/Nocturning-studio-project-X Вы всегда можете отправлять любую возможную помощь в виде пулл реквестов Код адаптирован под Visual studio 2019-2022, спасибо VAX Спойлер Группа ВК - https://vk.com/nocturning_games Канал на Youtube - https://www.youtube.com/channel/UCfYy0lHEl_NxjT0Sg0Jjn4w Спойлер В игре присутствуют семь пресетов графики, работа которых оптимизирована под конкретные видеокарты: Минимальный пресет - На Nvidia Geforce 8500GT при улучшенном полном динамическом освещении на разрешении 1280*1024 в среднем 23 кадров в секунду. Низкий-средний пресеты графики рассчитаны на Nvidia Geforce 8600-9800 . Высокий пресет - На Nvidia Geforce GTX260 OC при улучшенном полном динамическом освещении на разрешении 1280*1024 в среднем 30 кадров в секунду. Экстремальный пресет рассчитан на Nvidia Geforce GTX460 и выше. Ультра пресет рассчитан на Nvidia Geforce GTX560 и выше. Спойлер Для установки и использования достаточно поместить в корень папки игры содержимое приложенного архива. Также необходимо установить Visual C++ 2019 x86/x64 При установке стоит переименовать оригинальную папку bin и скопировать на её место папку из архив, запускается новый движок при помощи xrEngine.exe Я ищу людей, для того чтобы в дальнейшем разрабатывать проект в команде - если вы хороши хоть в чем-то и хотели бы принять участие в разработке проекта - напишите мне здесь или в ВК (https://vk.com/ns_deathman) Изменено 25 февраля пользователем Deathman 12 7 2 2 8 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 1 марта, 2023 57 минут назад, I am dead сказал: Ну как же, на OXR ты неплохо таки трепался Я ни разу не сказал о том, что это некст ген проект или ремастер Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mrmnwar 4 Опубликовано 1 марта, 2023 1 час назад, Deathman сказал: а в NSPX я steep parallax использую на всех поверхностях Остался только вопрос, зачем?) Дополнено 5 минуты спустя 1 час назад, Deathman сказал: В тч и нет steep parallax, эта проблема пришла еще с зова Припяти и пошла по второй сталкер, оба алгоритма были у меня в NSPX, в parallax.h у меня steep parallax от зова Припяти, в psf_parallax напрямую из второго сралкера и проблема одна - мы идем за UV Внезапно, это проблема всех алгоритмов параллакса. Есть конечно силуэтный или как он там. Дополнено 9 минуты спустя Скрин не мой, но сталкерский. Цитирую хабр "Также видны и странные артефакты вдоль границ оттекстурированной плоскости. Появляются они вследствие того, что смещенные алгоритмом Parallax Mapping текстурные координаты могут выпасть за пределы единичного интервала и, в зависимости от режима повторения текстуры (wrapping mode), вызвать появление нежелательных результатов. Простой способ избавления от таких артефактов – просто отбросить все фрагменты, для которых текстурные координаты оказались вне единичного интервала" 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 126 Опубликовано 1 марта, 2023 нет желания добавить скриптовые методы с x-ray extensions там? будет тогда неплохой альтернативой ему самому ибо тут графические возможности шире Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AndroIDDQD 211 Опубликовано 1 марта, 2023 3 часа назад, Deathman сказал: А во-вторых я считаю так и до сих пор и мне плевать Тут можно в игнор добавлять всяких придурков, если что 😉 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 2 марта, 2023 (изменено) В 01.03.2023 в 22:17, mrmnwar сказал: Остался только вопрос, зачем?) Дополнено 5 минуты спустя Внезапно, это проблема всех алгоритмов параллакса. Есть конечно силуэтный или как он там. Дополнено 9 минуты спустя Скрин не мой, но сталкерский. Цитирую хабр "Также видны и странные артефакты вдоль границ оттекстурированной плоскости. Появляются они вследствие того, что смещенные алгоритмом Parallax Mapping текстурные координаты могут выпасть за пределы единичного интервала и, в зависимости от режима повторения текстуры (wrapping mode), вызвать появление нежелательных результатов. Простой способ избавления от таких артефактов – просто отбросить все фрагменты, для которых текстурные координаты оказались вне единичного интервала" Попробую решить эту проблему максимально тупо - попробую завершать работу алгоритма если текстурные координаты оказались больше единицы, только мне кажется что из этого у меня выйдет что-то ещё более худшее чем то что есть сейчас и придется куралесить кастыли или же все же использовать его только на отдельных поверхностях Дополнено 1 минуту спустя В 01.03.2023 в 22:50, imcrazyhoudini сказал: нет желания добавить скриптовые методы с x-ray extensions там? будет тогда неплохой альтернативой ему самому ибо тут графические возможности шире Может быть попробую в будущем, пока я пытаюсь обосновать наличие у статики отдельного режима технологиями в нем и реализую поехавшие идеи, которые были у меня раньше Изменено 3 августа, 2023 пользователем Deathman Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mrmnwar 4 Опубликовано 2 марта, 2023 2 часа назад, Deathman сказал: попробую завершать работу алгоритма если текстурные координаты оказались больше единицы Для моделей сталкера такое не прокатит. Большая часть развертки там и так лежит в диапазоне больше 1, так как в основном текстуринг там тайловый. Только для отдельных объектов подойдет. Дополнено 2 минуты спустя Самым логичным решением будет все таки использование на нужных текстурых, как оно сделано в чн,зп, либо пилить другой параллакс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 3 марта, 2023 В 02.03.2023 в 10:07, mrmnwar сказал: Для моделей сталкера такое не прокатит. Большая часть развертки там и так лежит в диапазоне больше 1, так как в основном текстуринг там тайловый. Только для отдельных объектов подойдет. Дополнено 2 минуты спустя Самым логичным решением будет все таки использование на нужных текстурых, как оно сделано в чн,зп, либо пилить другой параллакс. Пробовал сделать возможность задать его для отдельных текстур вчера - как и ожидал у меня даже этого не получилось. Хз что с этим делать, останется так потому что я тупой Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 4 марта, 2023 Из новостей по продвинутому статическому освещению. Технически он сейчас называется r1.5, но изначально я назвал этот рендер r1.2, чтобы r1.5 оставить под deffered вариант статики, не думаю что я еще сяду заниматься этим, так что переименовал в r1.5. На нем доступны: Цветовые абберации, Винъетирование, Маска на террейнах, для того чтобы переходы от текстур были мягкими, Что-то типа порта мягкой воды на статику, автора которого я не помню, собственно как и то, что я вообще это когда-то переносил к себе, в будущем сделаю свою версию с нормальным стилем кода. В будущем добавлю поддержку BakedAO карт. Начал полностью переделывать шейдеры статики по аналогии с тем как я делаю на втором рендере, ибо с этим работать невозможно. NSPX 1.1.5 выйдет не скоро и как завещали авторы я скажу "когда оно будет готово", хотя в принципе кто вообще его ждет, так что зачем я вообще это пишу 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 5 марта, 2023 Поддержка Baked AO текстур добралась и до первого рендера 2 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 126 Опубликовано 5 марта, 2023 Deathman так статика r1 - это дх9 или дх8.1? насколько мне известно - дх9, а дх8 был в билдах но у тебя в меню указано дх8.1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 5 марта, 2023 (изменено) 1 час назад, imcrazyhoudini сказал: Deathman так статика r1 - это дх9 или дх8.1? насколько мне известно - дх9, а дх8 был в билдах но у тебя в меню указано дх8.1 Объясняю В самом начале, с первого билда Oblivion lost, вся игра держалась на DX8.1 и рендер был написан на нем. На чем держалась игра с 31 января 99 года, указанного в xrCore как дата создания движка по 12 ноября 2000 года, когда вышел DX8.0 или до 25 октября 2001, когда вышел DX8.1 я не знаю, возможно на DX7 Дальше, 25 декабря 2002 года выходит DX9.0a и в следующем же билде после демо на Е3 2003 года, датированной 5 марта 2003 и имеющей номер 1465, в билде 1469, код которого кстати у меня есть, датированном 9 мая 2003 года первый рендер переехал на DX9 с принудительным использованием пиксельных и вершинных шейдеров версии 1.1, что дает полную совместимость с DX8.1 видеокартами, а также появился второй рендер, использующий уже DX9.0a. Так первый рендер работал и до релиза тени Чернобыля и в чистом небе, где мы используем DX9 с одним рендертаргетом и шейдерами, использующими только 1.1 модель, а в зове Припяти, когда добавляли колормаппинг, появилось использование 1.4 шейдерной модели, но только если она доступна. Минусом 1.1-1.4 шейдерных моделей является ее ограниченность, вызванная ограниченностью видеокарт, для которых они были потолком, самые показательные ограничения это возможность использования только 4 текстур в одном шейдере, для каждой из которых из вершинного шейдера должны идти свои собственные наборы координат из семантики, которая идет из вершинного шейдера, а также возможность использования только четырех наборов текстурных координат и по-моему около 64 математических инструкций на шейдер. Я сделал режим, который позволяет мне использовать либо отдельные шейдеры, использующие 2.0 шейдерную модель, либо же дающий мне возможность в нужных местах спрятать какие-то операции под директивное условие, которое будет спрятано на обычном первом рендере и назвал его r1.5. Если найдется кто-то, кто может нормально владеть движком, можно будет взять второй рендер, отрезать от него вообще все кроме геометрического буфера и прочего, перевести на полное статическое освещение, а не Lightmap солнце с шадовкастом от ламп как на r2a, мне написать для него шейдеры на 1.4 шейдерной модели с ноля и заменить этим рендером статику, что даст огромные возможности в плане эффектов и постпроцесса, но это уже не будет рендер который запустится на условной ATI 9600 к примеру, но это будет красивая статика, которая будет иметь Normal mapping и кучу всего остального, что можно будет добавить без огромного количества возни с forward rendering Дополнено 12 минуты спустя Не знаю зачем я это говорю - забавный факт, в чн, раньше, когда DX10 только добавляли, рендер, его использующий назывался не R3, а R_DX10 Дополнено 18 минуты спустя Еще один забавный факт 😄 В тени Чернобыля можно было использовать только SLI из двух видеокарт и то, не ясно из каких, а в чистом небе появились NVAPI и библиотека определения GPU от ATI и в чн и зп можно использовать рендер на одновременно до 8 картах. Но не на первом рендере, он использует только один GPU Изменено 5 марта, 2023 пользователем Deathman 3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 126 Опубликовано 5 марта, 2023 Deathman увлекательно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 9 марта, 2023 (изменено) Я взял перерыв в работе над NSPX чтобы в конце концов накопить сил, вдохновения и продолжить делать хорошие вещи хорошо, а не с мыслью "Кому это вообще упало, сделаю как работает, а дальше пусть трава не расти", ну или хотя бы до момента, когда найдется кто-то, кто решит помочь проекту Дополнено 2 минуты спустя Решил кстати собрать файловый сервер и по совместительству второй мини-пк на ASrock AD2550B-ITX, средне-низкие и низкие настройки буду теперь оптимизировать под такое железо, по крайней мере попытаюсь, не знаю что из этого выйдет Изменено 9 марта, 2023 пользователем Deathman 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sumrak6835 161 Опубликовано 10 марта, 2023 5 часов назад, Deathman сказал: Я взял перерыв в работе над NSPX чтобы в конце концов накопить сил, вдохновения и продолжить делать хорошие вещи хорошо, а не с мыслью "Кому это вообще упало, сделаю как работает, а дальше пусть трава не расти", ну или хотя бы до момента, когда найдется кто-то, кто решит помочь проекту Передохни, конечно! Выгореть недолго. 5 часов назад, Deathman сказал: Решил кстати собрать файловый сервер и по совместительству второй мини-пк на ASrock AD2550B-ITX, средне-низкие и низкие настройки буду теперь оптимизировать под такое железо, по крайней мере попытаюсь, не знаю что из этого выйдет Интересная мысль. Еще бы тогда и разрешение экрана другое использовать. Наши геймеры помимо 16х9 еще и 16х10 юзают, и, как оказалось у некоторых до сих пор 4х3 в активе Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 10 марта, 2023 21 минуту назад, sumrak6835 сказал: Передохни, конечно! Выгореть недолго. Интересная мысль. Еще бы тогда и разрешение экрана другое использовать. Наши геймеры помимо 16х9 еще и 16х10 юзают, и, как оказалось у некоторых до сих пор 4х3 в активе Касательно разрешения Во-первых я сам использую монитор 4:3 Во-вторых в NSPX технически нет ограничения, которое отсеивает разрешения, потому как раз и можно выбрать хоть 480р, но мне кажется другое соотношение сторон все равно не получится выбрать, потому что варианты интерфейса есть только для 4:3 и 16:9, нужно либо добавлять новый вариант, либо делать автомасштабирование из 1024*768 под любое разрешение математическими операциями с координатами и масштабом элементов Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RayTwitty 826 Опубликовано 10 марта, 2023 (изменено) В 07.02.2023 в 23:09, Deathman сказал: 3. Лампы по локациям могут быть "Погрызаны" - природа неизвестна. Насколько я помню, древний баг еще оригинала. Там что-то связано с "освещением" от солнца (через геометрию), как мне говорил K.D. https://github.com/KD87/xray-extensions/commit/490895c78d88f90bfc0fc97a97b26416003da7b5 Если не ошибаюсь, вот коммит с исправлением для xray extensions. В 07.02.2023 в 23:09, Deathman сказал: 4. Сталкеры могут "уронить" фонари утром - природа неизвестна. Возможно фонарям не был включен аттач на модель. Проверь, отработала ли функция enable_attachable_item в sr_light.script. Без этого фонарь включится, но будет светить по координатам владельца (НПС) под ногами. Изменено 10 марта, 2023 пользователем RayTwitty 1 Phantoms Zone | Shadows Addon | DMX MOD Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 10 марта, 2023 (изменено) 2 часа назад, RayTwitty сказал: Насколько я помню, древний баг еще оригинала. Там что-то связано с "освещением" от солнца (через геометрию), как мне говорил K.D. https://github.com/KD87/xray-extensions/commit/490895c78d88f90bfc0fc97a97b26416003da7b5 Если не ошибаюсь, вот коммит с исправлением для xray extensions. Возможно фонарям не был включен аттач на модель. Проверь, отработала ли функция enable_attachable_item в sr_light.script. Без этого фонарь включится, но будет светить по координатам владельца (НПС) под ногами. Вау, спасибо большое, проверю как будет время функцию в sr_light.script. Погрызанные лампы кстати не всегда погрызаны, они могут при загрузке игры в случайном порядке загружаться целыми Изменено 10 марта, 2023 пользователем Deathman Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 13 марта, 2023 (изменено) Отчасти отдохнул полностью пройдя Unreal tournament 3 и снова сел за NSPX перед переездом. Решил разгребать проблему оптимизации и производительности в проекте. Начал с Ambient occlusion, шума, его семплов и шумоподавления. Мне всей душой все равно кто, что, каким образом и как в меня кинет или скажет, но на ультра качестве AO под шумоподавлением выглядит теперь так Я использую метод, отдаленно напоминающий метод, описанный в этой статье - https://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/ Я использую не попиксельный квадратный фильтр или глубинно-базированный диагональный, а попиксельный квадратный с пропуском части координат, что эквивалентно описанному в статье. Я не программист, я не знаю как написать это циклом, поэтому как и другие фильтры я реализовал все массивом координат и перебором его элементов в цикле Мне достаточно того что я не вижу шума и имею вменяемую производительность SSAO, качество ультра - 30 FPS HDAO, качество высокое - 30 FPS HBAO+, качество среднее - 30 FPS Видеокарта - GTX260OC Пресет - высокий Второе - я провел много работы над рельефом. Во-первых я изменил свою политику по части качества steep parallax и его дальности отрисовки. Я уменьшил количество семплов на основных, детальных и террейновых текстурах так, чтобы это выглядело хорошо и без эффекта волн, и про этом было максимально производительно. Во-вторых я внедрил новую идею. LOD система для рельефа текстур. Начал я с того, что решил вызывать расчет parallax mapping за границей радиуса расчета steep parallax mapping, что дало мне еще больше убавить ее, без влияния на общий вид окружения. Вместе с этим я решил использовать систему убавления влияния steep parallax на вообще всем радиусе его работы, вместо пяти-десяти метров до его конца, что как раз и дало мне возможность использовать незаметно переход от steep parallax к parallax. Пример исполнения для обычных поверхностей: Следующим шагом я пошел еще дальше. Я сделал возможность настраивания дальности просчета даже для parallax mapping То есть слова про LOD систему для рельефа это вообще не шутка. При включенном steep parallax у нас реально рельеф делится на области детализации Первые 10 метров - область максимальной детализации С 10 по 20 метров область средней детализации С 20 метров область работы normal mapping, наименьшая детализация. Для детальных текстур развесовка еще меньше - 8 метров граница ближняя, 15 дальняя. Высокие настройки качества с элементами ультра и всеми steep parallax на GTX260OC: Я все еще продолжаю работать над этим днищем, хоть у меня и нет никакого желания и мотивации дальше продолжать все это, если кто-то недоволен качеством проекта или просто хочет помочь развитию я буду рад если кто-то присоединится к работе на постоянной основе Изменено 13 марта, 2023 пользователем Deathman 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mrmnwar 4 Опубликовано 13 марта, 2023 4 часа назад, Deathman сказал: Следующим шагом я пошел еще дальше. Я сделал возможность настраивания дальности просчета даже для parallax mapping Мотор и без этого отрубает параллакс на больших расстояниях void uber_deffer (CBlender_Compile& C, bool hq, LPCSTR _vspec, LPCSTR _pspec, BOOL _aref, LPCSTR _detail_replace, bool DO_NOT_FINISH) bool hq как раз за это и отвечает. strcat (vs,"-hq"); strcat (ps,"-hq"); Т.е. если hq==true (вроде там дистанция в 50м игровых) подключаются шейдеры с постфиксом -hq которые в себе содержат макрос USE_PARALLAX, и наоборот. По аналогии можешь создать и флаг включения стип параллакса для конкретных текстур в uber_deffer.cpp и ресурс менэджере и его так же нужно будет запрятать под hq ну и применять фэйдинг который ты показал, потому что вещь ресурсоемкая. Еще по оптимизации конечно же стоит использовать только tex2Dlod с нулевым мипом (один хрен параллакс дальше 12м игровых не имеет смысла, прирост в кадрах будет существенный. Фильтрацию для карты высот естественно анизотропную юзать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 13 марта, 2023 Про hq/lq шейдеры и tex2Dlod с нолевым мипбиасом я давно знаю. Систему лодов для рельефа я сделал для того чтобы управлять детализацией поверхностей до перехода геометрии из hq состояния в lq. То есть мы имеем не три, а четыре стадии детализации. И также я пытался сделать возможность использования steep parallax только для определенных текстур. Я не могу это сделать. Я не понимаю этот код, я не могу с ним работать, я могу только добавлять команды, дефайны и семплеры, я не могу работать с двиглом на таком уровне, у меня даже из чистого неба и зова Припяти перенести не получилось. Дополнено 47 минуты спустя Selflight шейдер идет на фиг ребят - в NSPX есть поддержка эмиссивных карт. ДЛЯ ВООБЩЕ ВСЕГО Дополнено 48 минуты спустя Не знаю как остальные, а я сейчас праздную вот под этоhttps://youtu.be/lYk86O8NzM0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mrmnwar 4 Опубликовано 13 марта, 2023 (изменено) 2 часа назад, Deathman сказал: И также я пытался сделать возможность использования steep parallax только для определенных текстур. Я не могу это сделать. Попробуй взять готовый код подключения параллакса из репозитория KD87 https://github.com/joye-ramone/xray_xp_dev открой uber_deffer.cpp if (C.bParallax) strcat (ps,"_steep"); И переноси все что связано с C.bParallax, там не сложно (выделяешь C.bParallax и жмёшь "найти все ссылки") По итогу у тебя в textures.ltx должен заработать флаг parallax[yes/no] для текстур. Изменено 13 марта, 2023 пользователем mrmnwar Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 13 марта, 2023 59 минут назад, mrmnwar сказал: Попробуй взять готовый код подключения параллакса из репозитория KD87 https://github.com/joye-ramone/xray_xp_dev открой uber_deffer.cpp if (C.bParallax) strcat (ps,"_steep"); И переноси все что связано с C.bParallax, там не сложно (выделяешь C.bParallax и жмёшь "найти все ссылки") По итогу у тебя в textures.ltx должен заработать флаг parallax[yes/no] для текстур. Я это тоже пробовал и снова облажался, причем даже не один раз, попробую еще раз в будущем Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
cyberian 0 Опубликовано 13 марта, 2023 Установил, запустил. Выбрал в настройках последний рендер и 2560 разрешение. Игра не запускается. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 14 марта, 2023 6 часов назад, cyberian сказал: Установил, запустил. Выбрал в настройках последний рендер и 2560 разрешение. Игра не запускается. Можно пожалуйста лог ошибки? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
cyberian 0 Опубликовано 14 марта, 2023 Ошибки нет. Просто черный экран сразу после запуска игры. Причем все работает после удаления user.ltx и возвращения ориг из сборки. А как я выставлю 1440р и ласт рендер - описанная проблема. Дополнено 8 минуты спустя Ну в общем с какого-то раза игра просто запустилась, но пришлось долго ждать. Побегал, фпс в районе 90-120 (i5 10400f + 1080 Ti). Попробовал выставить DLAA с обнаружение краёв - игра намертво зависла после применения настроек. При перезапуске вернулся к первой проблеме. Закинул ориг user.ltx из сборки, не помогает. Попытаюсь еще. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты