Sidebar

XashXT нубские вопросы.

Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Параноя по-идее теперь должна почти у всех работать. Я очень многое сделал в этом направлении. Больше ничего сказать не могу.
 

mittorn

Active member
22.04.10
1 229
22
38
2 nemyax:
ну с glsl там всё нормально. За виндовые драйверы не скажу, таких не держу, но mesa в linux справляется достаточно хорошо.
Паранойя правда там не рисует браши если не убрать flat varying в шейдерах, но это особые запросы конкретной игры. И то я не проверял на свежих обновах, не знаю как теперь.
 

nemyax

тндайпц тра
Команда форуму
Модератор
30.07.15
643
25
18
Ты фпараное какую версию GLSL используешь?
 

mittorn

Active member
22.04.10
1 229
22
38
2 nemyax:
на данный момент в mesa glsl 3.3
Полную поддержку расширений можно тут посмотреть: http://mesamatrix.net/
Как с виндой дела не знаю, но т.к разработчик mesa бэкенда и драйвера в windows один, а в месу они изменения внедряют позже, можно предположить что различия не сильно существенны и не в пользу линуксового драйвера

P.S
В паранойе вроде shader4 использовался раньше, что вызывало проблемы, пеперь он опционален:
https://github.com/FWGS/p2s-glsl/blob/master/BmodelSolid_fp.glsl
 
Останнє редагування:

nemyax

тндайпц тра
Команда форуму
Модератор
30.07.15
643
25
18
Вах, не знал, что сорцы рендера паранои опубликованы.
 

mittorn

Active member
22.04.10
1 229
22
38
2 nemyax: там только шейдеры вынутые из пака. По ним можно пытаться понять как работает рендер. А если протрассировать входные и api-функции то и воспроизвести его при сильном желании.
Но я не уверен что оно того стоит. Полагаю, что там через vbo рисуется каждая поверхность отдельно. Профит только для тех у кого узкая шина памяти. От того у меня 30-50 fps рисуется.
Нужна буфферизация. Я полагаю, что для современных gpu имеет смысл отказаться от куллинга и для каждой единицы текстура-лайтмапа построить массив, который сохранять до изменения pvs. Но нужна какая-то оптимизация перестройки массивов. Иначе микрофризы при смене pvs могут стать макрофризами
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Вах, не знал, что сорцы рендера паранои опубликованы.
Я тоже не знал.
Полагаю, что там через vbo рисуется каждая поверхность отдельно
Это как?
Я полагаю, что для современных gpu имеет смысл отказаться от куллинга и для каждой единицы текстура-лайтмапа построить массив, который сохранять до изменения pvs
Любители порассуждать при попытке реализовать свои выдумки обычно со всего размаха налетают мордой апстену. Ну или об грабли - кому что больше нравится.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Отдельным вызовом. Т.е в цикле вызывается glDrawArrays(массив такой-то поверхности) для каждой поверхности, иначе не получится куллить поверхности т.к будет один готовый vbo для всего texturechain

Post automatically merged:

Дядя Миша сказав(ла):
Любители порассуждать при попытке реализовать свои выдумки обычно со всего размаха налетают мордой апстену. Ну или об грабли - кому что больше нравится.
Потому я пока изучаю материалы чтобы не тратить время впустую. Иначе реализую, оно будет тормозить как минесруфт, а к тому моменту придумаю как сделать лучше.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Т.е в цикле вызывается glDrawArrays(массив такой-то поверхности)
Нет. Весь мир в одном большом полностью статичном VBO. Все поверхности отсортированы чтобы уменьшить кол-во переключений стейтов. Отрисовка = накопление индексов видимых поверхностей на CPU до первой смены стейта. Перед сменой стейта накопленные индексы разом засылаются в видеокарту.
Студиомодели так же полностью в видеопамяти, они не обновляются. Обновляется только трава, пополигонно. К каждому полигону прилинковано несколько VBO со всеми кустами. Различаются только текстурой. Но может я когда-нибудь эти кустики засуну в атлас, просто самому GL плевать один VBO или куча, а атлас потребует до себя текстурных координат и как следствие вырастет вес вертекса травы, а он и так немаленький - там записаны лайтстили.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Спсаибо, хотя мне уже подсказали способ с индексами. К сожалению я забыл про существование индексов и хотел всё уместить в уже готовом массиве треугольников, забыв очевидный способ.
Как рисуются модели я знаю, нам такой способ не подходит т.к с ним не справятся некоторые мобильные gpu, которых большинство. Там юниформ не хватит для матрицы костей. У нас сейчас bottleneck - отрисовка брашей, модели же после перехода на glDrawElements не вызывают тормозов даже в достаточно запущенных случаев портов моделей с source.
Трава получается - glDrawArraysInstanced()?
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Я инстансы не пользую, у меня всё в вертексах сохраняется. Да ты же видел шейдеры.

