IPB

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

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

 
 
>

Как влияет флаг Double Side на производительность?

 
 Trollz0r
сообщение 30.07.2020, 01:19
Сообщение #1


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

Группа: Участник
Сообщений: 513
Регистрация: 28.05.2010
Из: Кайфовая республика, Атдушинский район
Пользователь №: 13942



Вот есть у меня коробушка:
(IMG:https://images.gameru.net/thumb/02944da66f71628.png)
Рифлёным стенкам назначил материал с флажком двусторонности.
А как это отразится на производительности? Будет быстрее или медленнее рендерить?

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


Я вам покушать принёс!
**********************

Группа: Участник
Сообщений: 6078
Регистрация: 30.07.2010
Пользователь №: 13969



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

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


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

Группа: Участник
Сообщений: 513
Регистрация: 28.05.2010
Из: Кайфовая республика, Атдушинский район
Пользователь №: 13942



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

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

Перейти в начало страницы
 
 
 Modera
сообщение 30.07.2020, 11:48
Сообщение #4


Я вам покушать принёс!
**********************

Группа: Участник
Сообщений: 6078
Регистрация: 30.07.2010
Пользователь №: 13969



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

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


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

Группа: Участник
Сообщений: 611
Регистрация: 13.12.2016
Пользователь №: 25714



CULL_NONE спасет.

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


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

Группа: Участник
Сообщений: 513
Регистрация: 28.05.2010
Из: Кайфовая республика, Атдушинский район
Пользователь №: 13942



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


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

Группа: Участник
Сообщений: 233
Регистрация: 02.02.2016
Пользователь №: 23662



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


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

Группа: Участник
Сообщений: 611
Регистрация: 13.12.2016
Пользователь №: 25714



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

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

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

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

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


Босс
********************

Группа: Участник
Сообщений: 4326
Регистрация: 27.04.2011
Из: Россия
Пользователь №: 14366



Цитата(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


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

Группа: Участник
Сообщений: 611
Регистрация: 13.12.2016
Пользователь №: 25714



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

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

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

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


Ветеран
*****

Группа: Участник
Сообщений: 90
Регистрация: 20.03.2014
Из: omsk
Пользователь №: 19526



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


2-sided on
(IMG:https://images.gameru.net/thumb/ef215b6be8f8eb0.jpg)

2-sided off (в стате poly на 992 меньше)
(IMG:https://images.gameru.net/thumb/084de7f35be75e6.jpg)




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

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

 

Текстовая версия Сейчас: 05.08.2020, 22:02