Графика, рендер, шейдеры |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Графика, рендер, шейдеры |
17.08.2010, 10:38
Сообщение
#3441
|
|
Игроман Репутация: 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 |
 
|
|
|
|
26.01.2020, 01:30
Сообщение
#3442
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Нашел тут у себя в закромах несколько эффектов постобработки.
Стилизация картинки Battlefield 3 Код half3 vLum = half3(0.33, 0.59, 0.11); // brightness half3 ColorGradingParams2 = half3(0.4980392, 0.6745098, 0.7882352); // color half fLum = dot(img.xyz, vLum); half3 cMin = 0; half3 cMed = ColorGradingParams2; half3 cMax = 1.0; half3 cColor = lerp( cMin, cMed, saturate(fLum * 2.0) ); cColor = lerp( cColor, cMax, saturate(fLum - 0.5) * 2.0 ); img.xyz = lerp( img.xyz, cColor.xyz, saturate(fLum * 2.0) ); Насколько я помню, цветокоррекция была сделана K.D. и я получил ее задолго до выхода OGSE. Дальше я просто стилизовал ее на свой вкус. Скриншоты Фильтр контраста Код float3 highcontrast = img.xyz*img.xyz; img.xyz = lerp(img.xyz, highcontrast, CONTRAST_FILTER); Тут всё просто и понятно. CONTRAST_FILTER - это дефайн с float-числом. Можете определить его или вбить константу прямо в код. Автор тоже K.D. Всё это добро активируется в файле r2\combine_2_naa.ps, код (по отдельности или всё вместе) нужно засунуть над Код return combine_bloom (img,bloom); З.Ы. Копирасты наверняка нагуглят эти коды где-нибудь в инете и начнут писать мол K.D. тут не причем. Сразу скажу, что мне пофигу - для меня автор в данном случае тот, кто код предоставил, искать первоисточник предоставлю задротам Сообщение отредактировал RayTwitty - 26.01.2020, 01:36 -------------------- |
 
|
|
26.01.2020, 02:06
Сообщение
#3443
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Группа: Припаркованный аккаунт Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Тут у них вроде как отражения получились на VCT Так тут сцена 5х5 метров, воксели крохотные. Синтетика. На реальных уровнях у тебя размер вокселя будет такой, что эти отражения ты не захочешь Ну для высокого рафнесс - там да, пойдет, но дешевле будет env probes самплить, имхо. как они смогли четкие отражения на voxel raytracing получить Потому что у них там не VCT. Там такой же стохастический алгоритм как и в Battlefield 5, только на компьютах. Отлично видно на крутящихся зеркалах. Тот же BVH, та же трассировка. Все что дает тебе RTX - это удобный API, callable shaders и хардварный интерсектор -------------------- Hello worlds!
|
 
|
|
27.01.2020, 18:17
Сообщение
#3444
|
|
Мастер Игры Репутация: 248 Куратор темы Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
Нашел тут у себя в закромах несколько эффектов постобработки. <---> З.Ы. Копирасты наверняка нагуглят эти коды где-нибудь в инете и начнут писать мол K.D. тут не причем. Сразу скажу, что мне пофигу - для меня автор в данном случае тот, кто код предоставил, искать первоисточник предоставлю задротам Хреново - писать шейдеры с помощью контрол-це-контрол-вэ, совершенно не понимая о чем вообще идет речь. CODE half3 vLum = half3(0.33, 0.59, 0.11); // brightness // cjayho: LUMINANCE_VECTOR из common.h юзать несудьба? half3 ColorGradingParams2 = half3(0.4980392, 0.6745098, 0.7882352); // color half fLum = dot(img.xyz, vLum); half3 cMin = 0; // cjayho: используется ниже только один раз half3 cMed = ColorGradingParams2; // cjayho: что за бред? half3 cMax = 1.0; // cjayho: используется ниже только раз // cjayho: три лерпа ниже это слижком злобное колдунство, особенно первый и третий, но фиг с ним, он художник он так видит half3 cColor = lerp( cMin, cMed, saturate(fLum * 2.0) ); cColor = lerp( cColor, cMax, saturate(fLum - 0.5) * 2.0 ); img.xyz = lerp( img.xyz, cColor.xyz, saturate(fLum * 2.0) ); легким движением превращается в нечто более лаконичное без потери функционала: CODE half3 ColorGradingParams2 = half3(0.4980392f, 0.6745098f, 0.7882352f); // color half fLum = dot(img.xyz, LUMINANCE_VECTOR); half3 cColor = lerp( 0.f, ColorGradingParams2, saturate(fLum * 2.f) ); cColor = lerp( cColor, 1.f, saturate(fLum - .5f) * 2.f ); img.xyz = lerp( img.xyz, cColor.xyz, saturate(fLum * 2.f) ); ---- CODE float3 highcontrast = img.xyz*img.xyz; // cjayho: возводим цвет во вторую ступень img.xyz = lerp(img.xyz, highcontrast, CONTRAST_FILTER); // лерпим от первой до второй ступени один вопрос - зачем, если можно просто CODE img.xyz = pow( img.xyz, CONTRAST_FILTER+1.f );
Сообщение отредактировал cjayho - 27.01.2020, 18:20 -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
28.01.2020, 00:46
Сообщение
#3445
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
img.xyz*img.xyz быстрее чем pow.
Странность обнаружил, что SSLR на воде в отложенном режиме (отражения считаем через квад и карту нормалей воды) дает порядком больше фпс (общий на ~5% выше), чем если мы рассчитываем SSLR в форварде, т.е. сразу при редеринге воды. В последнем случае вода рендерится уже поверх остальной геометрии как непрозрачный объект и с принудительным ранним z-тестом, там по-любому овердро быть не может. Тогда почему, спрашивается? Единственное объяснение, что приходит мне на ум, так это то что овердро все равно где-то просачивается. Сообщение отредактировал Zagolski - 28.01.2020, 01:03 |
 
|
|
28.01.2020, 01:45
Сообщение
#3446
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Группа: Припаркованный аккаунт Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Единственное объяснение, что приходит мне на ум, так это то что овердро все равно где-то просачивается. Вода многополигональная? Если шейдер тяжелый - овершейд на гранях полигонов может сказаться. Собственно поэтому даже для полноэкранных эффектов все перешли на full-screen triangle вместо квада. -------------------- Hello worlds!
|
 
|
|
28.01.2020, 02:08
Сообщение
#3447
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Вода очень низкополигональная, овершейда какого-либо заметного там точно быть не может. А здесь аж на целых 5-6% разница в скорости, что непомерно много. И неясно, из-за чего. Такое впечатление, что ранний z-тест не до конца работает, хотя спецом [earlydepthstencil] включено. Может он на таких сверх огромных полигонах воды и не работает толком?
|
 
|
|
28.01.2020, 04:39
Сообщение
#3448
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Группа: Припаркованный аккаунт Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Вода очень низкополигональная, овершейда какого-либо заметного там точно быть не может Сетку бы увидеть -------------------- Hello worlds!
|
 
|
|
28.01.2020, 18:55
Сообщение
#3449
|
|
Мастер Игры Репутация: 248 Куратор темы Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
img.xyz*img.xyz быстрее чем pow. а если еще lerp-ом сверху шлифануть? -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
29.01.2020, 22:02
Сообщение
#3450
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
|
 
|
|
29.01.2020, 23:43
Сообщение
#3451
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
|
 
