Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Графика, рендер, шейдеры
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91
cjayho
QUOTE (RayTwitty @ 16.09.2019, 15:57) *
На глаз, как будто бы берут пиксели с яркостью больше опред. значения, запоминают позицию в пространстве и потом еще несколько кадров рендерят, постепенно уменьшая прозрачность.


берут s_bloom и не чистят его каждый кадр, а вместо очистки применяют к нему значение_пикселя *= .2f;

Еще остались рудименты вроде rendertarget phase accumulator но он делает целое ничего.

А мне его восстанавливать влом. точнее влом разбираться в хитросплетениях говнокода в рендере. Потому что дописывание иксрея это постоянная попытка его обмануть так, чтоб он делал что хочешь ты, а не хочет он сам.
Zagolski
Цитата(cjayho @ 16.09.2019, 09:58) *
ShadowMapping не? При включении теней от травы появляются просто дикие лаги. Такое впечатление что оно отрисовывает тень для каждой отдельной травинки.
Имхо отключите вершинный шейдер качания травы и посмотрите, может в нем дело.

Для теней трава только повторно отрисовывается, причем без записи цвета. Будем считать, что тень от травы отключена, чтобы не вносить погрешности.
Качание у меня на скорость не влияет, к тому же качается только ближняя трава, на дальней это отключено (а у нас при увеличении дальности отрисовки травы добавляется только дальняя). Опять же трава низкополигональная, там вершин всего ничего обрабатывается, для современной видеокарты это пшик. Дипов тоже не особо много, трава пакетируется.
Я все же больше склоняюсь к филлрейту. Там же смотри: во-первых трава даблсайдовая, т.е. обрабатывается с обоих сторон полигона, а это двойная нагрузка. Плюс на траве альфа-тест, а это как минимум отключенный ранний z-тест. По идее на ней жуткий овердроу идет... Но опять же у нас отложенный рендер, а там только при заполнении g-buffer он идет, без особой нагрузки. Не должно быть сильного падения фпс от этого.
Diesel
cjayho,
Цитата(cjayho @ 16.09.2019, 11:58) *
Имхо отключите вершинный шейдер качания травы и посмотрите, может в нем дело.

Трава не шейдером качается. Там качается мешь, от линковки root онования статично, к вершине (забыл название).
RayTwitty
Цитата(Дизель @ 17.09.2019, 00:30) *
cjayho,
Цитата(cjayho @ 16.09.2019, 11:58) *
Имхо отключите вершинный шейдер качания травы и посмотрите, может в нем дело.

Трава не шейдером качается. Там качается мешь, от линковки root онования статично, к вершине (забыл название).
Цитата(Дизель @ 17.09.2019, 00:30) *
Трава не шейдером качается
Цитата(Дизель @ 17.09.2019, 00:30) *
Трава mr47_06.gif



Трава которую ты куришь, без всяких шейдеров качаться начнет. Может даже убежать в лес за хайрез текстурами.
Diesel
RayTwitty, biggrin.gif
iOrange
Цитата(Zagolski @ 16.09.2019, 23:19) *
трава даблсайдовая, т.е. обрабатывается с обоих сторон полигона, а это двойная нагрузка

Нет