Post automatically merged:

И вообще я не понимаю, на кой вам сорцы паранои. Ведь самое вкусное - в шейдерах, а они открыты.
 
Останнє редагування:

a1batross

Umu~!
06.01.15
674
27
2 Дядя Миша:
С gl1/gles1 не порисуешь оптимально на слабеньких видеочипах мобильников.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша: а я траву ещё не смотрел даже. Мне просто она пока менее всего интересна была. Вечная проблема у нас - браши, вот туда я и смотрел, а там шейдер говорит не о многом, к тому же долгая война с интелами и ати показала, что как раз шейдеры брашей не очень хорошо справляются на экзотике.
А шейдеры для студиомоделей интересны, не спорю. У меня даже идея есть: в зависимости от лимитов gpu подсчитать максимальное количество костей для которых можно использовать VBO. Тогда если модель без анимации или имеет мало костей - считать её в gpu. Но это уже всё после выноса рендера в отдельную библиотеку.
Рендер придётся вынести отдельно по такой причине: невозможно одновременно использовать gles1 и gles2 api. Проинициализировал одно и используй. А общих у них совсем немного: загрузка текстур, загрузка массивов, glBlend*, glDepth*, glDraw*. Очевидно что нужно выбрать версию api, а потом весь код уже должен работать в пределах одного api. Внешний рендер (полностью включая инициализацию, загрузку текстур и рендер всего 2d в движке) тут оказывается незаменим
На трансляторах далеко не продвинешься. Уже есть транслятор в gl1.5 в gles2. Толку от него немного т.к в результате эмуляция работает медленнее и с каждым новым реализованным состоянием производительность уменьшается.
 

Sozon

призрак форума КСМ
11.09.11
513
26
28
вообщем вылазит пока 1 ошибка именно открывая server.dsp не может найти windows.h как эти dsp дирректории перенастроить у меня же не диск D:\ :) Чтобы я знал , а так в основном ошибки пока с невозможность найти нужные файлы.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Sozon:
а может надо просто посмотреть какие дефайны и исходники в проекте и создать проект с нуля? Я всегда так делаю даже если собираю из IDE студии ибо чёрт бы побрал эти проекты студии.
 

Sozon

призрак форума КСМ
11.09.11
513
26
28
mittorn сказав(ла):
2 Sozon:
а может надо просто посмотреть какие дефайны и исходники в проекте и создать проект с нуля? Я всегда так делаю даже если собираю из IDE студии ибо чёрт бы побрал эти проекты студии.
Тоже мысль. Это чего все dsp с нуля просто собрать? в новый файл? :) должно заработать. попробую завтра.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Sozon:
Ну там ещё include path и дефайны. В разных студиях по разному называются в настройках проекта.
 

ILZM

3 в 1
28.03.11
505
Почему энтити с физикой проходят сквозь стены? Изначально шаг стоит 150, поменял на 200, вроде бы тоже самое. Поставил SOLVER_ITERATION_COUNT с 16 на 48 - тот же результат. Мб меш слишком узкий?

phys_debug 0

phys_debug 1

Еще давным давно, когда вышел BulletMod для кс 1.6, который использует bullet physics, тестировал на этом же меше. Тогда таймстеп стоял 120. Даже после взрыва гранаты, меш не проходил сквозь поверхности. Но когда начинали взаимодействовать более 20 физических объектов, появлялись лаги, а в физиксе не логает. Это я так, просто сравнил
 

Game Server

Доноры Красавчики

Користувачі онлайн