Как влияет флаг Double Side на производительность? |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Как влияет флаг Double Side на производительность? |
30.07.2020, 01:19
Сообщение
#1
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Вот есть у меня коробушка:
Рифлёным стенкам назначил материал с флажком двусторонности. А как это отразится на производительности? Будет быстрее или медленнее рендерить? И вообще - как реализована двусторонность полигонов в хрее? Чисто на шейдерах или что-то в движке закомпостировали? Есть ли такая техника в других движках? -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
|
|
30.07.2020, 06:12
Сообщение
#2
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
Производительность будет такая же как если бы ты вручную скопировал и вывернул полигоны. Двусторонность в сталкере сделана в лоб, СДК при создании игровой модели или уровня просто скопирует и вывернет полигоны которым назначен флаг двусторонности. Движок сам по себе ничего не знает о двусторонности.
В более играх, таких как метро еходус и сурвариум, двусторонность уже делается движком. Вывернутые полигоны в модель не записываются, но в настройках материала указывается двусторонность. Как оно работает под капотом я точно не знаю, У себя в метроредакторе я рисовал в два прохода такие поверхности, вручную переключяя лицевые стороны полигонов на обратное направление и выворачивая нормали в шейдерах. |
 
|
|
30.07.2020, 11:37
Сообщение
#3
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Но есть один нюанс...
СДК при создании игровой модели или уровня просто скопирует и вывернет полигоны которым назначен флаг двусторонности Если так сделать в майе, то полигоны будут рябить, т.к. находятся в одной точке пространства.Берём полигон - просто треугольник, три вершины. Если я хочу придать ему объём в майе по-тупому, то выполняю операцию выдавливания, и у меня получается 1 треугольник спереди + 1 треугольник сзади + между ними 3 стенки по 2 треугольничка в каждом. А что делает СДК? У него получается 1 треугольник + 1 треугольник, разнесённые на какое-то микрорасстояние, чтобы полигоны не просвечивали сквозь друг друга? -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
30.07.2020, 11:48
Сообщение
#4
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
Нет, они находятся точно в одном месте, просто направленны в разные стороны, а т.к. в игре у нас всегда включен backface culling увидеть всегда можно только один треугольник.
Для того чтобы сделать в майе то что делает СДК галочкой 2-sided нужно все полигоны скопировать и применить к ним Normals -> Reverse. Если бэкфейс куллинг включен ничего рябить не должно. |
 
|
|
30.07.2020, 13:40
Сообщение
#5
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
CULL_NONE спасет.
Не советую вообще связываться с этим 2-sided, реально оно вчетверо увеличивает кол-во полигонов и индексов (хотя СДК говорит, что вдвое). |
 
|
|
30.07.2020, 15:23
Сообщение
#6
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
CULL_NONE спасет. А если объект - nosun под террейном?Не советую вообще связываться с этим 2-sided, реально оно вчетверо увеличивает кол-во полигонов и индексов (хотя СДК говорит, что вдвое). Ты же не про траву говоришь?
-------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
30.07.2020, 17:11
Сообщение
#7
|
|
Продвинутый геймер Репутация: 26 Группа: Участник Сообщений: 255 Награды: 1 Регистрация: 02.02.2016 |
Покажите простой пример, как будет выглядеть эта модель в игре без флага DoubleSide и она же с ним
|
 
|
|
31.07.2020, 11:45
Сообщение
#8
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Ты же не про траву говоришь? Про траву. Намедни нужно было ее модели в .ogf заготовить, так при экспорте из СДК вместо 10 получается 40 поликов. Я сначала не обратил внимание, да и в игре визуально ничего не изменилось. Обнаружил косяк позже по кол-ву отправляемых на отрисовку индексов: 120 вместо 30. И затем уже просек причину. А с другими моделями не проверял, не было нужды. Думается мне, там так же. А если объект - nosun под террейном? Ну и что. С CULL_NONE он в любом случае будет с обоих сторон обрабатываться. Причем если полигоны обращены в другую сторону, то их обработки пиксельным шейдером не будет, т.к. z-тест не пройдут. Наверняка в современных движках так и делается, что Modera выше говорил. Т.е. ставится в материале флаг, а движок уже выставляет нужный режим отсечения - для двухсторонних CULL_NONE + инверсия нормали по SV_IsFrontFace, и всех делов. Быстро и просто. Сообщение отредактировал Zagolski - 31.07.2020, 11:52 |
 