А почему вместо гадания не глянуть кадр Nsight'ом или IGPA ?
Если сделаете капчу в Nsight я может тоже гляну.
Diesel
RayTwitty, вот это что? Кто тут качает траву? Трава?
CODE
void CDetailManager::hw_Render()
{
// Render-prepare
// Update timer
// Can't use RDEVICE.fTimeDelta since it is smoothed! Don't know why, but smoothed value looks more choppy!
float fDelta = Device.fTimeGlobal-m_global_time_old;
if ( (fDelta<0) || (fDelta>1)) fDelta = 0.03;
m_global_time_old = Device.fTimeGlobal;

m_time_rot_1 += (PI_MUL_2*fDelta/swing_current.rot1);
m_time_rot_2 += (PI_MUL_2*fDelta/swing_current.rot2);
m_time_pos += fDelta*swing_current.speed;

float tm_rot1 = (PI_MUL_2*Device.fTimeGlobal/swing_current.rot1); //Diesel new
float tm_rot2 = (PI_MUL_2*Device.fTimeGlobal/swing_current.rot2); //Diesel new
//float tm_rot1 = m_time_rot_1; //Diesel old
//float tm_rot2 = m_time_rot_2; //Diesel old

Fvector4 dir1,dir2;
dir1.set (_sin(tm_rot1),0,_cos(tm_rot1),0).normalize().mul(swing_current.amp1);
dir2.set (_sin(tm_rot2),0,_cos(tm_rot2),0).normalize().mul(swing_current.amp2);

// Setup geometry and DMA
RCache.set_Geometry (hw_Geom);

// Wave0
float scale = 1.f/float(quant);
Fvector4 wave;
wave.set (1.f/5.f, 1.f/7.f, 1.f/3.f, Device.fTimeGlobal*swing_current.speed); //Diesel new
//wave.set (1.f/5.f, 1.f/7.f, 1.f/3.f, m_time_pos); //Diesel old
RCache.set_c (&*hwc_consts, scale, scale, ps_r__Detail_l_aniso, ps_r__Detail_l_ambient); // consts
RCache.set_c (&*hwc_wave, wave.div(PI_MUL_2)); // wave
RCache.set_c (&*hwc_wind, dir1); // wind-dir
hw_Render_dump (&*hwc_array, 1, 0, c_hdr );

// Wave1
wave.set (1.f/3.f, 1.f/7.f, 1.f/5.f, Device.fTimeGlobal*swing_current.speed); //Diesel new
//wave.set (1.f/3.f, 1.f/7.f, 1.f/5.f, m_time_pos); //Diesel old
RCache.set_c (&*hwc_wave, wave.div(PI_MUL_2)); // wave
RCache.set_c (&*hwc_wind, dir2); // wind-dir
hw_Render_dump (&*hwc_array, 2, 0, c_hdr );

// Still
RCache.set_c (&*hwc_s_consts,scale, scale, scale, 1.f);
RCache.set_c (&*hwc_s_xform, Device.mFullTransform);
hw_Render_dump (&*hwc_s_array, 0, 1, c_hdr );
}


Вот это ты куришь малость... Хоть раз бы движок скомпилировал... А потом бы предлагал покурить. biggrin.gif
Это у вас в ТЧ шейдером однако, а у нас так как надо.
Это не шейдер MU, где листва и стволы шейдерно качаются. Тут действительно механически.
Это было сделано специально, так как ПЫСы ветер планировали делать, для раскачки травы.

Пойду курить, может шейдерно?
cjayho
QUOTE (Дизель @ 16.09.2019, 23:30) *
cjayho,
QUOTE (cjayho @ 16.09.2019, 11:58) *
Имхо отключите вершинный шейдер качания травы и посмотрите, может в нем дело.

Трава не шейдером качается. Там качается мешь, от линковки root онования статично, к вершине (забыл название).


В двигле здорового человека все качается шейдером detail_wave.
По поводу того что там в двиглах курильщиков я не знаю biggrin.gif
RayTwitty
Цитата(Дизель @ 17.09.2019, 01:45) *
Это было сделано специально, так как ПЫСы ветер планировали делать, для раскачки травы.

Ветер всегда был, кинь ящик в грави-аномалию и посмотри на траву.

Цитата(Дизель @ 17.09.2019, 01:45) *
Кто тут качает траву? Трава?

Судя по комментам, некий Diesel new biggrin.gif
cjayho
QUOTE (RayTwitty @ 17.09.2019, 14:29) *
QUOTE (Дизель @ 17.09.2019, 01:45) *
Кто тут качает траву? Трава?

