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

Vulkan API (вышел!) (620 стр)

Страницы: 1619 620 621 622627 Следующая »
#9285
(Правка: 18:01) 17:58, 25 апр 2022

Из темы выше:

HLSL код игра генерит на лету в зависимости от количества источников света и многих многих факторов задаются константы, дефайны итд, по этому HLSL нужно компилить именно в рантайме

А как такое делать в вулкане нативно? (например это Редактор карт(встроенный в игру) и шейдер для каждого блока на карте собирается при создании блока...)

Пересборка пайлайна на каждое добавление нового блока(в редакторе пользователем)?
Ждать компиляции шейдера ожидая с шейдером-плейсхолдером пока все скомпилируется(в другом потоке)... и всеравно лаг будет при загрузке(компиляции) spirv в драйвер...

Чтоб идеально и без лагов - создавать еще один пайлайн и грузить там всю текущую карту(все шейдеры) с новым, и пока другой пайлайн не сгенерировал первый кадр показывать текущий с плейсхолдером... но теперь ФПС будет прыгать из-за создания/удаления огромных пайлайнов в которых и все фреймбуферы и тормозной памяти...

И чтоб ФПС не прыгал нужно в (своем)менеджере памяти выделять/освобождать память потихоньку чтоб не перегрузить тормозные шины, в этоже время рендеря все и откладываеть генерацию новых "шейдеров" пока все освобождается и юзер добавляет блоки в редакторе...

Мы точно в 2022? Почему полностью отсутствует автоматизация всего вышеперечисленного? (а реализация вышеперечисленного считается "дефолтом" для разработки игры, когда это ппц какое инженерное решение)

#9286
0:29, 27 апр 2022

Довели до абсурда ситуацию с комбинаторным взрывом кол-ва шейдеров, а виноват оказывается Vulkan.

#9287
20:22, 27 апр 2022

melvy
> памяти выделять/освобождать память потихоньку чтоб не перегрузить тормозные шины
Как это? Потихоньку? Это как?

#9288
20:51, 27 апр 2022

lookid
> Как это? Потихоньку? Это как?
Я думаю имеется ввиду ограничение на пропукную способность шины в Гб/с, поэтому если ты за один кадр, который занимает 1/60с передашь больше, чем может пропустить шина, то получишь простаивание ГПУ и нестабильный ФПС.

#9289
22:55, 27 апр 2022

/A\
Тоесть драйвер разбивает на 2 меши и рисует в разных кадрах? Это не UB?

#9290
0:38, 28 апр 2022

lookid
Где ты у меня нашел про меши и рисование?
Я про то, что время заливки данных для кадра должно быть меньше времени рисования предыдущего кадра, иначе может ГПУ остановится в начале кадра, пока все данные не передадутся по шине.

#9291
16:32, 15 мая 2022

Очень интересный тред в твитере:
https://twitter.com/VadimYuryev/status/1514295682777059329
(касается Вулкана потому что MoltenVK существует)
Пара цитат оттуда:

Exclusive: Apple's M1 family of chips comes with a design limitation that was overlooked by Apple engineers when they started working on the chips 5-7 years ago.

The bottleneck is the 32MB TLB.

Problem: Apple shows that the M1 Ultra GPU can use up to 105W of power. However, the highest we could ever get it to reach was around 86W.

Culprit: Each cluster of GPU cores within an M1/M1 Pro/M1 Max/M1 Ultra chip comes with a 32MB TLB or Transaction Lookaside Buffer, which is a memory cache that stores the recent translations of virtual memory to physical memory, used to reduce user memory location access time.

The issue is if GPU data hits the TLB and the page table being read/written to is not loaded, then that entire thread group on the GPU needs to pause while the page table is loaded into the TLB. If your application is using MANY reads/writes per second, this results in.....a lot of STALLED GPU thread groups. Unlike a CPU, when a GPU is waiting for data, it can't just switch to work on something else. So the GPU sits there and waits for the TLB buffer to clear in order to get more work to process." This is why we only saw 86W peak GPU usage...

The problem is that ALMOST ALL apps out there haven't been optimized for Apple's TBDR tile memory system. Many software developers simply get it to work using the traditional TBIR model and call it good to go, being unaware of the 32MB TLB limitation that bottlenecks performance.

Keep in mind that between the time when Apple started engineering the M1 family 5-7 years ago, reliance on GPU performance has skyrocketed, so the chip designers probably didn't think there would be so many reads/writes to the 32MB TLB.

