Войти
ПрограммированиеФорумГрафика

Шейдера: важно ли количество байтов, приходящихся на 1 вершину ?

Страницы: 1 2 Следующая »
#0
21:05, 4 фев 2015

Слышал мнение о том, что для шейдера очень хорошо, когда размер данных, приходящихся на 1 вершину кратен 32 байта. В этом случае, якобы, обработка вершин происходит быстрее. Если это действительно правда, то получается, что нужно добавлять в формат вершины "пустые байты", чтобы искусственно сделать кратность 32 байта на вершину. Решил поинтересоваться, насколько это соответствует действительности. Интересует и DX, и OpenGL, хотя подозреваю, что принцип должен быть одинаков.

#1
21:16, 4 фев 2015

выравнивание для кешлинии? стартовые адреса должны находиться на кратных границах
добавлять не обязательно если кеш справляется

#2
21:24, 4 фев 2015

clc
>добавлять не обязательно если кеш справляется
А если не справляется ? т.е. в моем случае неизвестно заранее, на каком железе будет всё это работать. Разброс в пределах от мобилок до консолей.

#3
22:01, 4 фев 2015

Odin_KG
> Разброс в пределах от мобилок до консолей.
Покупаешь железо, берешь софт от вендоров железок и оптимизируешь.

#4
22:03, 4 фев 2015

Odin_KG
> Слышал мнение о том, что для шейдера очень хорошо, когда размер данных,
> приходящихся на 1 вершину кратен 32 байта.

Точнее всякие там 32/64
Можно не только вставлять пустышки, но паковать по возможности.

#5
22:06, 4 фев 2015

максимально использовать кеш -> избавляться от разреженности, форматы данных \ реалтайм компрессия/декопрессия \ предрасчёты/предсказания \ генерация
но с таким разбросом по производительности...

#6
22:14, 4 фев 2015

В общем я понял, что это явление имеет место быть, и оно может оказывать влияние. Пока остановлюсь на способе борьбы "опциональная пустышка".

Всех благодарю за советы!

#7
17:17, 5 фев 2015

Это все сильно зависит от драйверов и самих карточек.
Раньше (очень давно) было очень круто передавать вершины в short(6 байт на координату) - и это реально летало.
Потом что-то изменилось, и стало тормозить - очень уж кто-то по середине нормальные флоаты захотел :(

#8
17:57, 5 фев 2015

Odin_KG
Все зависит от ГПУ. ИМХО, стоит выбрать мин спек, все что мощнее будет и так работать, даже если не выравнивать данные и т.д.
Если тебя интересуют мобилки, то на Imagination PVR'ах 5-й серии аттрибуты вершин надо выравнивать на 4 байта. Т.е. если у тебя позиция это 3 шорта, то надо добавить еще 2 байта паддинга

#9
18:25, 5 фев 2015

Kashey
>Потом что-то изменилось, и стало тормозить - очень уж кто-то по середине нормальные флоаты захотел :(
Ну, у меня все атрибуты вершины всегда кратны 4 байта :-) Т.е. везде float, кроме цвета, который состоит просто из 4-х байтов RGBA.

StiX
> ИМХО, стоит выбрать мин спек, все что мощнее будет и так работать, даже если не выравнивать данные и т.д.
Я для себя решил вопрос самым стандартным способом - свалил эту проблему на голову пользователя. Т.е. в функции, которая формирует буфер вершин, я добавил параметр, который определяет кратность. Если эту кратность указать, то буфер вершин сформируется с учетом этого требования. Если кому-то нужно, то он сможет это выравнивание использовать. На мой взгляд, это самый лучший вариант, который снимает с меня лишнюю "головную боль" по этому поводу.

#10
19:07, 5 фев 2015

Odin_KG
> Т.е. в функции, которая формирует буфер вершин, я добавил параметр, который
> определяет кратность.
А зачем? Если пользователь захочет паддинг - то он и так может его добавить?!

#11
21:10, 5 фев 2015

StiX
>А зачем? Если пользователь захочет паддинг - то он и так может его добавить?!
У меня внешний рендер, т.е. я сам всё формирую, а потом пользователь рисует как ему нужно. И я заранее не знаю формат вершин, потому что он меняется под конкретный спецэффект.

#12
23:32, 5 фев 2015

Odin_KG
Можно конечно попробовать писать в "пустые байты" доп. информацию, допустим для тесселятора.

#13
1:50, 6 фев 2015

Odin P. Morgan
> Можно конечно попробовать писать в "пустые байты" доп. информацию, допустим для
> тесселятора.
Да у меня и нет ничего дополнительного :-)

#14
11:36, 6 фев 2015

Odin_KG
Если использовать сплайны сразу появиться доп информация, потому что вспомогательные вершины можно представить именно этой самой доп. информацией.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.