HLFX.Ru Forum Страницы (4): « 1 2 3 [4]
Показать все 60 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- Hardware Skinning (обсуждение и troubleshooting) (https://hlfx.ru/forum/showthread.php?threadid=4279)


Отправлено tolerance 06-02-2014 в 16:35:

Цитата:
FiEctro писал:
Какая тут связь? Сталкер на движке ксаша штоле ?

Вот именно , особенно когда лайтмапы в Xash'е такие:
http://www.picshare.ru/uploads/140103/Gjsntec3dH.jpg


Отправлено Дядя Миша 06-02-2014 в 19:20:

Да, сталкера и метро тоже будем на ксаше делать

Добавлено 06-02-2014 в 23:20:

И возвращаясь к теме хардварного скиннинга. Я начитался всяких статей по оптимизации и решил изучить это дело подробно. В частности, например утверждается, что стрипы работают быстрее фанов.
Ну это понятно почему происходит - стрипы более эффективно используют место, в результате в вертексный кэш влезает больше вертексов, а значит и скорость их обработки выше - за счёт того, что нам не надо трансформировать дважды (а то и трижды) уже оттрансформированные треугольники. Реализаций построения strip-sequence существует две штуки: NvTriStrip и TriStripper. Я не говорю, что нету каких-то других реализаций, просто на гей-деве рекомендует именно эти. Про них упоминается в лекции по повышению производительности, про них же упоминается в подсказках.
Три-стрип я качать не стал, поскольку это оффлайн-тулза, работает как и все тулзы от нвидии крайне неторопливо (я помню как nvdxt жевала текстуры по 20 секунд). Поэтому я сразу перешёл к проверке Tri STripper.
Тулза написана отвратительно. Во первых в качестве стандартных аргументов она принимает исключительно std::vector. Я мигом догадался, что её писали мудаки, после чего уже не рассчитывал на какие-либо прорывы. Так и оказалось . Эта зараза трудилась над многими моделями порядка 40-50 секунд, но на некоторых модельках проскакивала за тысячные доли секунды. Никакого прироста она мне так же не дала.
Тогда я подумал, что стрипы - это не самоцель, а всего лишь один из методов оптимизации вертексного кэша, что и являлось моей конечной целью. Тогда я скачал простейшую программку vcacheopt, реализованную в одном-единственном хидере. Программка тоже мудацкая, тоже хочет std::vector на вход. Ну да ладно. И вот какие интересные результаты она мне показала: 1 промах кэша на меш любого размера. Понимаете?
Ведь халфовские модели изначально содержат фан-стрип секвенции, для максимального увеличения производительности. Не стоит однако думать, что это изобретение самой вальвы. Код этот был написан Кармаком еще для первого квейка. Тем не менее меня полученный результат вполне удивил, поскольку еденичный промах кэша на моделях любого размера - это просто идеальный результат, вполне возможно я где-то ошибся при инициализации программы. Я еще раз всё перепроверил и отрисовал модельку с уже изменёнными индексами - модель не покорёжилась, фпс не изменился. Тогда я подумал, что возможно сам код неочень корректный и скачал Одну из версий реализации кода Linear-Speed Vertex Cache
Optimization от Tom Forsyth. Я честно игрался с размером вертексного кэша, но ни в одном случае не получил ни прироста ни падения фпс.

На основании проведённых исследований считаю возможным сделать заявление: халфовские модели достаточно неплохо оптимизированы для минимизации промахов вертексного кэша и любые сторонние оптимизации здесь излишни.
Впрочем, моё исследование нельзя признать совсем уж объективным - ведь я проводил его только на одной видеокарте. Ну чтож, давайте еще немного потестируем - я выложил в соседней теме очередное обновление бенчмарка.
Правила тестирования таковы:
1. запускаем бенчмарк, замеряем FPS в Hardware Mode.
2. выходим из программы (именно так! никаких рестартов и перезагрузок карты), открываем config.cfg и находим строчку vcache_size. По умолчанию она равна 32. Допустимые значения 10 - 64. Попробуйте подставить в переменную следующие значения: 10, 16, 24, 32, 48, 64. После каждого изменения следует сохранить config.cfg, запустить бенчмарк и замерить FPS в Hardware mode.
3. Если вы обнаружите серъезные отличия в FPS, ну например у вас было 100 фпс при vcache_size 32 и вдруг стало 180 FPS при vcache_size 10, то обязательно отпишитесь об этом. Если же при любых изменениях vcache_size результат колеблется в пределах 5-10 фпс, то сообщать об этом не следует, т.к. это укладывается в пределы погрешности.

Сразу предупреждаю - с большой долей вероятности никаких изменений большинство из вас не заметит. С меньшей долей вероятности могу сказать, что изменений не будет ни у кого, поскольку, повторюсь, студиомодельки изначально имеют оптимальный порядок следования вертексов и индексов, который не нуждается ни в каких дополнительных оптимизациях. При этом остаётся открытым вопрос, каким же образом ребята с гей-дева таки получали ощутимый прирост, который заметен не на словах, а вполне на деле (есть демка в соответствующей теме, её можно скачать и убедиться самому). Но тут у меня два дополняющих варианта. Во первых все эти изыскания по производительности проводились в 2005-2006 годах и как следствие ситуация могла в чём-то измениться. А во вторых, тамошний народ обожает юзать текстовые некомпилированные модели, например формата OBJ. Это просто такой дамп треугольников, навроде SMD. Кстати SMD они тоже любят грузить самостоятельно. Я ни разу не видел, чтобы кто-то где-то юзал mdl, но зато есть статьи посвящённые загрузке SMD движком. Откуда такая любовь к сырью - понимать отказываюсь. Возможно это doom головного мозга.
Ну так вот - возвращаясь к проблеме, модели такого типа, естественно не имеют ровным счётом никаких оптимизаций, это просто накиданные как попало треугольники и после прогонки этой кучи через оптимизатор, получение положительных результатов становится вполне реальным.
Чего не скажешь о халфовских студиомоделях.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 06-02-2014 в 19:34:

Цитата:
Дядя Миша писал:
OBJ. Это просто такой дамп треугольников

Не обязательно треугольников.


Отправлено Дядя Миша 06-02-2014 в 19:42:

Индексы в OBJ пишутся? Или самому надо генерить?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 06-02-2014 в 19:45:

Цитата:
Дядя Миша писал:
Откуда такая любовь к сырью - понимать отказываюсь. Возможно это doom головного мозга.

Ларчик, как всегда, открывается просто. MDL - проприетарный формат Valve, и его запрещено использовать в сторонних движках. Признайся, ты думал, что я в волатиле свой формат моделей из вредности или из тупости придумал?
Я, честно говоря, сколько ни читал про эти оптимизации под кэш - так и не нашёл информации об их пользе на более или менее современном железе. Вроде как размер кэша на Unified shader architecture не ограничен, и все эти "идеальные цифры" - просто результат тестов на предмет "с каким магическим числом работает лучше".

Добавлено 07-02-2014 в 02:45:

А вообще молодец, что начал статьи читать. Это полезное дело. Раньше ты надо мной смеялся, мол, зачем это всё читать, я вон лучше в сорцах чьих-нибудь погляжу, а теперь видишь как.
Единственное, что я хочу сказать - актуальность статей 10-летней давности и более ранних зачастую под вопросом.

__________________

xaerox on Vivino


Отправлено nemyax 06-02-2014 в 20:01:

Цитата:
Дядя Миша писал:
Индексы в OBJ пишутся? Или самому надо генерить?

Там они подразумеваются. Тупо строчка за строчкой с токеном "v".
Цитата:

v -0.5 0.5 -0.5
v -0.120537996 -0.137472004 0.519999981
v -0.120537996 -0.102374002 0.519999981
v 0.0694542006 0.136417001 0.519999981
...

И соответственно у полигонов:
Цитата:

f 2 5 6 1
f 2 3 4 1 6 5
f 7 17 16 15 14 13 12 11 10 9 8
...



Добавлено 07-02-2014 в 00:01:

Цитата:
XaeroX писал:
Я, честно говоря, сколько ни читал про эти оптимизации под кэш - так и не нашёл информации об их пользе на более или менее современном железе.

В волатиловских модельках не будет этой оптимизации?


Отправлено Дядя Миша 06-02-2014 в 20:52:

Цитата:
XaeroX писал:
MDL - проприетарный формат Valve, и его запрещено использовать в сторонних движках

Может с сорсовским форматом дело именно так и обстоит, но первохалфвоский формат моделек юзают довольно многие и никому ничего за это не было. Да и как он может быть проприетартным, ежели по нему есть полные спеки. Частично это alias из первокваки, частично структуры из древного 3д-макса. Я так это понимаю.
Цитата:
XaeroX писал:
Признайся, ты думал, что я в волатиле свой формат моделей из вредности или из тупости придумал?

Вообще не задумывался. Ну придумал и придумал.
Цитата:
XaeroX писал:
А вообще молодец, что начал статьи читать. Это полезное дело. Раньше ты надо мной смеялся, мол, зачем это всё читать, я вон лучше в сорцах чьих-нибудь погляжу, а теперь видишь как.

Очевидно, что я начал читать эти статьи тогда, когда не нашёл ответа в сорцах
Сорцы для меня попрежнему приоритетнее статей, поскольку на словах можно рассуждать как угодно, а практическая реализация порой имеет с этим мало общего. Не доверяю я словам.
Цитата:
XaeroX писал:
Единственное, что я хочу сказать - актуальность статей 10-летней давности и более ранних зачастую под вопросом.

Я это учитывал при свои исследованиях, разумеется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 06-02-2014 в 21:13:

Цитата:
nemyax писал:
В волатиловских модельках не будет этой оптимизации?

Почему не будет? Она уже давно есть, на старых видимокартах она может что-то давать.
Цитата:
Дядя Миша писал:
Да и как он может быть проприетартным, ежели по нему есть полные спеки.

Нет никаких спек. Есть сорцы в составе хлсдк, защищённые проприетарной лицензией.
Цитата:
Дядя Миша писал:
первохалфвоский формат моделек юзают довольно многие и никому ничего за это не было

В России все воруют - что ж теперь?

__________________

xaerox on Vivino


Отправлено Дядя Миша 07-02-2014 в 16:02:

Цитата:
XaeroX писал:
В России все воруют - что ж теперь?

И чтож теперь? Не воровать что ли?

Добавлено 07-02-2014 в 20:02:

Товарищи, вот объясните мне что у вас с головой?
Пишу прямым текстом:
Цитата:
Дядя Миша писал:
Если же при любых изменениях vcache_size результат колеблется в пределах 5-10 фпс, то сообщать об этом не следует, т.к. это укладывается в пределы погрешности.

Цитата:
Дядя Миша писал:
тестируем, отписываемся, в случае получения каких-либо положительных результатов.


Два раза написал - если нету изменений, то отписываться не надо.
И что вы пишите?
Цитата:
nemyax писал:
В тесте с жонглированием размером кеша во всех случаях (10, 16, 24, 32, 48, 64) около 467.

Цитата:
LokiMb писал:
318 во всех случаях

Цитата:
Government-Man писал:
Попробовал разные размеры кэша - ФПС около 647 и не меняется.

Ну ладно бы, фанат лошадок с головой не дружил, нео ведь серъезные уважаемые люди не способны ВДУМЧИВО ОСОЗНАТЬ ПРОЧИТАННОЕ.
Я не знаю, вы может посты набиваете? Или это какой-то коллективный разум?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 07-02-2014 в 16:05:

Цитата:
Дядя Миша писал:
И чтож теперь? Не воровать что ли?

Ты, как всегда, читаешь мои мысли.

Добавлено 07-02-2014 в 23:05:

Цитата:
Дядя Миша писал:
Ну ладно бы, фанат лошадок с головой не дружил, нео ведь серъезные уважаемые люди

Так они все фанаты лошадок небось.

__________________

xaerox on Vivino


Отправлено Government-Man 07-02-2014 в 16:52:

Цитата:
XaeroX писал:
Так они все фанаты лошадок небось.


Я фанат джигурды

Цитата:
Дядя Миша писал:
Два раза написал - если нету изменений, то отписываться не надо.


Как бы ты тогда узнал, действительно ли нет изменений, или же мы все дружно забили на тестирование?


Отправлено Дядя Миша 07-02-2014 в 17:01:

Цитата:
Government-Man писал:
Как бы ты тогда узнал, действительно ли нет изменений, или же мы все дружно забили на тестирование?

Я уже получил результаты и сделал выводы. Этот тест - опциональный.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 07-02-2014 в 17:44:

Цитата:
XaeroX писал:
Так они все фанаты лошадок небось.

Нет, только Кика Бутовского. Видимо, влияет =(


Отправлено Government-Man 07-02-2014 в 17:58:

Цитата:
Дядя Миша писал:
Я уже получил результаты и сделал выводы. Этот тест - опциональный.


А ну прости тогда нас за нашу коллективную тупость.


Отправлено Дядя Миша 07-02-2014 в 18:19:

Да, вам что ни говори - серавно по своему сделаете

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 23:11. Страницы (4): « 1 2 3 [4]
Показать все 60 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024