|
|
31.07.2020, 15:54
Сообщение
#9
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Про траву. Намедни нужно было ее модели в .ogf заготовить, так при экспорте из СДК вместо 10 получается 40 поликов. Я сначала не обратил внимание, да и в игре визуально ничего не изменилось. Ну это наверное не только из-за двусторонности, просто СДК еще разбил твои треугольники. Может они слишком узкие были или еще что. Двусторонность - х2, откуда 4-ем взяться. А если объект - nosun под террейном? А зачем nosun двусторонность? Должно хватать одностороннего с фейсами наружу. |
 
|
|
31.07.2020, 16:33
Сообщение
#10
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
просто СДК еще разбил твои треугольники. Визуально ничего разбито не было, как было, так и осталось. Уж не знаю, чего он там разбивал. Добавилась 1 вершина и 4х полигонов с индексами. Кроме того, если 2-sided в СДК отключить, на выходе получаются честные 10 поликов и 30 индексов. Еще неясно, как в игре все это себя ведет. Возьмем ту же дефолтную траву. Возможно на ней впустую вчетверо кол-во полигонов увеличивается. Вот и ответ, почему она сильно тормозит, когда травы много. Кто-нибудь попробовал бы ей двухсторонность отключить, перед компиляцией. Движком траве все равно CULL_NONE ставится, т.е. она по-любому с обеих сторон обрабатывается. А нормаль ей сторонним способом высчитывается, т.е. она берется не из модели. |
 
|
|
01.08.2020, 02:27
Сообщение
#11
|
|
Опытный Геймер Репутация: 50 Группа: Участник Сообщений: 157 Награды: 2 Регистрация: 20.03.2014 |
|
 
|
|
06.08.2020, 08:11
Сообщение
#12
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Для того чтобы сделать в майе то что делает СДК галочкой 2-sided нужно все полигоны скопировать и применить к ним Normals -> Reverse. Если бэкфейс куллинг включен ничего рябить не должно. То есть опция ле даёт лишь автоматизацию этой процедуры, не более. Всё ясно.А зачем nosun двусторонность? Должно хватать одностороннего с фейсами наружу. Так и я о том, зачем всё подряд пускать под одну гребёнку, если в итоге ничего не изменится.А нормаль ей сторонним способом высчитывается, т.е. она берется не из модели. А это очень плохо, потому что такие штуки, как лист одуванчика, придётся оставлять с дополнительным разбиением полигона, а не тупо загибая вершинные нормали по краям. Yara, фпс одинаковый, значит, смысла действительно нет. Сообщение отредактировал Trollz0r - 06.08.2020, 08:11 -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
06.08.2020, 13:22
Сообщение
#13
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Травы у Yara маловато и она от камеры далека. Лучше сделать травы побольше и близко к камере. Чтоб площадь экрана больше занимала. Что-то вроде такого:
А еще лучше проверять каким-нибудь Render Doc, сколько полигонов на отрисовку отправляется. Встроенный в двиг статистик может для травы неверную инфу отображать. Он полигонаж каким-то своим способом высчитывает, из кол-ва кустов или вроде того. Я не вдавался. Так что есть опасения, что он может врать. Ну или как самый простой вариант и более-менее корректный - замерять по фпс, но тогда травы должно быть много и она должна быть расположена близко к камере, как на моем скрине. А это очень плохо, потому что такие штуки, как лист одуванчика, придётся оставлять с дополнительным разбиением полигона, а не тупо загибая вершинные нормали по краям. Для травы стандартный способ с нормалями меша лучше не делать. Будет криво и угловато смотреться. Нужны плавные переходы освещения и при этом не до конца, т.е. обратная сторона листвы должна часть света пропускать. Наиболее грубый способ - просто выставить нормаль вверх для всей травы. А в идеале слегка повернуть, сделать параллельнее по вектору от вершины к центру куста. В дефолтном сталке примерно так и сделано. |
 
|
|
11.11.2020, 17:51
Сообщение
#14
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Никто не в курсе, что за модели травы лежат в SDK (ЧН-ЗП) в папке detail\standart, для чего они? На локах в игре, судя по level editor используются меши травы из папки detail. Мне кажется, эти из папки standart какие-то глюкавые, напутано с индексами-вершинами. Или они все же где-то используются?
|
 
|
|
12.11.2020, 12:08
Сообщение
#15
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Похоже в папке standart - это меши травы из ТЧ.
|
 
|
|
Текстовая версия | Сейчас: 27.04.2024, 19:36 |