Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / OpenGL. Constant Buffer для бедных. (4 стр)

OpenGL. Constant Buffer для бедных. (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
innuendoПостоялецwww10 мар. 201815:08#45
Fantom09
> UBO нужен для шаринга статических данных между шейдерами/объектами а не чтоб
> заменить юниформы.
> К примеру - поместить туда матрицу проекции, матрицу вида, нормальную матрицу,
> поместить туда позиции источников света, свойства материалов и прочие данные,
> которые шарятся между всеми объектами (и еще реже обновляются).

Кастую сюда Andrey :)

DampireПостоялецwww10 мар. 201815:11#46
innuendo
Я, кстати, сомневаюсь, что с таким дропом в производительности будет какой-то буст даже если шарить статические данные (по крайней мере через влобное решения, как у меня). Дешевле будет 5 раз закинуть массив векторов/матриц, чем один раз обновить буфер.

p.s. у себя, я так понимаю, никто не проверял?

Правка: 10 мар. 2018 15:13

kasПостоялецwww10 мар. 201815:13#47
Dampire
> // glBufferSubData(GL_UNIFORM_BUFFER, uniforms[index].offset,
> uniforms[index].size, data);
https://www.khronos.org/opengl/wiki/Buffer_Object_Streaming
DampireПостоялецwww10 мар. 201815:36#48
kas
Слишком сложно. Инстансинг то больше не планируется, значит загоняться UBO больше не имеет смысла. Спросили тесты, я тесты сделал.
ArchiDevilПостоялецwww10 мар. 201815:37#49
Fantom09
> UBO нужен для шаринга статических данных между шейдерами/объектами а не чтоб
> заменить юниформы.
> К примеру - поместить туда матрицу проекции, матрицу вида, нормальную матрицу,
> поместить туда позиции источников света, свойства материалов и прочие данные,
> которые шарятся между всеми объектами (и еще реже обновляются).
О, тут срач намечается :)

Dampire
> Данные в UBO обновляются на каждый объект через буферсабдата.
Бедняга-драйвер :) Это ж не юниформы так делать, ну.

Правка: 10 мар. 2018 15:40

innuendoПостоялецwww10 мар. 201815:39#50
kas

Пошто тебя на GL потянуло ? Деньги не пахнут? Кушать хочется ?

DampireПостоялецwww10 мар. 201815:41#51
ArchiDevil
А о чем сраться? По факту то так оно и есть. Даже та картинка про стоимость привязки ресурсов дает пруфы. Смысл есть только если в регистры не влазит или инстансинг или еще что. Я делал только потому, что думал о инстансинге и еще жутко неудобно п/инвокать много вызовов через шарп, но иннуенда подкинул идею с дефайнами в шейдере и все решилось.
kasПостоялецwww10 мар. 201815:46#52
Dampire
> Слишком сложно. Инстансинг то больше не планируется, значит загоняться UBO
> больше не имеет смысла. Спросили тесты, я тесты сделал.
что там сложного то? это не тесты а хрень какаято, ну т.е. ты померял попугаев. сделал вывод что так делать не надо. сюрприз - так никто и не делает)

Dampire
> Смысл есть только если в регистры не влазит
какие регистры? откуда дровишки?

innuendoПостоялецwww10 мар. 201815:46#53
ArchiDevil
> О, тут срач намечается :)

Кто-то не умеет читать доки

innuendoПостоялецwww10 мар. 201815:47#54

kas

Ты что сюда прибежал ? На кружочках скучно ?

DampireПостоялецwww10 мар. 201815:53#55
kas
Так возьми и переделай. Мне заняться больше нечем?
innuendoПостоялецwww10 мар. 201815:59#56
Dampire
> но иннуенда подкинул идею с дефайнами в шейдере и все решилось.

иннунда придумал эту идею в 2008 году за пару минут влёт в споре с Andrey :)

DampireПостоялецwww10 мар. 201816:04#57
innuendo
Я в каком-то треде не так давно видел, вроде.
Fantom09Постоялецwww10 мар. 201816:13#58
Dampire
> Код приведен, с чтенем проблемы?
Да, со зрением совсем плохо, покажи где там код процедуры ConstantBuffer::Update(pfBuffer, perFrame) и где код шейдера.
В первом посте я увидел только то, что у тебя есть буфер в котором 90% данных статичны, тоесть вообще не требуют обновления на каждом кадре, тоесть задаются для шейдера один раз на этапе инициализации и изменения параметров (туман, разрешение, цвет фона и прочее).
Из динамических данных там только 2 юниформы -  view и invProjView, при этом, даже их не нужно менять на каждом кадре, сомневаюсь что у тебя камера делает 1000 оборотов в секунду вокруг сцены.
Потому возникает вполне логичный вопрос - анахуа загонять остальные данные на каждом кадре? Отсюда и все остальные вопросы. Тоесть примененный подход просто бредовый по определению, но виноват конечно же UBO.
Возможно у меня проблемы со зрением и я действительно чего-то не вижу, к примеру чтоб вообще передавались данные для объектов, ни в коде ни в шейдере, потому логично было спросить о коде шейдера.

И это не "очень умные" ответы, это очевидные вопросы.

ArchiDevil
> О, тут срач намечается :)
А смысл? Человек вместо оптимизации подходов и алгоритмов делает микрооптимизации, я попробовал объяснить почему это не верно, если он не хочет слушать - его дело, мне от этого не тепло не холодно.

DampireПостоялецwww10 мар. 201816:22#59
Fantom09
> Да, со зрением совсем плохо, покажи где там код процедуры ConstantBuffer::Update(pfBuffer, perFrame)
Сверху комментом. До всех дошло, кроме тебя. Код шейдера тут каким боком? Про лечилово о view/invProjView - прикинь, каждый кадр. У меня шутер. Это раз. Во-вторых ты просил объемы. То же самое. В треде сказано, что объемы сопоставимы с нуль-постом. Но зачем читать, если можно не читать, верно? Третье. Все это точилось под инстансинг и гонево про то, что "надо заливать сразу много и один раз" уже обсуждалось, но ты с умным лицом лечишь мне то, что я и так уже знаю. Тред почитай. Удивились, спросили откуда такая просадка, я показал откуда и каким кодом. Ручную синхронизацию обсуждали еще 2 страницы назад. Ты с умным видом перепечатал то, что уже давно обсудили на нескольких страницах и гонишь "Человек вместо оптимизации подходов и алгоритмов делает микрооптимизации". Тред не читай@Сразу отвечай.

И до кучит ответ kas и тебе по поводу последующих оптимизаций. У меня рендер выдает и без того под 350 кадров с 3.5к дипов, когда в игре будет от силы 400. На кой черт мне сейчас загоняться, архитектурить архитектуры, если и так прекрасно и быстро работает? Академический онанизм мне не интересен. Когда упрусь, тогда и переделаю.

Правка: 10 мар. 2018 16:30

Страницы: 1 2 3 4 5 6 Следующая »

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

2001—2018 © GameDev.ru — Разработка игр