|
|
30.01.2020, 00:12
Сообщение
#3452
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Кстати интересно - если учесть что на Болотах вся вода всегда находится на одинаковой высоте, то в чём был смысл нарезать её на такие маленькие "бассейны".
Почему нельзя было сделать воду одной сплошной плоскостью под картой из двух треугольников? Догадки пока только две: 1) Такая огромная плоскость криво отрисовывается. 2) Чёткие границы нужны были для эффекты мягкой воды с пеной у берега, на плоскости их бы не смогли сделать. -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
30.01.2020, 00:19
Сообщение
#3453
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Группа: Припаркованный аккаунт Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
А так вода вот такая: Ужас-ужас, тут овершейд будет печальный. Куча длинных треугольников в которых от 30% до 50% (если не больше) групп отработает впустую. -------------------- Hello worlds!
|
 
|
|
30.01.2020, 00:45
Сообщение
#3454
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Кстати интересно - если учесть что на Болотах вся вода всегда находится на одинаковой высоте, то в чём был смысл нарезать её на такие маленькие "бассейны". Почему нельзя было сделать воду одной сплошной плоскостью под картой из двух треугольников? Догадки пока только две: 1) Такая огромная плоскость криво отрисовывается. 2) Чёткие границы нужны были для эффекты мягкой воды с пеной у берега, на плоскости их бы не смогли сделать. На счёт мягкой воды и пены, то это от краёв не зависит. Влияет губина подложки (дна). Если убрать днище, то вода вообще перестанет рендерится, так как надо. Как раз я и использовал когда то раньше в ЗП плоскость на всю локацию ( жрет фпс конечно, но не смертельно). И на счет двух треугольников - не получится вывести волны, рекомендуется делать квадраты 10-100 метров. И тут развертка не поможет. Там просчет от фейсов идёт. Сообщение отредактировал Дизель - 30.01.2020, 00:58 |
 
|
|
30.01.2020, 01:06
Сообщение
#3455
|
|
Почти Игроман Репутация: 42 Группа: Участник Сообщений: 626 Награды: 1 Регистрация: 10.12.2015 |
Shoкer,
совсем нежелательно запускать одни плоскости в другие. 1. нормально отрисовывается что за багавая вода? Это вместе с дном... Zagolski не отделил одно от другого. жрет фпс конечно, но не смертельно А смысл делать так, когда можно нормально смоделировать? Не так много вертексов на воду уходит. -------------------- |
 
|
|
30.01.2020, 01:12
Сообщение
#3456
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Shoкer, совсем нежелательно запускать одни плоскости в другие. 1. нормально отрисовывается что за багавая вода? Это вместе с дном... Zagolski не отделил одно от другого. жрет фпс конечно, но не смертельно А смысл делать так, когда можно нормально смоделировать? Не так много вертексов на воду уходит. Это статичная геометрия, там пофиг пересечение плоскостей. У пысов без пересечения в движке баги у воды, у берегов тёмные фейсы. Офигенно тёмные, причем не все, а те у которых нормаль улетела. А на полскости не будет такой каки. Не смоделируешь в Сталкере нормально воду. Уже 100 раз пробовал. Алгоритм запекания статики убогий, губит весь геом. Вообще воду можно было динамикой зафигачить, как в нормальных движках. |
 
|
|
30.01.2020, 02:01
Сообщение
#3457
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Это что за багавая вода? Это реально не оригинал. Не могут ПЫСы такой геом замутить. Да нет, это ванильная вода с болот (marsh). Почему нельзя было сделать воду одной сплошной плоскостью под картой из двух треугольников? Я тоже об этом думал. Скорее все дело в том, что вода рисуется с альфа-блендом как полупрозрачный объект и на ней наверняка не работает ранний z-test. И принудительно на ДХ9-10 его установить было нельзя. Поэтому могло такое быть, что пиксельный шейдер мог отрабатывать даже на воде перекрытой ландшафтом и это вылилось бы в мощный овердроу. А иначе я не вижу причин так изголяться с водой. Мягкость у берегов делается на основании высоты воды и высоты ландшафта, больше ни от чего не зависит. Мягкость можно и на воде из двух полигонов сделать. Кстати, надо будет попробовать воду из двух полигонов замутить и сравнить производительность. Да там и полигонаж сцены должен заметно снизиться. На всей локе болот вот она вода красава: Ужас-ужас, тут овершейд будет печальный. Куча длинных треугольников в которых от 30% до 50% (если не больше) групп отработает впустую. Да я тоже как всю модель воды увидел, так припупел. А вообще тест фпс проводился на том озерце, что я первый скрин выложил. А там в норме все. Это вместе с дном... Zagolski не отделил одно от другого. С каким дном? Дно - это ландшафт, он вообще к воде не имеет отношения. Тут на скринах чисто вода, модель воды. совсем нежелательно запускать одни плоскости в другие. Почему? У нас вода рендерится отдельно от ландшафта и после него. И на счет двух треугольников - не получится вывести волны, рекомендуется делать квадраты 10-100 метров. И тут развертка не поможет. Там просчет от фейсов идёт. Вот это вполне вероятно, но можно же волны (текстуру нормалей) наложить по типу детальной текстуры ландшафта. Да и вообще она там вроде как по дефолту замощена, так что должна и на двух полигонах работать. В любом случае эти два полика можно банально тесселировать на дх11. |
 
