|
---|
![]() |
#101 | |
KiQ
Старший сержант
![]() ![]() ![]()
Регистрация: 12.07.2010
Сообщения: 397
|
![]() 2 Дядя Миша:
почитал сейчас, это не то. Выяснил, что у меня 1024 юниформа. Точнее их 4096, но каждый флоат занимает по 4. Интересно, это хардовое ограничение, или можно драйвер модифицировать? Кстати, сколько вообще матриц передается на вершину? |
|
![]() |
![]() |
![]() |
#102 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() ATI хитрожопая, считает не юниформы, а байты. Поэтому их в 4 раза больше получается, якобы. Каждый юниформ = 1 флоат. В матрице 16 флоатов. Можно было бы конечно передавать матрицы 3х4, но старые версии OpenGL такого попросту не умеют, видимо из-за отсутствия выравнивания сильно падает скорость работы. Новые умеют, но там и так юниформов дофигищща. Матриц максимум передается 128 (макс. кол-во костей). Параноя в последних версиях научилась использовать юниформы экономно, считает сколько понадобится реально, может работать на половинном кол-ве (т.е. 64 кости), но нужен еще резерв на остальные параметры. Если запустить параною с -dev 5, то она напишет пиковое кол-во используемых униформов без учёта костей. Там в раёне 220-260 юниформов. Т.е. минимально приемлемое кол-во юниформов равно 1024 + 260, но поскольку их бывает только кратное кол-во, то минималка - 2048 юниформов. А у тебя всего-навсего 1024.
|
|
![]() |
![]() |
![]() |
#103 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() Пробежал по списку, много весят несжатые текстуры из вадов и моделей и спрайты (был спрайт на 12 МБ). И вопрос возник: для несжатых текстур мипы не делаются? Потому что в списке для них размер указан только полного разрешения. Или они на самом деле в памяти еще больше на треть? И я думал, что пушки не кэшируются, поэтому импульс такой долгий. ncuxonaT, подумав, добавил 28.10.2015 в 16:40 |
|
Последний раз редактировалось ncuxonaT, 28.10.2015 в 16:40. |
||
![]() |
![]() |
![]() |
#104 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() Текстурлист может брехать для DDS, кстати. Я вроде бы проверял, но до конца не уверен. Фреймбуфферы тоже будут в этом списке текстур, поскольку сам фреймбуффер не весит ничего, весит, собственно текстура, которая к нему приаттачена. Мипы делаются, а вот учитывается ли это в команде текстурлист - ейбогу не помню. Скорее всего да.
|
|
![]() |
![]() |
![]() |
#105 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() |
|
![]() |
![]() |
![]() |
#106 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() матрица для тангент-спейса берется из матрицы для текущей кости.
Намекаешь, что надо брать из корневой? Можешь попробовать весь тангент трансформировать через u_BoneMatrix[0] но ИМХО ерунда получится. |
|
![]() |
![]() |
![]() |
#107 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() Да, ерунда получается.
Но я про другое говорил. Модель в фарш превращается перед загрузкой в VBO? attr_Binormal, который передаётся в шейдер, рассчитывается до того, как модель превратилась в фарш, или после? |
|
![]() |
![]() |
![]() |
#108 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() ![]() В VBO лежат вертексы и нормали, которые не умножены ни на какую матрицу. Т.е. то, что записано в самой модели. Бинормаль и тангента рассчитываются для этой дефолтной позы. Точно так же устроено и в хл2, с одной лишь оговоркой - там есть развесовка, которая безусловно вносит свой вклад. Я вообще, если честно не видел бампа на моделях без развесовки. Ни в параное, ни в хлфх, ни в одной коммерческой игре такого нет. Всегда, если есть бамп. значит есть и развесовка. Я думаю всё дело в этом и только в этом. Тем более как ты говоришь, если анимаций нет, то и проблем нет тоже. |
|
![]() |
![]() |
![]() |
#109 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() 2 Дядя Миша:
если убрать умножение на матрицы костей, модель с костями превращается в фарш. Почему? |
|
![]() |
![]() |
![]() |
#110 | |
KiQ
Старший сержант
![]() ![]() ![]()
Регистрация: 12.07.2010
Сообщения: 397
|
![]() 2 ncuxonaT:
есть там такая фишка, так как в анимациях матрицы костей уже преумножены на дефолтную позу, то при загрузке модели мы должны произвести ее свертывание по обратным матрицам согласно иерархии скелета. Но там вроде не просто обратная матрица, а какая-то хитрая KiQ, подумав, добавил 29.10.2015 в 10:26 Хотя по идее, это нужно делать после каждой смены анимации |
|
Последний раз редактировалось KiQ, 29.10.2015 в 10:26. |
||
![]() |
![]() |
![]() |
#111 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() Ну в хл2 эта матрица записана в структуру кости, а в хл1 - предумножена в компиляторе.
|
|
![]() |
![]() |
![]() |
#112 | |
KiQ
Старший сержант
![]() ![]() ![]()
Регистрация: 12.07.2010
Сообщения: 397
|
![]() 2 Дядя Миша:
она уже в smd предумножена, насколько я помню |
|
![]() |
![]() |
![]() |
#113 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() 2 KiQ: ну сравни сорцы компиляторов хл1 и хл2 - поймешь о чём я.
Иногда это довольно неудобно, что нет матрицы кости. |
|
![]() |
![]() |
![]() |
#114 | |
KiQ
Старший сержант
![]() ![]() ![]()
Регистрация: 12.07.2010
Сообщения: 397
|
![]() 2 Дядя Миша:
локальной матрицы имеется в виду? |
|
![]() |
![]() |
![]() |
#115 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() Друзья, я так и не разобрался.
|
|
![]() |
![]() |
![]() |
#116 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() Повторю вопрос.
При компиляции модели, её геометрия сворачивается исходя из положения костей дефолтной позы? И все анимации так же сворачиваются? И attr_Normal, attr_Tangent и attr_Binormal рассчитываются для этой свернутой модели и передаются в шейдер? Возможно ли перед их расчетом поставить модель в позу из любой анимации? Ну чтобы не для фарша всё считать. И еще вопрос возник. Почему тени так лагают?) Ну то есть при включении фонаря фпс падает с 70 до 60. Причём разрешение шедоумапы на фпс не влияет, одинаковый просед и при 32, и при 2048. PCF влияет, но не сильно. |
|
![]() |
![]() |
![]() |
#117 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() Так это же не аддикативные позы, они равнозначные. Нельзя умножить позу на позу.
В любом случае это отдельный проход. |
|
![]() |
![]() |
![]() |
#118 | |
ncuxonaT
Подполковник
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 05.05.2013
Сообщения: 1,149
|
![]() Код:
[U]r_shadows: 0 1 3 [/U] size=32 98fps 94fps 83fps ssize=2048 98fps 90fps 77fps |
|
![]() |
![]() |
![]() |
#119 | |
KiQ
Старший сержант
![]() ![]() ![]()
Регистрация: 12.07.2010
Сообщения: 397
|
![]() 2 ncuxonaT:
нормалмэппинг? Проективный свет? |
|
![]() |
![]() |
![]() |
#120 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() Для свернутой модели в виде фарша. Но она не свернутая. Там полюбому есть дефолтная поза, если бы ты мог умножить эти вертексы на мировую матрицу, я думаю она бы себя проявила, но в шейдеры студиомоделей таковая не передается, поскольку она еще в рендерере пердумножается на иерархию. Отсюда и иллюзия, что там фарш.
Они все точатся под отложенное освещение. Вот большой фреймбуффер по памяти гонять - на здоровье. А как филлрейт - смерть. Это началось примерно с 8х серии жифорсов. Потому что на шестых жифорсах даже VA летали как ненормальные, а на 8х смотрю - чёта воще тухло, даже медленнее чем было. А потому что перестали всё это оптимизировать. Иными словами можно сделать отложенный рендер и нарисовать полтора ляма поликов в кадре и получить те же сто фпс. |
|
![]() |
![]() |