Cornholio 58 Опубликовано 4 Октября 2020 Играю в stalker anomaly, решил покрутить графику. Но в процессе разбора шейдеров выяснил, что блум не создается или где-то в процессе умножается на 0. Кто разбирается в пайплайне сталкера. Мне надо понять на каком моменте он (блум) генерируется, в каком шейдере на это отдается комманда, сколько проходов и куда текстура блума пишется. Заранее спасибо! оказывается блум включается, если в консоли r2_tonemap ON вот кому бы в голову такое пришло? tonemap - это функция сжатия HDR даты в LDR диапазон, который может вывести средний монитор. Нашел блум, ответ уже не нужен. Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 14 Декабря 2020 (изменено) процедурное небо (не требует текстур, солнце подсвечивает облака, облака двигаются туман, заполняющий низины, в который можно спустится (его так же подсвечивает солнце) а, ну и псевдо-HDR рендеринг Изменено 14 Декабря 2020 пользователем Cornholio 9 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 19 Декабря 2020 (изменено) 7 часов назад, 2clip сказал: Очень круто. Это под оригинал ЗП реализовано? Работает только на Р2? нет, это все делается на Anomaly (их разраб внёс пару правок в движок, чтобы он скушал мои шейдеры) В аномалии только Р2, стараюсь по максимуму все хвосты от статики вырезать - имхо нет смысла её поддерживать в 2020. К сожалению прогресс идет туго, сложно без понимания движка вкручивать все это. из свежих приколюх: debug вид "эффекта бликов в линзах объектива" (для скринодрочества круто, а вот при игре - я б выключал) так это выглядит в игре (специально не сильно их выделяю, все хорошо в меру) самая засада - что под новую обработку света и эффекты надо и настройки погоды переделывать, считай с нуля. Т.е. это не как в магазине - просто добавил "товар" в корзину. Изменено 19 Декабря 2020 пользователем Cornholio 1 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 16 Апреля 2021 Screen Space Contact Shadows raw без наложение и смешивание с обычными тенями и моделью освещения Видео в движении https://www.youtube.com/watch?v=5CronUii8_4 Блум и постобработка тут без сравнения, потому что надо частично менять конфиги погоды, чтобы показать до. Но думаю многие примерно знают, как выглядит сток Аномали. Никакого рейшейда - все встроенно в движок и относительно неплохо оптимизировано В процессе работа с водой не думаю что это сильно отличается по качеству от текущей воды в xray - просто чуть чуть иначе считается переход от "прозрачности к отражению" в плане просто заменить на Screen Space Refection 3 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 16 Апреля 2021 спасибо! я сейчас вот это читаю и осмысливаю http://remi-genin.fr/blog/screen-space-plane-indexed-reflection-in-ghost-recon-wildlands/ вроде идея похожа, просто подменю на тот самый перевёрнутый бекбуфер, но с искажением от проекции Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 27 Апреля 2021 25.04.2021 в 12:42, Holy Biblie сказал(а): Здравствуйте. Перекинул шейдер models_lfo_light_dot_weapons (динамический коллиматор) из аномали на сталкер зп, подключил к модельке и словил вылет с этим еррором: ! error: (18): error X3004: undeclared identifier 'screen_res' Как я понимаю - не хватает чего-то в двигле, и без ковыряний в нем - метку, двигающуюся за центром экрана, не создать? Попробуй в файле шейдера сделать замену "screen_res" на "pos_decompression_params2" Только учти, это векторные величины, они как правило пишутся так "pos_decompression_params.xy или screen_res.zw" - не сотри составляющие случайно. Я пока этим развлекался 2 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 10 Мая 2021 08.05.2021 в 21:03, BOPOHua сказал(а): Добрый вечер! Есть ли возможность уменьшить колыхание (шатание) травы? Из за большого количества ее на экране - в глазах рябит. И еще можно ли ее заставить клонится в одном направлении имитируя направление ветра ? Нашел вот такое видео Я не знаю способа уменьшить "волны" травы без залезания в сами шейдеры (по крайней мере я в консольных командах не видел ничего, что дало бы надежду) Поскольку я сам все свои эксперименты провожу на Аномалии, то могу только говорить на её примере (ванильный рендер ЗП хоть и является основой, но иногда может отличаться) я не уверен по этому методу, так как замерить "колыхания травы" сложно, а мой глаз не замечал каких-то проблем не гарантирую, что тебе поможет, но (!!) попробуй следующее: найди свою gamedata/shaders/папку используемого рендера (r1, r2, r3)/shared открой блокнотом файл common.h найди функцию calc_cyclic float calc_cyclic (float x) { float phase = 1.0/(2.0*3.141592653589f); float sqrt2 = 1.0;//1.4142136f; измени тут на 1.0 float sqrt2m2 = 2.0;//2.8284271f; измени тут на 2.0 float f = sqrt2m2*frac(x)-sqrt2; return f*f - 0.5; // [-1 .. +1] // а тут была 1.0, замени на 0.5 } по идее это в 2 раза уменьшит "псевдо-синусоиду" по которой считается искажение для травы что касается видоса от LV - то этого скорее всего нет в твоей версии Сталкера, это его эксперименты с искажениями PS я продолжил бороться с облаками: и пытаюсь сделать свое АО с блекджеком.. (ну вы поняли) на скрине нет фильтрации, её еще не придумал (не прочитал - как правильно делать) И я тоже задам вопрос (вдруг тут кто знает) Для АО хорошо бы сделать downscale всего Gbuffer Вроде я видел в рендере что-то связанное с этим делом в фазе AO, но я все свои эксперименты веду на движке аномалии, и хрен его знает - где и как там постарались моддеры до меня (например, я обнаружил что отдельный пасс для облаков просто был выключен) Мне надо сделать, причем довольно экономным способом, Gbuffer в половинном разрешении, желательно с небольшим блюром (шириной 1 пиксель, чтобы уменьшить разницу между увеличившимися в размере текселями) Идеи? 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 8 Июня 2021 (изменено) 7 часов назад, Nestandart_5443 сказал(а): Заинтересовался, есть ли возможность создать новый шейдер прозрачности или отражения. Возможно всё. Вопрос только в постановке задачи и времени-сложности реализации. А раз ты сам в шейдерах ноль, то не знаю - как именно ты собрался это делать. Как мне говорил LV можно делать индивидуальные шейдеры под определенный mat ID, например, так реализован светящийся экран PDA в модах, где есть "физический" PDA. К сожалению деталей я не знаю, меня мало интересовали "частные случаи" я больше работаю с универсальными подходами. Пример "отложенного" шедера для npc model_npc.s function normal(shader, t_base, t_second, t_detail) shader:begin("deferred_npc","deferred_npc") : fog (false) shader:dx10stencil(true, cmp_func.always, 255 , 127, stencil_op.keep, stencil_op.replace, stencil_op.keep) shader:dx10stencil_ref(1) shader:dx10texture("s_base", t_base) shader:dx10texture("s_bump", t_base.."_bump") shader:dx10texture("s_bumpX", t_base.."_bump#") shader:dx10sampler("smp_base") end deffered_npc.vs #include "common.h" #include "skin.h" v2p_bumped _main( v_model I ) { v2p_bumped O; //Hpos and texcoord O.hpos = mul(m_WVP, I.P); O.tcdh = float4(I.tc.xyyy); //Hemi float3 Nw = mul((float3x3)m_W, I.N.xyz); float3 hc_pos = (float3)hemi_cube_pos_faces; float3 hc_neg = (float3)hemi_cube_neg_faces; float3 hc_mixed = (Nw < 0) ? hc_neg : hc_pos; float hemi_val = dot( hc_mixed, abs(Nw) ); hemi_val = saturate(hemi_val); //TBN float3 N = I.N; float3 T = I.T; T = normalize(T - dot(T,N) * N); float3 B = cross(N,T); float3x3 xform = mul((float3x3)m_WV, float3x3( 2*T.x,2*B.x,2*N.x, 2*T.y,2*B.y,2*N.y, 2*T.z,2*B.z,2*N.z )); // Feed this transform to pixel shader O.M1 = xform[0]; O.M2 = xform[1]; O.M3 = xform[2]; //Position float3 Pe = mul(m_WV, I.P); O.position = float4(Pe, hemi_val); //Use L_material.x for old behaviour; return O; } ///////////////////////////////////////////////////////////////////////// #ifdef SKIN_NONE v2p_bumped main(v_model v) { return _main(v); } #endif #ifdef SKIN_0 v2p_bumped main(v_model_skinned_0 v) { return _main(skinning_0(v)); } #endif #ifdef SKIN_1 v2p_bumped main(v_model_skinned_1 v) { return _main(skinning_1(v)); } #endif #ifdef SKIN_2 v2p_bumped main(v_model_skinned_2 v) { return _main(skinning_2(v)); } #endif #ifdef SKIN_3 v2p_bumped main(v_model_skinned_3 v) { return _main(skinning_3(v)); } #endif #ifdef SKIN_4 v2p_bumped main(v_model_skinned_4 v) { return _main(skinning_4(v)); } #endif FXVS; аналогичным способом можно "переписать" шейдеры для конкретных моделей/материалов Что касается кода выше - я сам его не проверял, что именно он делает. Это просто пример работы подобного подхода для "override" материала. Скорее всего он не дружит с тенями (т.е если ты будешь делать так новую геометрию - она не появится в shadowmap) Изменено 8 Июня 2021 пользователем Cornholio 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 2 Июля 2021 хоть я это уже показывал в другом месте, но вдруг местной публике будет интересно: новая модель освещения - авто lvunter, чуть чуть подпилена для демонстрации мной. Попытка в полный PBR (понимаю - глупо пытаться на сток ассетах, но хоть попытались) много косяков, но работа идет 3 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 20 Июля 2021 14.07.2021 в 18:16, Manche сказал: Какой шейдер отвечает за тень от солнца в ЧН ? Беда с тенями. не совсем понимаю - что именно ты считаешь за беду. Но если речь идет о "фильтрации" теней - то тебе в shadow.h 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 25 Июля 2021 @Шипэтя в консоли комманда r2_sun_lumscale для нее возможны значения от 0 до 3, попробуй что-то в районе 1.0 её так же дополняют r2_sun_lumscale_amb r2_sun_lumscale_hemi с аналогичным диапазоном значений - попробуй уменьшать/подогнать под себя. 1 2 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 4 Сентября 2021 (изменено) 02.09.2021 в 12:09, Lagrange сказал: Значит, вопрос такой, есть ли у кого - нибудь готовый PBR типа metall/roughness для сталкача, желательно ЗП, но, на крайний, можно и ЧН. На обычное предоставление не рассчитываю, так что могу договориться за плату, в разумных пределах, конечно, не 150$(~11000 рублей) как Lvutner. У самого пока знаний не хватает для такой работы, так что решил обратиться. к сожалению это немного расплывчатая формулировка. В рендере ЗП в общем-то есть система материалов и некое приближение к физическому отображению свойств света на них - считай уже готово))) Если же речь про что-то похожее на то что показывал LV или я - то это чуть более сложная модификация и требует редактирования не только шейдеров, но и обвязки на стороне движка. Готового пакета у меня нет, к сожалению. А самое плохое - что для честного PBR надо перерисовывать все текстуры и менять некоторые моменты связанные с кол-вом "технических" текстур. Так-то все формулы для приближения к PBR есть в открытом доступе - читай статьи или просто выдирай код из Unreal, Unity, Filament Изменено 4 Сентября 2021 пользователем Cornholio 2 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 2 Октября 2021 вопрос я немного глупый и не очень понимаю - почему в сталкере используются другой класс для хранения буффера - rendertarget. Я не понимаю, почему сначала создается полноценный буффер для глубины/стенсил, а затем его перезаписывают уже виде компонента "позиции в экранном пр-ве" . чисто, чтобы поиметь линейную глубину, вместо z/w ? И опять же вопрос - насколько затратны эти render target? Просто сжатые данные gbuffer это конечно здорово, но у меня подозрение, что запаковка и последующая распаковка в каждом пассе постпроцесса съедают больше производительности видеокарты. если предположить, что для gbuffer использовать 3 64битных полноэкранных текстуры, то для fullHD это всего около 48Мбайт памяти на кадр. А вот перекодировать нормали каждый раз (особенно если хочется рейтрейсеры для АО/SSR/GI/FOG) занимает уже заметное кол-во операций на кадр. Я не программист, я так - любитель, но вдруг кто-то разбирается - вчем подвох? @_ХоЗаР_ вдруг знаешь ^ Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 3 Октября 2021 @_ХоЗаР_ я, пожалуй верну "толстый gbuffer" заодно появится место под roughness ну и другие свойства материала (может даже светимость, чем чорт не шутит, места-то вагон теперь) вот правда проверить - насколько отличается фпс довольно сложно... но я расскажу, если интересно будет 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 5 Октября 2021 портировал в аномаль GTAO ( по этой статье https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW VERSION_COLOR.pdf) без АО (вообще без какого-либо) GTAO пока много багов, надо убрать гало, следы и добавить оптимизации (хотя уже при 16 семплах выполняется за 4-5мс в 1080р на видеокарте 1060) 4 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 21 Декабря 2021 ранний прототип screen space global illumination, пока сделан отдельно на основе GTAO, в планах попробовать его перенести в xray 3 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 4 Января 2022 штука в том, что screen_res и pos_decompression_params - регистры, которые передаются от движка в шейдеры. В разных версиях движка могут называться по разному, но если просто объявить, то вполне может оказаться, что там ничего нет и шейдер все равно не работает (пусть и не дает вылета, ведь компайл проходит) @Ghilli 1 Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 5 Января 2022 (изменено) @Ghilli не знаю - это скорее вопрос к автору мода. Если б мне надо было делать прицелы - я бы сделал иначе (имхо темные луны плохо для восприятия игрока) лучше всего копировать подход армы, старых call of duty и battlefield - там куча бывалых дизайнеров не просто так пришли к тому виду прицелов, что мы видим в их играх (уверен есть даже презентации и методички по этому процессу в интернете) само собой к модам у меня нет претензий - пусть делают, даже если я считаю это не правильным (я охотно пересмотрю свое мнение и признаюсь неправым - когда кто-то круто реализует такой псевдо 3д прицел), но если серьёзно - обычный модификатор FoV и "маска" прицела - вполне хороший вариант: не ест фпс на второй вьюпорт, не загрязняет обзор игроку ненужными эффектами, а уж сделать прицеливание реалистичным (ну там милдоты, прицельные линии и поправки на дальность, возвышенность) никак точно не мешает. Изменено 5 Января 2022 пользователем Cornholio Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 9 Января 2022 @Ghilli к сожалению я не могу подсказать Поделиться этим сообщением Ссылка на сообщение
Cornholio 58 Опубликовано 25 Января 2022 (изменено) Немного покажу свой "доработанный" АО (сейчас делается для проекта и потому это его эксклюзив на данный момент, но и модифицированная версия будет в свободном доступе, первую версию со скинов выше в теме, можно найти в дискорде по моддингу аномалии, если будет запрос, то могу и сюда залить) Вот как выглядит "быстрое" время на исполнение, в профайлере renderDoc: Вот так выглядит идеал (не очень пригодно для игры в реальном времени, но все равно возможно - время на исполнение порядка 9мс) видно, что быстрый алгоритм вполне неплохо приближается к идеалу (пусть и с меньшим контрастом) Еще есть пути для оптимизации, т.е я ожидаю, что спустя какое время мы сможем за 1мс выдавать еще лучшее качество (ну или ускорить его еще раза в 2) на скрине с счетчиками профайлера - время в милисекундах, а цена на исполнение всего алгоритма находится в строке AmbientOcclusion, он имеет 3 пасса: сам АО и 2 прохода фильтром (просто случайно забыл выделение снять со второго пасса фильтра) Изменено 25 Января 2022 пользователем Cornholio 4 Поделиться этим сообщением Ссылка на сообщение