Судя по комментам, некий Diesel new biggrin.gif


Я твой трава шатал и твое двигло обновлял biggrin.gif
Diesel
cjayho, дай посмотреть, может я себе перенесу твои правки. У тебя древняя версия. Я после scs 3.1 не скидывал в сеть.
cjayho
QUOTE (Дизель @ 17.09.2019, 18:29) *
cjayho, дай посмотреть, может я себе перенесу твои правки. У тебя древняя версия. Я после scs 3.1 не скидывал в сеть.


а, не, я ж шейдерщик, я двигло не ковыряю почти. То я так, прикалываюсь
Diesel
cjayho, подскажи название шейдера освещенности травы.
Не шейдер deffer_detail_s_flat - это качание травы однако. Там нет ни слова об освещении.
macron
Цитата(Дизель @ 20.09.2019, 18:13) *
подскажи название шейдера освещенности травы.

Может details\blend и details\set ?
Diesel
macron, да это оно. Там нет вывода в шейдеры, всё движком обрабатывается.
Zagolski
Параметры как качать траву передаются при рендере травы из движка (в hw_Render_dump). А шейдер вершинный уже оперирует вершинами на основе этих данных и качает. deffer_detail_s_flat - это без качания, deffer_detail_w_flat - качает.
Diesel
Вот прикольный рендер. Но это не х-рей.


Кстати, ССАО глючит, как и в Сталке. biggrin.gif
iOrange
Цитата(Дизель @ 24.09.2019, 19:33) *
Вот прикольный рендер

Ужасно черные тени. При таком ярком солнечном свете - там куча индиректа должно быть.
Diesel
iOrange, глянул там еще видео. Там Зона целиком есть, а рендер ужасный.

cjayho
QUOTE (Дизель @ 24.09.2019, 19:33) *
Вот прикольный рендер. Но это не х-рей.


Кстати, ССАО глючит, как и в Сталке. biggrin.gif


Как по мне даже сталкеровский и то лучше
guitarking123
Цитата(Дизель @ 24.09.2019, 22:33) *
Вот прикольный рендер. Но это не х-рей.


Кстати, ССАО глючит, как и в Сталке. biggrin.gif

За счёт освещения всё более мягкое и не такое угловатое как в х-рэй
Diesel
Сегодня один человек хвастал. Капли дождя делал он. Нормально


А вот еще и отражения типа пилит.
https://sun9-44.userapi.com/c850728/v850728...iLa2mHJbV3g.jpg

Вот Контакт. https://vk.com/mihan323

Я так понял, что он сам пытается что то делать.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

У Анонима вообще здравые отражения получились
https://www.amk-team.ru/forum/topic/12673-s...comment=1285663
Zagolski
Цитата(Дизель @ 29.09.2019, 03:31) *
Сегодня один человек хвастал. Капли дождя делал он. Нормально

Да, очень хороши. А по другой ссылке лужи отличные. Их бы совместить.
mihanizm
Цитата(Дизель @ 29.09.2019, 03:31) *
Капли дождя делал он

Нененене, я их перенес вместо обычных на намокании, а кто автор этих каплей я незнаю.
Zagolski
Цитата(mihanizm @ 29.09.2019, 08:18) *
я их перенес вместо обычных на намокании, а кто автор этих каплей я незнаю.

То есть ты просто текстуру капель заменил и капли стали такие? Поделишься текстуркой?
Sir Lancevrot
Цитата
Поделишься текстуркой?

эти капли генерируются с помощью шума в шейдере. Сама реализация взята с shadertoy (лично я брал оттуда, откуда у mihanizm имплементация капель - без понятия, но выглядят они точно так же, как и в шейдертой).
Собсна, Капли
Modera
Чё там у вас, кто-нибудь освещение партиклов на x-ray запилил уже?


И нормальное взаимодействие глоу с худом оружия.

