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

Vertex attributes для shadow pass (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
21:51, 11 дек 2018

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

#16
22:07, 11 дек 2018

v1c
Дык если всё в одном буфере, оно один хрен в кэш попадает.

Кстати, забыли ещё индексы и матрицы костей, если анимация, тоже надо для теней.

#17
22:21, 11 дек 2018

Dampire
> Попробуй, потом расскажешь. Заодно ботлнек замеришь где.
надо же, как быстро ты переобулся ))

#18
7:18, 12 дек 2018

Misanthrope
Во что я переобулся, валенок? Читай полностью пост, а не то, что тебе так хочется увидеть.

#19
8:56, 12 дек 2018

Dampire
> В таком случае что подразумевается под дроколлом не подскажешь? Потому что сам
> дрокол (который glDraw*) не стоит практически ничего, по сравнению со стейт
> чейнджами, которые как раз таки обычно нормально так оптимизируют в OpenGL (в
> том числе и redunant).

Так стейт ченджи и происходят как раз во время дро колла. Иначе как еще фильтровать redundant?

Поменял VAO с другим форматом вершин перед вызовом gl*Draw? Поменял альфа-бленд перед вызовом gl*Draw? Драйвер еще и микрокод шейдера будет патчить. Патчить - это в лучшем случае. В худшем - перекомпиливать из сорца.

Даже затредив вызовы, драйвер все равно все это будет делать, правда, уже в другом треде, чо.

#20
9:54, 12 дек 2018

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

Кстати, да.
Если аттрибут присваивается переменной a, та присваивается b, а b нигде не используется и на конечный выхлоп не влияет - то все эти переменные будут отброшены, в том числе и атрибуты. Даже если они передаются в шейдер, но шейдер их не использует - расход на них будет ровно ноль. Даже если они передаются на каждом кадре.

#21
9:56, 12 дек 2018

Dampire
Да тут вообще все дураки, один ты умный. Кланиемся.

#22
10:17, 12 дек 2018

Wraith
> Так стейт ченджи и происходят как раз во время дро колла.

for(Mesh m: world->getStaticObjects())
{
  glDrawElements(GL_TRIANGLES, m.indexquantity, GL_UNSIGNED_INT, (GLvoid *)(m.bufferstart* sizeof(GLuint)));
}

Где здесь стейт ченджи?

#23
10:51, 12 дек 2018

Пока рендеришь одним шейдером, одним стейтом, и одним форматом вершин, - действительно, все хорошо и прекрасно.

#24
11:34, 12 дек 2018

Wraith

Для остального - indirect buffer,  multidraw* и ssbo,  да. и всё это с двойной буферизацией.

Ну или vad и texelfetch из текстуры при отсутствии вышеуказанных фич.

#25
11:43, 12 дек 2018

Wraith
> Поменял VAO с другим форматом вершин перед вызовом gl*Draw? Поменял альфа-бленд
> перед вызовом gl*Draw? Драйвер еще и микрокод шейдера будет патчить. Патчить -
> это в лучшем случае. В худшем - перекомпиливать из сорц

очень может быть - ты про нормальные апи расскажи

#26
11:43, 12 дек 2018

Wraith
> Пока рендеришь одним шейдером, одним стейтом, и одним форматом вершин, -
> действительно, все хорошо и прекрасно.

ты что-то скатился до уровня каса

#27
11:56, 12 дек 2018

Wraith
В реальном проекте все это строится на нескольких шейдерах, остальные стейты кроме вао и текстур переключаются вместе с ними. В итоге сортируется по шейдерам, текстурам и получаем дешёвые дипы. Если у тебя разный формат вершин на каждый дип, то ты явно что-то делаешь не так.

#28
11:59, 12 дек 2018

nonamezerox
> Для остального - indirect buffer, multidraw* и ssbo, да. и всё это с двойной
> буферизацией.
>
> Ну или vad и texelfetch из текстуры при отсутствии вышеуказанных фич.
Все так! Непонятно только зачем при наличии всей этой радости цепляться за OpenGL.

Я понимаю, там, айфон пятый, андроеды старые, или еще что похуже. Но там даже ubo не работает толком, куда уж там ssbo и индирект.

#29
12:04, 12 дек 2018

f1ufx_
> Кстати, да.
Кстати не совсем. В кэш у тебя фетчится блок. Если вао состоит из монолитного буфера вместе с позициями в кэш влезут и все остальные данные. Если же ты собираешься вао из нескольких буферов, то тут бабушка надвое сказала (надо уточнять, я не секу).

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

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