|
|
30.01.2020, 02:07
Сообщение
#3458
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Да и вообще она там вроде как по дефолту замощена, так что должна и на двух полигонах работать. В любом случае эти два полика можно банально тесселировать на дх11. Попробуй - угубишь всю акваторию. У тебя при треангуляции компилятором вылезит фейс во всю длину плоскости и ты его увидишь без бинокля, невооружённым глазом. |
 
|
|
30.01.2020, 02:12
Сообщение
#3459
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
По волнам вроде имеется ввиду не текстура, а то что фейсы воды двигаются вверх\вниз и вроде в стороны, подобно тому как деревья в игре качаются (это видно у берега, в ЗП точно). Этот эффект сделан в вертексном шейдере. Если вода будет всего из двух крупных фейсов, то эффект резко станет гипертрофирован и бросится в глаза => его придётся отключить.
Сообщение отредактировал Shoкer - 30.01.2020, 02:16 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
30.01.2020, 02:16
Сообщение
#3460
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Shoкer,
Да там глупый алгоритм, просто я упомянул фейсы, так как треангуляция в компиляторе, бывает губит развёртку, и некоторые фейсы тянут за собой волны на край локации или фейс явно выбивается из нормального рендера. Не, там фейсы не двигаются. Там двигается нормаль текстуры. И еще там имитируется движение полскости вверх-низ. Сообщение отредактировал Дизель - 30.01.2020, 02:19 |
 
|
|
30.01.2020, 02:19
Сообщение
#3461
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
С каким дном? Дно - это ландшафт, он вообще к воде не имеет отношения. Тут на скринах чисто вода, модель воды. Сейчас внимательно глянул, и верно, там еще впритык приклеена fake плоскость с радиоактивностью, я ее сначала не углядел. Вода - 12 500, fake - 10 000 полигонов. fake эта, как я понял, чтоб аи-сетка не создавалась на ней. Или для заторможенности/ радиоактивности, с другим материалом поверхности. Главное, что вода рендерится без этой штуковины. Сейчас отрезал, вот чистая вода: Дизель, А у тебя есть скрины/ видео посмотреть, где можно увидеть все косяки воды из двух треугольников? По волнам вроде имеется ввиду не текстура, а то что фейсы воды двигаются вверх\вниз и вроде в стороны, подобно тому как деревья в игре качаются (это видно у берега, в ЗП точно). Этот эффект сделан в вертексном шейдере. Если вода будет всего из двух крупных фейсов, то эффект резко станет гипертрофирован и бросится в глаза => его придётся отключить. Да, есть такое, что вода всей плоскостью вверх-вниз медленно движется и только. Думаю, без разницы, будь то два полигона или больше. Хотя конечно нужно все на практике смотреть. Сообщение отредактировал Zagolski - 30.01.2020, 02:46 |
 
|
|
Текстовая версия | Сейчас: 29.04.2024, 00:12 |