Графика, рендер, шейдеры |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Графика, рендер, шейдеры |
17.08.2010, 10:38
Сообщение
#4161
|
|
Игроман Репутация: 430 Группа: Участник Сообщений: 892 Регистрация: 14.08.2008 |
Разбор полётов Работы участников Шейдеры от Diablo Наработки cjayho ECB Shaderpack Описание ECB-Shaderpack Улучшенный набор шейдеров для игры S.T.A.L.K.E.R.: Shadow of Chernobyl _____________________________________________________________________________ Основные возможности: _______________________ 1) Непрозрачный туман на R2, возможность переключения из файла конфигурации прозрачный/непрозрачный туман 2) Исправлена "синюшность" изображения на R2 3) Эффект компенсационного светового следа на R2 4) Статический и динамический Depth of field на R2, Размытие объектов при прицеливании (требует дополнительного скрипта) 5) Билдовский блум с краснинкой на R2, возможность переключения тонмаппинга в режим, который был в билде 2218 6) Screen space ambient occlusion на R2 7) Правильная отрисовка сияния ламп на R1 8) Правильная отрисовка солнечного градиента на обоих рендерах 9) Полноценная отрисовка occlusion-lightmaps на R2 10) Микроструктурный бамп 11) Правильная отрисовка бликов на блестящих поверхностях 12) Автосатурация - попиксельное уменьшение насышенности слабо освещенных объектов 13) Мягкие тени на R2 14) Экспериментальная возможность - правильные тени от деревьев на R2 15) Улучшенный Motion blur, более похожий на билдовский 16) Исправлена "кислотность" (перенасыщенность) солнечного освещения объектов на R2 17) Отражабельная вода на R2 18) GodRays на R2 + эффект пылинок в лучах. 19) Мягкие партиклы на R2 20) Мягкая вода на R2 Плюс множество регулировок и исправлений мелких недостатков обоих рендеров Условия использования _______________________ Данный продукт предоставляется под соглашением Creative Commons CC-BY 3.0, Подробнее описано по адресу Составитель данного набора шейдеров - cjayho Свежие ревизии находятся по адресу Установка ___________ Данный продукт тестировался под версиями игры 1.0004 и 1.0006 Установка сводится к копированию файлов в папку gamedata мода, изначальный набор файлов предназначается для чистой игры. В случае установки погодных модов необходимо правильно совместить файл config/weathers/flares.ltx Для более полной настройки шейдеров R2 под свой мод можно править файл shaders/r2/config.h. Для корректной работы теней нужно установить следующие переменные в игровой консоли: r2_sun_near_border 1 r2_sun_near 20 Благодарности _______________ Sergy172 за идеи и тестирование экспериментальных веток. -=Diablo=- за изначально портированные шейдеры из 2232 macron за отражабельную воду и наборы шейдеров из билдов 2217 и 2588 Билдоман за набор шейдеров из билда 2571 BAC9-FLCL, KamikaZZe за дельные замечания и критику Shadows за неоценимую помощь в разработке и тестирование экспериментальных версий Meltac <metzinger@gmx.net> (Его мод "Dynamic shaders" здесь: за алгоритм Depth of Field. Код DoF используется с его разрешения. Sky4CE за алгоритм SSAO K.D. За алгоритмы мягкой воды, мягких партиклов, GodRays Наработки ECB Team распространяются под условиями Правки рендера от K.D. Подходит как к чистой игре, так и к любым модам. Изменения - саншафты (команда r2_sun_shafts off/low/medium/high) - мягкая вода (команда r2_soft_water on/off) - мягкие партиклы (команда r2_soft_particles on/off) - регулировка дальности отрисовки травы через консоль (r__detail_radius [49, 501]) - расширенная регулировка плотности травы (r__detail_density [0.02, 0.6]) - расширенная регулировка четкости текстур (r1_tf_mipbias/r2_tf_mipbias [-3.0, 3.0], только R1/R2) - расширенная регулировка расстояния переключения на лоды (r__geometry_lod [0.1, 3.0]) - восстановлены тени от травы (r2_sun_details, R2) - восстановлены блудмарки (r2_bloodmarks, R1/R2) - правильные тени от солнца (R2) - увеличенный видеобуфер (фикс ошибки "(bytes_need<=mSize) && vl_Count" на R2, связанной с перегрузками видеобуфера*) * То есть теперь можно на полной динамике загрузить ресурсоёмкую карту типа болота из ЧН, поставить видимость в 4 километра и взрывать вокруг дымовые гранаты с ЧНовскими партиклами дыма (тоже жутко ресурсоёмкие). Установка: закинуть содержимое в папку с установленным ТЧ (6 патч, более ранние патчи не поддерживаются и просить сделать под них аналогичное бессмысленно!) Настройка: смотрите ogse_config.h Нюансы: - мягкая вода работает и без бинарников - экзешник нужен для пыли в саншафтах и правки вылета перегрузки видеобуфера. Он основан на выложенным в свое время официальном экзешнике для 6го патча без защиты (отсутвие starforce). - рендер-библиотека обеспечивает работу консольных команд, пыли в саншафтах и мягких партиклов. Использование: где и как угодно. Не возбраняется указать автора. Сообщение отредактировал ForserX - 21.07.2020, 13:58 |
 
|
|
|
|
15.11.2020, 15:38
Сообщение
#4162
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
|
 
|
|
15.11.2020, 16:27
Сообщение
#4163
|
|
Мастер Игры Репутация: 104 Группа: Участник Сообщений: 1331 Регистрация: 08.08.2018 |
А теперь вопрос, как изменить шейдер чтобы корректно работали карты нормалей содержащие только два канала для осей x и y? Ось z нужно восстановить, только как? Просто. Использовать алгоритм от iOrange: xy2xyz.cs (плагин для CodeLab Paint.NET) Код // Name: xy2xyz // Submenu: // Author: iOrange // Title: // Version: 0.1 // Desc: // Keywords: // URL: // Help: float Clamp(float v, float a, float b) { return Math.Min(b, Math.Max(a, v)); } void Render(Surface dst, Surface src, Rectangle rect) { ColorBgra srcPixel, dstPixel = new ColorBgra(); dstPixel.A = 255; for (int y = rect.Top; y < rect.Bottom; ++y) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; ++x) { srcPixel = src[x, y]; float nx = (float)srcPixel.R / 127.5f - 1.0f; float ny = (float)srcPixel.G / 127.5f - 1.0f; float nz = (float)Math.Sqrt(Clamp(1.0f - (nx * nx + ny * ny), 0.0f, 1.0f)); dstPixel.R = srcPixel.R; dstPixel.G = srcPixel.G; dstPixel.B = (byte)Clamp(nz * 127.5f + 127.5f, 0.0f, 255.0f); dst[x, y] = dstPixel; } } } Сам алгоритм: Код float nx = (float)srcPixel.R / 127.5f - 1.0f; // Конвертировать R канал (0...255) в X (-1...+1) float ny = (float)srcPixel.G / 127.5f - 1.0f; // Конвертировать G канал (0...255) в Y (-1...+1) float nz = (float)Math.Sqrt(Clamp(1.0f - (nx * nx + ny * ny), 0.0f, 1.0f)); // Расчёт Z dstPixel.R = srcPixel.R; // Без изменении dstPixel.G = srcPixel.G; // Без изменении dstPixel.B = (byte)Clamp(nz * 127.5f + 127.5f, 0.0f, 255.0f); // Конвертировать Z (0...1) в B канал (0...255) Есть 2 варианта: 1. Можно хранить X в альфа канале, а Y на месте в зелёном канале, так как при сохранении DXT5 (BC3) в зелёном канале практический нет потерь, а альфа канал остается без изменении. Z и Height Map восстанавливать в шейдере из X и Y, а Specular Map на месте в красном канале. Тогда не будет нужды в bump#. 2. Лучше хранить текстуры в формате BC7, тогда не нужен расчёт в шейдерах и bump#. BC7 выигрывает по качеству DXT5 (BC3) при том же размере. |
 
|
|
15.11.2020, 16:35
Сообщение
#4164
|
|
Почти Игрок Репутация: 0 Группа: Участник Сообщений: 16 Награды: 1 Регистрация: 24.02.2016 |
|
 
|
|
15.11.2020, 18:19
Сообщение
#4165
|
|
Почти Игрок Репутация: 0 Группа: Участник Сообщений: 16 Награды: 1 Регистрация: 24.02.2016 |
|
 
|
|
16.11.2020, 07:51
Сообщение
#4166
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
|
 
|
|
16.11.2020, 07:59
Сообщение
#4167
|
|
Мастер Игры Репутация: 104 Группа: Участник Сообщений: 1331 Регистрация: 08.08.2018 |
|
 
|
|
16.11.2020, 08:04
Сообщение
#4168
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
xrModder, зачётно. А я то всё башку ломаю, почему старый скрипт не работает.
|
 
|
|
16.11.2020, 11:47
Сообщение
#4169
|
|
Мастер Игры Репутация: 104 Группа: Участник Сообщений: 1331 Регистрация: 08.08.2018 |
|
 
|
|
16.11.2020, 12:49
Сообщение
#4170
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
xrModder, блин, если честно, то лень было напрягать мозги. Я когда анализирую код, то у меня кал сохнет от нагрева мозгов.
Уже устал код ковырять, кстати вот все что наворотил про ЧН Весь код альфа, бета, но ни как не релиз. Этот код можно лишь посмотреть и удалить и еще можно отправить в архив, если релизные сорцы потеряются. Релизные сорцы уже были слиты ранее в других темах. Надеюсь, что когда нибудь разрешать делать авторские проекты на x-ray, то тогда вернусь еще может быть. Вчерась оценил оптимизацию Юнити на своём древнем железе, умерло оно от леса 100 на 100 метров. А всё хаим x-ray, да уж. Но если отключить все навороты рендера в Юнити, то она еще и летает по сравнению с UE4, при примерных картинках. Сообщение отредактировал Diesel - 16.11.2020, 13:31 |
 
|
|
03.12.2020, 18:33
Сообщение
#4171
|
|
Почти Игрок Репутация: 6 Группа: Участник Сообщений: 15 Регистрация: 29.09.2019 |
А кто-нибудь с PBR в жалкере знаком, работал? Не получится - чёрт с ним, гори оно синим пламенем, т.к. в текущей реализации оно уступает обычному глоссу и для финального качества всё равно не годится, только память выжирает. Работал. Ну типо как он может быть хуже ориг модели освещения при хорошей реализации и правильном контенте. Тем более надо ж умудрится сделать так что и память выжирает, там по факту немного оригинальные строки изменить и пару функций приляпать, тем более что часть физ корректного(ну почти) IBL в сталкере и так есть. А если ещё немного переделать нормал маппинг и исключить карты ошибок то и дополнительных текстур подгружать не придётся. В итоге одни плюсы, минус только в создании и поиска контента. Так то конечно оптимизаций можно много провести, для ТЧ и других Р2 допустим half оптимизации, BRDF не нужно в рилтайме калькулировать, достаточно просто один раз разработчику запустить локацию с контентом и сделать D3DXSaveTextureToFile, а дальше использовать эту текстуру как 2д семплер для выборки, либо юзать апроксимацию для мобилок, F0 и карты правильно упаковать в деферринг и так далее. Сообщение отредактировал BD194 - 03.12.2020, 18:47 |
 
|
|
03.12.2020, 18:55
Сообщение
#4172
|
|
Почти Игрок Репутация: 6 Группа: Участник Сообщений: 15 Регистрация: 29.09.2019 |
Ах да, ещё товарищ Хозар поделился довольно интересным способом обойти мип мапы в скайдоме.
Сам лайфак таков: Ориг строки IBL Код refl = texCUBElod(s_cubemap,float4(refl_vec,roughness*MAX_REFL_LOD)); Лайфак Код refl_vec = lerp(refl_vec,N,roughness); refl = texCUBE(s_cubemap,refl_vec); Смекаете? Это даже немного гениально. По сути получаем выигрыш в весе текстуры, ибо не нужно генерировать мип мапы. |
 
|
|
07.12.2020, 11:03
Сообщение
#4173
|
|
Мастер Игры Репутация: 248 Куратор темы Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
Ах да, ещё товарищ Хозар поделился довольно интересным способом обойти мип мапы в скайдоме. Сам лайфак таков: Ориг строки IBL CODE refl_vec = float4( refl_vec, roughness * MAX_REFL_LOD ); refl = texCUBElod( s_cubemap, refl_vec ); Лайфак CODE refl_vec = lerp( refl_vec, N, roughness ); refl = texCUBE( s_cubemap, refl_vec ); Смекаете? Это даже немного гениально. По сути получаем выигрыш в весе текстуры, ибо не нужно генерировать мип мапы. а песку в картинку мы таким способом не натащим (артефактов при удалении от камеры не-мипмапленной текстуры)? я думаю с нынешними видеоадаптерами, в которых пару гиг видеопамяти - норма жизни, это не так уж критично. BRDF не нужно в рилтайме калькулировать, достаточно просто один раз разработчику запустить локацию с контентом и сделать D3DXSaveTextureToFile, а дальше использовать эту текстуру как 2д семплер для выборки, либо юзать апроксимацию для мобилок Второй вариант точно мимо, если уж делать оптимизации с ухудшением картинки то проще тогда остаться на р1. а вот с первым вариантом - можно поподробнее, в плане запекания брдф в текстуры? особенно интересно как это себя поведет при изменении погоды и времени суток. Насколько я знаю запекание освещения в текстуры было в р1, и да, р1 был быстрым, но ценой невозможности изменения положения солнца на небосводе. Сообщение отредактировал cjayho - 07.12.2020, 11:04 -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
07.12.2020, 11:13
Сообщение
#4174
|
|
Босс Репутация: 447 Группа: Участник Сообщений: 4295 Награды: 6 Регистрация: 07.06.2008 |
Насколько я знаю запекание освещения в текстуры было в р1 Странно, что ты забыл про это же в р2. Только там не запекается прямой свет от солнца и других динамических светильников. Остальное печётся, в полный рост.-------------------- ...Где каждый в душе великий Кобзон,
А на деле банальный Сид Вишес... Я плюс... Потому что я плюс. (с) Дрянь Тань Ян из провинции Гас Коу Ань. Никакой справедливости нет, все законы работают не правильно, месть разрушительна и бесперспективна, правда у каждого своя, разум вообще больной. Остаётся жить любовью? Это был риторический вопрос. |
 
|
|
07.12.2020, 11:17
Сообщение
#4175
|
|
Почти Игрок Репутация: 6 Группа: Участник Сообщений: 15 Регистрация: 29.09.2019 |
особенно интересно как это себя поведет при изменении погоды и времени суток. Останется как есть, на расчёт брдф используются другие параметры(шероховатость материала и произведение NdotV). Второй вариант точно мимо Я бы так не спешил, тестировали все три варианта, все выдают хороший результат. я думаю с нынешними видеоадаптерами, в которых пару гиг видеопамяти Для меня лайфхак подходит, ибо компуктер не огонь. sergy172, На р2 из запечёного используется только индирект осещение и материал буфер для сан статика. |
 
|
|
07.12.2020, 13:58
Сообщение
#4176
|
|
Почти Игроман Репутация: 42 Группа: Участник Сообщений: 626 Награды: 1 Регистрация: 10.12.2015 |
а песку в картинку мы таким способом не натащим Ой и натащим, способ не из новых. Дык еще и возможны мерцания на Сталкере. -------------------- |
 
|
|
07.12.2020, 21:48
Сообщение
#4177
|
|
Босс Репутация: 447 Группа: Участник Сообщений: 4295 Награды: 6 Регистрация: 07.06.2008 |
На р2 из запечёного используется только индирект осещение А его мало что ли? Это и эмбиент оклюжен с рассеянной светотенью под козырьками крышь, подоконников и помещений, и имитация переотражения от солнца, как и на р1, добавлением источника, принимающего его цвет и яркость.
Сообщение отредактировал sergy172 - 07.12.2020, 21:49 -------------------- ...Где каждый в душе великий Кобзон,
А на деле банальный Сид Вишес... Я плюс... Потому что я плюс. (с) Дрянь Тань Ян из провинции Гас Коу Ань. Никакой справедливости нет, все законы работают не правильно, месть разрушительна и бесперспективна, правда у каждого своя, разум вообще больной. Остаётся жить любовью? Это был риторический вопрос. |
 
|
|
08.12.2020, 13:39
Сообщение
#4178
|
|
Почти Игрок Репутация: 3 Группа: Участник Сообщений: 21 Регистрация: 18.06.2017 |
Ну типо как он может быть хуже ориг модели освещения при хорошей реализации и правильном контенте. Тем более надо ж умудрится сделать так что и память выжирает, там по факту немного оригинальные строки изменить и пару функций приляпать, тем более что часть физ корректного(ну почти) IBL в сталкере и так есть. Хорошо так говорить, когда уже всё знаешь и заведение PBR для тебя дело "в пару строк". А когда часами долбишься головой об стену, почему у скайбоксов мип-уровни не считываются, а дело оказывается в приписке _clf к сэмплеру - это совсем другое. Я не строю из себя эксперта, с графикой мне пару лет назад пришлось начать работать фактически с нуля, без каких-либо базовых знаний и представлений, как оно вообще функционирует. Не сказать, что я особо далеко продвинулся, но хотя б уже чуть дальше портирования готовых шейдеров от sweetfx. Потому да, приляпать PBR, чтоб выглядел не хуже стандартного рендера - лично для меня очень серьёзная задача. А по поводу "выжирания памяти" - я пошёл по пути подключения новой 4х-канальной текстуры, а не перетасовки старых в попытках впихнуть карты АО и Metalness. В принципе, пока что-то, но всё же получается. Для базовых текстур, если не подключена pbr-карта, для раффа используется обратная глосса, а для металличности - значение xmaterial. Есть проблема с разделением текстур на PBR и не-PBR. По-хорошему для этого нужен новый флаг в .thm, но для этого придётся править если не SDK, то сторонний thm-редактор. На данный момент использую флаг параллакса. Есть проблема со скайбоксами, большая часть мне доступных использует рисованный горизонт, который даже на последнем, 10 мип-уровне отчётливо виден даже на 10% интенсивности отражения. Ну и, наконец, остаются проблемы с хеми. IBL предполагает использование готовых карт окружения, да ещё и в HDR, а у меня в распоряжении только скайбоксы и смоллскаи. В итоге материалы в тени остаются совершенно матовыми, как правильно им считать спекуляр - не понимаю, использую костыли. Я то прекрасно понимаю, что взялся за то, в чём практически не разбираюсь. Но ничего не делать и ждать, пока кто-то это сделает за тебя - тоже такой себе вариант. А ещё большое спасибо Hozar_2002 за подсказку с бликом. Вроде такая банальщина - цвет солнца подмешивать, а упустил. В оригинальной ПЫСовской lmodel.h в plight_infinity() цвет солнца тоже не добавлялся, что интересно. |
 
|
|
24.12.2020, 23:25
Сообщение
#4179
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
А никто не фиксил отрисовку воды в тумане? Чернеет.
-------------------- |
 
|
|
24.12.2020, 23:27
Сообщение
#4180
|
|
Продвинутый геймер Репутация: 36 Группа: Участник Сообщений: 267 Награды: 3 Регистрация: 09.03.2013 |
А никто не фиксил отрисовку воды в тумане? Чернеет. SkyLoader фиксил. Поищи тут: -------------------- OpenXRay – Ориентир на новое, с памятью о старом. © Collector
|
 
|
|
24.12.2020, 23:59
Сообщение
#4181
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Xottab_DUTY, судя по всему это
Сообщение отредактировал RayTwitty - 25.12.2020, 00:03 -------------------- |
 
|
|
Текстовая версия | Сейчас: 23.05.2024, 17:44 |