Sidebar

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

nemyax

тндайпц тра
Jul 30, 2015
633
23
16
2 Дядя Миша:
Думаю купить кетайскую безвентиляторную коробочку на i5 и любопытствую, как на ней с GLSL (и как с наоборот).
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Параноя по-идее теперь должна почти у всех работать. Я очень многое сделал в этом направлении. Больше ничего сказать не могу.
 

mittorn

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

mittorn

New member
Apr 22, 2010
1,213
15
0
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
 
Last edited:

nemyax

тндайпц тра
Jul 30, 2015
633
23
16
Вах, не знал, что сорцы рендера паранои опубликованы.
 

mittorn

New member
Apr 22, 2010
1,213
15
0
2 nemyax: там только шейдеры вынутые из пака. По ним можно пытаться понять как работает рендер. А если протрассировать входные и api-функции то и воспроизвести его при сильном желании.
Но я не уверен что оно того стоит. Полагаю, что там через vbo рисуется каждая поверхность отдельно. Профит только для тех у кого узкая шина памяти. От того у меня 30-50 fps рисуется.
Нужна буфферизация. Я полагаю, что для современных gpu имеет смысл отказаться от куллинга и для каждой единицы текстура-лайтмапа построить массив, который сохранять до изменения pvs. Но нужна какая-то оптимизация перестройки массивов. Иначе микрофризы при смене pvs могут стать макрофризами
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Вах, не знал, что сорцы рендера паранои опубликованы.
Я тоже не знал.
Полагаю, что там через vbo рисуется каждая поверхность отдельно
Это как?
Я полагаю, что для современных gpu имеет смысл отказаться от куллинга и для каждой единицы текстура-лайтмапа построить массив, который сохранять до изменения pvs
Любители порассуждать при попытке реализовать свои выдумки обычно со всего размаха налетают мордой апстену. Ну или об грабли - кому что больше нравится.
 

mittorn

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

[ADDED=mittorn]1494605699[/ADDED]
Дядя Миша said:
Любители порассуждать при попытке реализовать свои выдумки обычно со всего размаха налетают мордой апстену. Ну или об грабли - кому что больше нравится.
Потому я пока изучаю материалы чтобы не тратить время впустую. Иначе реализую, оно будет тормозить как минесруфт, а к тому моменту придумаю как сделать лучше.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Т.е в цикле вызывается glDrawArrays(массив такой-то поверхности)
Нет. Весь мир в одном большом полностью статичном VBO. Все поверхности отсортированы чтобы уменьшить кол-во переключений стейтов. Отрисовка = накопление индексов видимых поверхностей на CPU до первой смены стейта. Перед сменой стейта накопленные индексы разом засылаются в видеокарту.
Студиомодели так же полностью в видеопамяти, они не обновляются. Обновляется только трава, пополигонно. К каждому полигону прилинковано несколько VBO со всеми кустами. Различаются только текстурой. Но может я когда-нибудь эти кустики засуну в атлас, просто самому GL плевать один VBO или куча, а атлас потребует до себя текстурных координат и как следствие вырастет вес вертекса травы, а он и так немаленький - там записаны лайтстили.
 

mittorn

New member
Apr 22, 2010
1,213
15
0
2 Дядя Миша:
Спсаибо, хотя мне уже подсказали способ с индексами. К сожалению я забыл про существование индексов и хотел всё уместить в уже готовом массиве треугольников, забыв очевидный способ.
Как рисуются модели я знаю, нам такой способ не подходит т.к с ним не справятся некоторые мобильные gpu, которых большинство. Там юниформ не хватит для матрицы костей. У нас сейчас bottleneck - отрисовка брашей, модели же после перехода на glDrawElements не вызывают тормозов даже в достаточно запущенных случаев портов моделей с source.
Трава получается - glDrawArraysInstanced()?
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Я инстансы не пользую, у меня всё в вертексах сохраняется. Да ты же видел шейдеры.

[ADDED=Дядя Миша]1494608156[/ADDED]
И вообще я не понимаю, на кой вам сорцы паранои. Ведь самое вкусное - в шейдерах, а они открыты.
 
Last edited:

mittorn

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

Sozon

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

mittorn

New member
Apr 22, 2010
1,213
15
0
2 Sozon:
а может надо просто посмотреть какие дефайны и исходники в проекте и создать проект с нуля? Я всегда так делаю даже если собираю из IDE студии ибо чёрт бы побрал эти проекты студии.
 

Sozon

призрак форума КСМ
Sep 11, 2011
497
18
0
mittorn said:
2 Sozon:
а может надо просто посмотреть какие дефайны и исходники в проекте и создать проект с нуля? Я всегда так делаю даже если собираю из IDE студии ибо чёрт бы побрал эти проекты студии.
Тоже мысль. Это чего все dsp с нуля просто собрать? в новый файл? :) должно заработать. попробую завтра.
 

mittorn

New member
Apr 22, 2010
1,213
15
0
2 Sozon:
Ну там ещё include path и дефайны. В разных студиях по разному называются в настройках проекта.
 

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord