![]() |
Показать все 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)
Дядя Миша, вот они последствия использования шейдеров.
Нет никакой гарантии, что если нормально работает на одной видеокарте, то на другой тоже будет все нормально.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Первое тестирование выявило следующую закономерность: на Nvidia всегда всё работает, на радионах\интелах капризничает в меру своей устарелости. Т.е. например нвидия закрывает глаза на некоторые неявные касты, для радиона это ошибка. Хитрый интел иногда выдаёт желаемое за действительное - например уверяет о поддержке чего-то там, а на самом деле - ничего подобного. Ну и основной фейл - нежелание поддерживать bitwise operations. Я конечно могу их разложить на обычные кондишены, но вот более свежие радионы их уже поддерживают. Может дело таки в дровах?
А от шейдеров теперь не резон отказываться - видел какой прирост получился? в 10 раз.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А куда делся тред про паранойю? Кстати такие сильные покачивания игрока тоже не понравились, такое ощущение что игрок пьян. Стоит их убавить раза в 2.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Вот кстати про покачивания я и хотел спросить: откуда они и для чего писались? Для Paranoia 2?
у меня оно в окне запускается и счетчик фпс не видно, чядн?
продолжил исследование проблемы.
Там очень странная ситуация.
Если написать в шейдере:
bool test = bool( u_FaceFlags & 0x0001 ); |
bool test = bool( u_FaceFlags & STUDIO_NF_FLATSHADE ); |
#define STUDIO_NF_FLATSHADE 0x0001 |
const int STUDIO_NF_FLATSHADE = 0x0001; |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кстати, после этих изменений в шейдере fps в Hardware Mode поднялся с 85 до 120
Добавлено 04-02-2014 в 18:46:
Исправленный шейдер StudioDiffuse_vp.glsl
Просьба к людям проверить, есть ли изменение в fps
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
>> Это бенчмарк производительности. Причём тут покачивания игрока?
Оке, снимаю этот вопрос.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Перепроверил:
OS: Windows 7 Ultimate x32
CPU: Inter Core 2 Quad Q8200 @ 2.33GHz
GPU: Nvidia GeForce GTS 250 [GDDR3: 1024 Mb]
RAM: 2,00 Gb
--------------------------
Software Skining: 21 FPS
Hardware Skining: 193 FPS
Internal Render: 39 FPS
==========================================
OS: Windows XP Professional SP3 x32
CPU: Inter Core 2 Quad Q8200 @ 2.33GHz
GPU: Nvidia GeForce GTS 250 [GDDR3: 1024 Mb]
RAM: 2,00 Gb
--------------------------
Software Skining: 200 FPS
Hardware Skining: 2072 FPS
Internal Render: 230 FPS
fire64 проще говоря препроцессор ATI не разумеет HEX-числа.
Добавлено 04-02-2014 в 19:12:
GioHAUS0n мляя
Ну вот тема для результатов http://www.hlfx.ru/forum/showthread...=&threadid=4276
Ещё раз, флудить - здесь. Результаты - втуда: http://www.hlfx.ru/forum/showthread...=&threadid=4276
Это ты такой одарённый или все?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А чъорд. Я совсем позабыл, что на современных нубуках высота именно 768. 15.4 матрица?
Добавлено 04-02-2014 в 21:26:
Да и еще такой момент. Я лопухнулся и не учёл одно важное обстоятельство: при совершенно одинаковых конфигурациях нубук и десктоп будут различаться по производительности. Ну ладно, отложим это до новых тестов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1. Забинденные клавиши на Газмяс, аптечку, щиток и ещё чота.
2. Беленькие шрифты
3. Раскачивания экрана
4. Барабанная дробь... Спирт.длл
__________________
How interesting, just look at that!
© Scientist
Ku2zoff Что ясно? В ксашмоде client.dll и ещё пара штук. А параноя 2 на Спирте. В Ксаш-моде раскачивания экрана другие, а вот в Параное 2 они вероятно задумывались. Не уж то эти рассуждения столь нелогичны?
__________________
How interesting, just look at that!
© Scientist
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А как вообще выглядят обугленные куски фриманов и скукоженные фриманы? Покажите хоть что-ли, а то любопытно же.
Я старый тест удалил.
А хотя вот тут есть
http://hlfx.ru/forum/attachment.php?s=&postid=132354
__________________
УВАЖАЕМЫЕ ЖИРЫ ДЕРИТЕСЬ ЗА ПОНИ!
LokiMb
Ужас какой - реально обугленные останки.
У меня не работает ни на встроенной в ноут АТИ, ни на Интеле на ПК, вся потому что в шойдере много передается, тобишь вот это вот:
code:
uniform mat4 u_BoneMatrix[MAXSTUDIOBONES];
pRoxxx
Я думаю, Дядя Миша рано или поздно откроет для себя GL_EXT_bindable_uniform.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Это расширение было введено с 8-й серии жирафов. Из чего я делаю вывод, что оно относительно свежее. Если я его заюзаю - отвалятся младшие видимокарты. Вы как-то интересно рассуждаете.
Тогда уж проще не юзать аппаратный скиннинг, если аргументов маловато. Собственно, это я и сделаю впоследствии.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша почему бы не сделать несколько вариантов: для нвидии, для радеонов, для старых карт и для новых?
Government-Man вариант будет ровно один - если аргументов хватает - рисуем аппаратно-ускоренно. Если нехватает - рисуем софтварно. Ещё мне нехватало тестировать это всё на карточках 2004 года. Вон Ксерокс тестировал-тестировал и получилась Волатила в итоге.
А я не тестировал и получился Ксаш.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Что значит "3 или 4 варианта шейдера"
Вы шо с дубу рухнули? Простейший шейдер без изысков, какие тут могут быть варианты?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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
Ты вон под волатилу год назад развесовку выпросил - ну и где твои модели?
__________________
Все модели живут в привате =)
1 | typedef struct |
2 | { |
3 | char name[64]; |
4 |
5 | int type; // UNUSED |
6 | float boundingradius; // UNUSED |
7 |
8 | int nummesh; |
9 | int meshindex; |
10 |
11 | int numverts; // number of unique vertices |
12 | int vertinfoindex; // vertex bone info |
13 | int vertindex; // vertex vec3_t |
14 | int numnorms; // number of unique surface normals |
15 | int norminfoindex; // normal bone info |
16 | int normindex; // normal vec3_t |
17 |
18 | int numgroups; // UNUSED |
19 | int groupindex; // UNUSED |
20 | } mstudiomodel_t; |
21 |
22 | typedef struct |
23 | { |
24 | int numtris; |
25 | int triindex; |
26 | int skinref; |
27 | int numnorms; // per mesh normals |
28 | int normindex; // UNUSED! |
29 | } mstudiomesh_t; |
byte *pvertbone = ((byte *)m_pStudioHeader + pSubModel->vertinfoindex); |
byte *pvertbone2 = ((byte *)m_pStudioHeader + pSubModel->vertinfoindex) * pSubModel->numverts; |
byte *pvertbone3 = ((byte *)m_pStudioHeader + pSubModel->vertinfoindex) * pSubModel->numverts * 2; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я знаю, что сталкер лучше всего выглядит именно на статике. Думаешь почему я не спешу отказываться от лайтмап?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>> Я знаю, что сталкер лучше всего выглядит именно на статике. Думаешь почему я не спешу отказываться от лайтмап?
Какая тут связь? Сталкер на движке ксаша штоле ?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Да, сталкера и метро тоже будем на ксаше делать
Добавлено 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'
Индексы в OBJ пишутся? Или самому надо генерить?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да, вам что ни говори - серавно по своему сделаете
__________________
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:04. | Показать все 60 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024