Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

 
Ответить в данную темуНачать новую тему
> Как влияет флаг Double Side на производительность?
Trollz0r
сообщение 30.07.2020, 01:19
Сообщение #1


Почти Мастер
***********

Репутация:   1357  
Группа: Участник
Сообщений: 1155
Награды: 5
Регистрация: 28.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Вот есть у меня коробушка:

Рифлёным стенкам назначил материал с флажком двусторонности.
А как это отразится на производительности? Будет быстрее или медленнее рендерить?

И вообще - как реализована двусторонность полигонов в хрее? Чисто на шейдерах или что-то в движке закомпостировали? Есть ли такая техника в других движках?


--------------------
Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
---------------
------------
----------
--------
------
----
--
Перейти в начало страницы
 
Modera
сообщение 30.07.2020, 06:12
Сообщение #2


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Производительность будет такая же как если бы ты вручную скопировал и вывернул полигоны. Двусторонность в сталкере сделана в лоб, СДК при создании игровой модели или уровня просто скопирует и вывернет полигоны которым назначен флаг двусторонности. Движок сам по себе ничего не знает о двусторонности.

В более играх, таких как метро еходус и сурвариум, двусторонность уже делается движком. Вывернутые полигоны в модель не записываются, но в настройках материала указывается двусторонность. Как оно работает под капотом я точно не знаю, У себя в метроредакторе я рисовал в два прохода такие поверхности, вручную переключяя лицевые стороны полигонов на обратное направление и выворачивая нормали в шейдерах.
Перейти в начало страницы
 
Trollz0r
сообщение 30.07.2020, 11:37
Сообщение #3


Почти Мастер
***********

Репутация:   1357  
Группа: Участник
Сообщений: 1155
Награды: 5
Регистрация: 28.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Но есть один нюанс...
Цитата(Modera @ 30.07.2020, 04:12) *
СДК при создании игровой модели или уровня просто скопирует и вывернет полигоны которым назначен флаг двусторонности
Если так сделать в майе, то полигоны будут рябить, т.к. находятся в одной точке пространства.

Берём полигон - просто треугольник, три вершины. Если я хочу придать ему объём в майе по-тупому, то выполняю операцию выдавливания, и у меня получается 1 треугольник спереди + 1 треугольник сзади + между ними 3 стенки по 2 треугольничка в каждом.
А что делает СДК? У него получается 1 треугольник + 1 треугольник, разнесённые на какое-то микрорасстояние, чтобы полигоны не просвечивали сквозь друг друга?



--------------------
Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
---------------
------------
----------
--------
------
----
--
Перейти в начало страницы
 
Modera
сообщение 30.07.2020, 11:48
Сообщение #4


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Нет, они находятся точно в одном месте, просто направленны в разные стороны, а т.к. в игре у нас всегда включен backface culling увидеть всегда можно только один треугольник.

Для того чтобы сделать в майе то что делает СДК галочкой 2-sided нужно все полигоны скопировать и применить к ним Normals -> Reverse. Если бэкфейс куллинг включен ничего рябить не должно.
Перейти в начало страницы
 
Zagolski
сообщение 30.07.2020, 13:40
Сообщение #5


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


CULL_NONE спасет.

Не советую вообще связываться с этим 2-sided, реально оно вчетверо увеличивает кол-во полигонов и индексов (хотя СДК говорит, что вдвое).
Перейти в начало страницы
 
Trollz0r
сообщение 30.07.2020, 15:23
Сообщение #6


Почти Мастер
***********

Репутация:   1357  
Группа: Участник
Сообщений: 1155
Награды: 5
Регистрация: 28.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Zagolski @ 30.07.2020, 11:40) *
CULL_NONE спасет.
А если объект - nosun под террейном?
Цитата(Zagolski @ 30.07.2020, 11:40) *
Не советую вообще связываться с этим 2-sided, реально оно вчетверо увеличивает кол-во полигонов и индексов (хотя СДК говорит, что вдвое).
Ты же не про траву говоришь?


--------------------
Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
---------------
------------
----------
--------
------
----
--
Перейти в начало страницы
 
guitarking123
сообщение 30.07.2020, 17:11
Сообщение #7


Продвинутый геймер
********

Репутация:   26  
Группа: Участник
Сообщений: 255
Награды: 1
Регистрация: 02.02.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Покажите простой пример, как будет выглядеть эта модель в игре без флага DoubleSide и она же с ним
Перейти в начало страницы
 
Zagolski
сообщение 31.07.2020, 11:45
Сообщение #8


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Trollz0r @ 30.07.2020, 15:23) *
Ты же не про траву говоришь?

Про траву. Намедни нужно было ее модели в .ogf заготовить, так при экспорте из СДК вместо 10 получается 40 поликов. Я сначала не обратил внимание, да и в игре визуально ничего не изменилось. Обнаружил косяк позже по кол-ву отправляемых на отрисовку индексов: 120 вместо 30. shocking.gif И затем уже просек причину. А с другими моделями не проверял, не было нужды. Думается мне, там так же.

Цитата(Trollz0r @ 30.07.2020, 15:23) *
А если объект - nosun под террейном?

Ну и что. С CULL_NONE он в любом случае будет с обоих сторон обрабатываться. Причем если полигоны обращены в другую сторону, то их обработки пиксельным шейдером не будет, т.к. z-тест не пройдут. Наверняка в современных движках так и делается, что Modera выше говорил. Т.е. ставится в материале флаг, а движок уже выставляет нужный режим отсечения - для двухсторонних CULL_NONE + инверсия нормали по SV_IsFrontFace, и всех делов. dirol.gif Быстро и просто.

