Size: a a a

pro.graphon (and gamedev)

2020 February 25

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
SSBO это самое простое что можно придумать, просто буфер
Чтение из буфера может сильно замедлить отрисовку и основной поток если элементов очень много?
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Nikita Kosenkov
Чтение из буфера может сильно замедлить отрисовку и основной поток если элементов очень много?
Оно просто вызовет синхронизацию
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Лучше делай чтение в самом конце кадра, либо вообще на следующем
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
(Если двойная буферизация)
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
Лучше делай чтение в самом конце кадра, либо вообще на следующем
В конце кадра это всмысле после вызова gldraw....instanced?
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Nikita Kosenkov
В конце кадра это всмысле после вызова gldraw....instanced?
Нет, в самом конце. Потому что glDraw не начнёт отрисовку тут же. Драйвер создаст очередь команд и во время SwapBuffers (либо glFinish) сделает submit в GPU
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Лучше всего читать буфер на следующем кадре, но смотри по перфу сам
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Вообще с синхронизациями лучше разбираются @Triang3l и @Ioann_V
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Columbus Utrigas
Нет, в самом конце. Потому что glDraw не начнёт отрисовку тут же. Драйвер создаст очередь команд и во время SwapBuffers (либо glFinish) сделает submit в GPU
Submit это непосредственно начало выполнения командного буфера на GPU
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
Submit это непосредственно начало выполнения командного буфера на GPU
Я просто думал все мои команды на отрисовку сразу штампуют картинки и при swap он просто подменяет пустоту на уже готовый рисунок (так сказать)
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
Submit это непосредственно начало выполнения командного буфера на GPU
Хотел ещё раз сказать огромное спасибо что не остался равнодушным! Я сейчас буду пробовать ssbo, не довелось ещё с ним работать не разу. Потом если что вернусь 😃
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Nikita Kosenkov
Я просто думал все мои команды на отрисовку сразу штампуют картинки и при swap он просто подменяет пустоту на уже готовый рисунок (так сказать)
Нет, оно асинхронно работает. Можешь почитать про Deferred Context в D3D11, или как оно устроено в D3D12/Vulkan/Metal
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
Нет, оно асинхронно работает. Можешь почитать про Deferred Context в D3D11, или как оно устроено в D3D12/Vulkan/Metal
Понял, спасибо!
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
Нет, оно асинхронно работает. Можешь почитать про Deferred Context в D3D11, или как оно устроено в D3D12/Vulkan/Metal
Можно последний вопрос? Почему transformfeedback не работает в моем случае (ну чтобы фундаментально понимать)
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Nikita Kosenkov
Можно последний вопрос? Почему transformfeedback не работает в моем случае (ну чтобы фундаментально понимать)
В душе не ебу
Может кто-то ещё знает
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Columbus Utrigas
В душе не ебу
Может кто-то ещё знает
🤣я понял
источник

K

Kirill in pro.graphon (and gamedev)
Nikita Kosenkov
Можно последний вопрос? Почему transformfeedback не работает в моем случае (ну чтобы фундаментально понимать)
Divisor какой ставишь?
источник

NK

Nikita Kosenkov in pro.graphon (and gamedev)
Kirill
Divisor какой ставишь?
Не очень понимаю как это связано( но при формировании буффера для рисования инстансов divisor=1
источник

K

Kirill in pro.graphon (and gamedev)
Ну, ты включаешь feedback и рисуешь объекты через glDrawArraysInstanced
Чтобы это работало - для output буфера надо поставить divisor не 1, а равный количеству отрисованных элементов
источник

K

Kirill in pro.graphon (and gamedev)
(есть вероятность что я сказал херню, но ты попробуй, вдруг получится)
источник