Shoкer
> освещение партиклов на x-ray
Говорят если партиклы не прозрачные или просто с резкой (aref) прозрачностью, то они и в X-Ray освещаются\тени кидают. Кстати на видео из Метро именно вторые.

> И нормальное взаимодействие глоу с худом оружия.
В каких то версиях движка вроде правили, ломая что то другое laugh.gif.
Modera
Цитата(Shoкer @ 29.09.2019, 21:09) *
Говорят если партиклы не прозрачные или просто с резкой (aref) прозрачностью, то они и в X-Ray освещаются\тени кидают. Кстати на видео из Метро именно вторые.

Щас в исходниках посмотрел, действительно может быть освещение для шейдера particles\set. Только прозрачность у него на R2/R3/R4 выключена, и в игре только один партикл вылетающей грязи при торможении машины его использует.
cjayho
QUOTE (Modera @ 29.09.2019, 18:46) *
1) Чё там у вас, кто-нибудь освещение партиклов на x-ray запилил уже?

2) И нормальное взаимодействие глоу с худом оружия.


1. можно прикрутить hq-освещение (lq- и так есть) к партиклам, но это скорее всего очень сильно повлияет на производительность.
2. Всегда работало, в финалках только накосячили с сортировкой, я сортировку исправлял и все отлично работало. Ищите мои шейдерпаки в шапке темы.
Modera
Цитата(cjayho @ 30.09.2019, 09:35) *
Всегда работало, в финалках только накосячили с сортировкой, я сортировку исправлял и все отлично работало. Ищите мои шейдерпаки в шапке темы.

М, нет.
RayTwitty
Что касается просвета
https://github.com/OGSR/OGSR-Engine/commit/...b812d93562c7323
Modera
Цитата(RayTwitty @ 30.09.2019, 16:28) *

Ну это какое-то подобие Z-test'a на шейдерах, просто вырезаются те пиксели которые закрыты худом(или ещё чем).
А в метро так же как со статической геометрией, плавно скрывается и показывается в зависимости от того видно сам источник света или нет.
RayTwitty
Цитата(Modera @ 30.09.2019, 17:52) *
А в метро так же как со статической геометрией, плавно скрывается и показывается в зависимости от того видно сам источник света или нет.

Тогда надо трассировку делать или как там с фларами от солнца.
iOrange
Цитата(RayTwitty @ 30.09.2019, 17:37) *
Тогда надо трассировку делать

Можно сделать куда проще:
1) если есть compute shaders - все просто - тестим по пирамиде HZB и пишем аттрибуты
2) если нету - брать depth buffer прошлого кадра, сливать на CPU, строить мип-пирамиду - дальше как и в первом пункте - считаем номер мипа в котором спрайт будет либо целиком внутри ячейки, либо те что покроют углы - тестим глубину - получаем перекрытие, причем можно даже грубо прикинуть процент перекрытия вместо бинарного видно/невидно.
atanda
по-моему всё это на dx9 недоступно blink.gif
iOrange
Цитата(atanda @ 30.09.2019, 19:37) *
по-моему всё это на dx9 недоступно

поэтому я и написал пункт 2 wink_old.gif
Diesel
Anonim решил таки поделиться инфой. Два года мозги мурыжил.
https://www.amk-team.ru/forum/clubs/6-klub-texcoordn/
Zagolski
Цитата(iOrange @ 30.09.2019, 20:02) *
сливать на CPU

Так там это, синхронизация...

Цитата(RayTwitty @ 30.09.2019, 18:37) *
Тогда надо трассировку делать или как там с фларами от солнца.

Так на R1 есть трассировка. И все норм скрывается и показывается со статикой.
RayTwitty
Цитата(Zagolski @ 01.10.2019, 15:21) *
Так на R1 есть трассировка. И все норм скрывается и показывается со статикой.