Сообщение отредактировал Zagolski - 31.07.2020, 11:52
Перейти в начало страницы
 
abramcumner
сообщение 31.07.2020, 15:54
Сообщение #9


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Zagolski @ 31.07.2020, 11:45) *
Про траву. Намедни нужно было ее модели в .ogf заготовить, так при экспорте из СДК вместо 10 получается 40 поликов. Я сначала не обратил внимание, да и в игре визуально ничего не изменилось.

Ну это наверное не только из-за двусторонности, просто СДК еще разбил твои треугольники. Может они слишком узкие были или еще что. Двусторонность - х2, откуда 4-ем взяться.

Цитата(Trollz0r @ 30.07.2020, 15:23) *
А если объект - nosun под террейном?

А зачем nosun двусторонность? Должно хватать одностороннего с фейсами наружу.
Перейти в начало страницы
 
Zagolski
сообщение 31.07.2020, 16:33
Сообщение #10


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 31.07.2020, 15:54) *
просто СДК еще разбил твои треугольники.

Визуально ничего разбито не было, как было, так и осталось. Уж не знаю, чего он там разбивал. Добавилась 1 вершина и 4х полигонов с индексами. Кроме того, если 2-sided в СДК отключить, на выходе получаются честные 10 поликов и 30 индексов.

Еще неясно, как в игре все это себя ведет. Возьмем ту же дефолтную траву. Возможно на ней впустую вчетверо кол-во полигонов увеличивается. Вот и ответ, почему она сильно тормозит, когда травы много. Кто-нибудь попробовал бы ей двухсторонность отключить, перед компиляцией. Движком траве все равно CULL_NONE ставится, т.е. она по-любому с обеих сторон обрабатывается. А нормаль ей сторонним способом высчитывается, т.е. она берется не из модели.

Перейти в начало страницы
 
Yara
сообщение 01.08.2020, 02:27
Сообщение #11


Опытный Геймер
*******

Репутация:   50  
Группа: Участник
Сообщений: 157
Награды: 2
Регистрация: 20.03.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Zagolski @ 31.07.2020, 19:33) *
Кто-нибудь попробовал бы ей двухсторонность отключить, перед компиляцией.


2-sided on


2-sided off (в стате poly на 992 меньше)





Перейти в начало страницы
 
Trollz0r
сообщение 06.08.2020, 08:11
Сообщение #12


Почти Мастер
***********

Репутация:   1357  
Группа: Участник
Сообщений: 1155
Награды: 5
Регистрация: 28.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 30.07.2020, 09:48) *
Для того чтобы сделать в майе то что делает СДК галочкой 2-sided нужно все полигоны скопировать и применить к ним Normals -> Reverse. Если бэкфейс куллинг включен ничего рябить не должно.
То есть опция ле даёт лишь автоматизацию этой процедуры, не более. Всё ясно.

Цитата(abramcumner @ 31.07.2020, 13:54) *
А зачем nosun двусторонность? Должно хватать одностороннего с фейсами наружу.
Так и я о том, зачем всё подряд пускать под одну гребёнку, если в итоге ничего не изменится.
Цитата(Zagolski @ 31.07.2020, 14:33) *
А нормаль ей сторонним способом высчитывается, т.е. она берется не из модели.
А это очень плохо, потому что такие штуки, как лист одуванчика, придётся оставлять с дополнительным разбиением полигона, а не тупо загибая вершинные нормали по краям.

Yara, фпс одинаковый, значит, смысла действительно нет.

Сообщение отредактировал Trollz0r - 06.08.2020, 08:11


--------------------
Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
---------------
------------
----------
--------
------
----
--
Перейти в начало страницы
 
Zagolski
сообщение 06.08.2020, 13:22
Сообщение #13


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Травы у Yara маловато и она от камеры далека. Лучше сделать травы побольше и близко к камере. Чтоб площадь экрана больше занимала. Что-то вроде такого:



А еще лучше проверять каким-нибудь Render Doc, сколько полигонов на отрисовку отправляется. Встроенный в двиг статистик может для травы неверную инфу отображать. Он полигонаж каким-то своим способом высчитывает, из кол-ва кустов или вроде того. Я не вдавался. Так что есть опасения, что он может врать.

Ну или как самый простой вариант и более-менее корректный - замерять по фпс, но тогда травы должно быть много и она должна быть расположена близко к камере, как на моем скрине.

Цитата(Trollz0r @ 06.08.2020, 08:11) *
А это очень плохо, потому что такие штуки, как лист одуванчика, придётся оставлять с дополнительным разбиением полигона, а не тупо загибая вершинные нормали по краям.

Для травы стандартный способ с нормалями меша лучше не делать. Будет криво и угловато смотреться. Нужны плавные переходы освещения и при этом не до конца, т.е. обратная сторона листвы должна часть света пропускать. Наиболее грубый способ - просто выставить нормаль вверх для всей травы. А в идеале слегка повернуть, сделать параллельнее по вектору от вершины к центру куста. В дефолтном сталке примерно так и сделано.
Перейти в начало страницы
 
Zagolski
сообщение 11.11.2020, 17:51
Сообщение #14


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Никто не в курсе, что за модели травы лежат в SDK (ЧН-ЗП) в папке detail\standart, для чего они? На локах в игре, судя по level editor используются меши травы из папки detail. Мне кажется, эти из папки standart какие-то глюкавые, напутано с индексами-вершинами. Или они все же где-то используются?
Перейти в начало страницы
 
Zagolski
сообщение 12.11.2020, 12:08
Сообщение #15


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Похоже в папке standart - это меши травы из ТЧ.
Перейти в начало страницы
 

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.03.2024, 13:50