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

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 Следующая »
ПрограммированиеФорумГрафика

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