Со статикой... А худ отдельно рендерится же))
Zagolski
На статике худ рендерится первым, а затем рендерятся флары с включенным z-тестом. Проблемы начинаются, если z-тест отключить, тогда они поверх худа рисуются, но статическая геометрия их все равно отсекает трассировкой. А отключать тест приходится, чтоб флары поверх сетки абажура были, это да. А иначе они в нем внутри и решеткой перекрываются. Смотрится это странно, однако.
iOrange
Цитата(Zagolski @ 01.10.2019, 14:21) *
Так там это, синхронизация...

Так там это, предыдущий кадр берем... Мое дело предложить вобщем dry.gif
Diesel
Modera, а у меня на R3 такой бяки нет. Всё ровно. Может кто в шейдерах уже это исправил?
dry.gif
Modera
Дизель, а в сталкере эта бяка только на R1. Но кто пилит графон переносят и на другие рендеры, потому что красивее чем блум.
Zagolski
Цитата(iOrange @ 01.10.2019, 16:36) *
Так там это, предыдущий кадр берем...

А в этом случае возможен останов системы? Я предыдущий не пробовал брать, но с текущим на ~2 мс GPU останавливается, что влечет за собой падение фпс почти вдвое (при среднем 120). Теоретически и предыдущий тоже может тормозить игру. Вот хотя бы если вспомнить Crytek с их software occlusion, там не все гладко на PC.
iOrange
Цитата(Zagolski @ 02.10.2019, 08:41) *
А в этом случае возможен останов системы?

Какой системы? Синк это всегда плохо, но это будет микро-синк в начале кадра, и он будет малозаметен (особенно в контексте Сталкера, который на современныъ системах и так уже наверное 400 фпс).

Глубину предыдущего кадра к тому моменту уже в стейджинге нужно держать, так что слив будет быстрый, и не факт что будет стоп, скорее всего драйвер разрулит что нет зависимостей.
atanda
Цитата(iOrange @ 02.10.2019, 17:02) *
наверное 400 фпс

если графона натянуть, то на 1060 <50 фпс.XD
iOrange
Цитата(atanda @ 02.10.2019, 18:25) *
если графона натянуть, то на 1060 <50 фпс.XD

Типа крайзис отдыхает? z_crazy.gif
Zagolski
А в сталке на его ванильном рендере много фпс и не вытянешь, какую видяху не ставь. Он в проц упирается, к тому же light shadows на occlusion query висят.

Покопал тут по траве. Выяснил лишь, что на дефолтных настройках ЗП с максимальной плотностью травы на отрисовку дипов отправляется мало, в районе 40 (там батчится она). Но зато обрабатываются 100 000 вершин (50 000 полигонов). Толком ничего оптимизировать не удалось, убирание с травы раскачки тоже ни на грамм не дало прибавку к скорости. Да и 100к вертексов не такая уж и большая нагрузка, у меня одно лишь оружие на худе с обвесами из такого же кол-ва полигонов состоит, но фпс почти не снижает.

Зато разобрался, почему тени от травы так сильно сажают фпс и поэтому, наверное, разрабы их в релизе отключили. Там совсем все неправильно работает и нужно переделывать. У нас трава создается один раз в начале кадра для текущей сцены "из глаз", лишь обрезается фрустумом камеры. Собственно, она затем и отправляется на отрисовку. Теперь самое главное! Эта же трава отправляется на отрисовку и для теней, причем в каждый каскад солнечных теней! Их три. Итого еще 300 000 вершин только для теней травы. Это дикость какая-то. Тут нужно переделывать - отсеивать траву для каждого каскада отдельно, либо поможет перенос на GS, когда мы только раз отправим 100к вершин и рассортируем их по каждому каскаду в геометрическом шейдере. А в дефолтном виде я советую тени от травы вообще отключить, так как есть оставлять нельзя.
atanda
Цитата(iOrange @ 03.10.2019, 06:12) *
Типа крайзис отдыхает?

нет, всё, как и сказал Zagolski, упирается в проц
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.