What does this mean? The M1 family of chips, including the M1 Ultra, has a major limitation that can't be fixed unless apps are properly optimized. Here's the problem.
Hishnash: "The effort needed to optimize for tile memory is MASSIVE. It requires going all the way back to the drawing board, re-considering everything, like the concept that there is a local on-die memory pool you can read/write from with very very low perf impact is unthinkable in the current desktop GPU space. It’s a matter of a complete rewrite at a concept/algorithmic level."

"Increasing the TLB will help a lot for applications that are not optimized. This is important because many apps will NEVER be optimized, and even fewer games." This is why gaming performance is so poor on M1 Ultra, apart from the Rosetta bottleneck.

Hishnash: "For game engines that are not TBDR aware/optimized, they might be currently bottlenecked on reads.. and depending on the post-processing effects, might have some large bottlenecks on writes if they're not using tile memory and tile compute shaders where possible."

The only hope for the M1 Ultra is that developers finally decide to completely rethink and rewrite their apps to support the TBDR tile-based memory architecture. (Good luck)

#9292
16:39, 15 мая 2022

И оттудаже скрин комментария с ютуба:
Изображение

Получается Апл проектировали этот чип "гдето в 2010" и смотрели на Нинтендо Вии в качестве основы...

А у нас тут в 2022 мегашейдеры где по 4-8Гб памяти адресуется в 4к текстурках полном PBR, а ведь 4к текстурки минимум 96Мб памяти жрут в ГПУ... "и почему Юнити и UE4 работают так медленно"

#9293
17:19, 15 мая 2022

melvy
Чет походит на пост который слили все в кучу. 32 метра для Transaction Lookaside Buffer это очень много. Может имелся в виду какой то тип Tile Local Buffer?

#9294
17:47, 15 мая 2022

IBets
Мне показалось логично и связанно с тем почему все(те где просто экспорт не думая) Юнити(даже 2Д игры) и UE4 игры тормозят (10-20ФПС) на M1.

#9295
17:57, 15 мая 2022

melvy
То есть все не используют преимущества TLDR и жалуются, что не получается выжать максимум из гпу?
М1 это мобильное гпу и рендер должен быть соответствующим.

#9296
(Правка: 18:58) 18:54, 15 мая 2022

что не получается выжать максимум из гпу?

Увы, но из GPU не выжать максимум пока есть прокладка Виндовс и  дрова.
Особенно умиляет когда на одной и той же видеокарте  OpenGL 4.6 имеет в шейдере glsl multidrawID,
а в directx 12 hlsl нет multidrawID аналога.

#9297
13:23, 17 мая 2022

В тему gpu от apple: https://habr.com/ru/post/666116/

#9298
(Правка: 16:08) 16:08, 17 мая 2022

А альфа тест вообще эффективен в 2022? Просто вроде говорят на современных видяхах блендинг быстрее чем альфа тест с дискардами, но все равно иногда вижу в современных играх растительность с cutout'ом

#9299
(Правка: 17:20) 16:52, 17 мая 2022

MDXEv2
> А альфа тест вообще эффективен в 2022?
MDXEv2
> Просто вроде говорят на современных видяхах блендинг быстрее чем альфа тест с
> дискардами, но все равно иногда вижу в современных играх растительность с
> cutout'ом
Без альфа-блендинга будет рисоваться верхний объект и все объекты за ним атоматичеси обрезаться и не будут рисоваться.
С альфа-блендингом - по одному дравколу на объект всегда.

Если у тебя миллион части и все они не пересекаются - разницы между обрезанием и альфа-блендингом не будет очевидно так как все рисуются в любом случае.
Если миллон частиц пересекаются друг с другом - очевидно разница будет в разы и чем больше частиц пересекается тем меделенне будет с альфа блендингом.
Чудес не бывает, алгоритмы рендеринга с 2000-го года не менаются.

Сейчас - просто видеокарты слишком мощные и память слишком быстрая, и рендерить даже лес ты уже можешь с полным альфа блендингом не боясь что там сотни объектов пересекаются, когда раньше десять деревьев друг на друге минус половину производительности.

П.С. В случае когда у тебя частицы размером 1 пиксель - то там очевидно разница в производительности будет очень низкая из за того что обрезать 1 пиксель дорого может быть также медленно как рисовать без обрезания.
В реальном случае когда у тебя деревья и трава - разница будет(в разы, особенно заметно на старых видеокартах где нет такого запаса производительности) между альфа и обрезанием без блендинга.

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