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

[Решено] Почему UBO медленнее glProgramUniformMatrix4fv? (20 стр)

Страницы: 117 18 19 20 21 22 Следующая »
#285
22:19, 14 янв. 2020

Инуендо просто скучно и ему надо просто разговоры разговаривать.


#286
22:30, 14 янв. 2020


MrShoor
> А еще и графику ускоряют, представляешь.

на днях как раз делал ускорение алгоритма на GPU для одного известного движка - на порядок быстрее прикинь ????

ты правда думаешь что 128 матриц обсчитать на CPU быстрее или просто прикалываешься ?

#287
22:31, 14 янв. 2020

innuendo
> ты правда думаешь что 128 матриц обсчитать на CPU быстрее или просто
> прикалываешься ?
Ты правда не видишь внутри этих 128 тредов цикла, или прикалываешься?

#288
22:34, 14 янв. 2020

Вы прикалываетесь , задавать такие вопросы в 11 часов вечера ?!

#289
22:57, 14 янв. 2020

MrShoor
> Ты правда не видишь внутри этих 128 тредов цикла

ты правда думаешь, что код на cpu и gpu можно сравнивать по O(n)?

#290
23:23, 14 янв. 2020

innuendo
> Ты правда не видишь внутри этих 128 тредов цикла, или прикалываешься?
Ты так ненавидел Andrey, у которого фетиш на "за один вызов", а теперь сам скатился до "GPU быстрее". Быстрее. Только оверхед на ридбек, который в 99% игр необходим (а в том же LiF, которым ты козыряешь, он необходим вообще чуть ли не на всех костях) сожрет все это "быстрее" и не подавится. Трейдофф гибкость vs "за 1 вызов". Никого не напоминает?

#291
23:50, 14 янв. 2020

innuendo
> ты правда думаешь, что код на cpu и gpu можно сравнивать по O(n)?
Конечно. Если тот while будет крутиться 128 раз, то GPU будет медленнее как ни странно, несмотря на то, что он очень параллельный и весь такой крутой.

#292
0:05, 15 янв. 2020

MrShoor
> Если тот while будет крутиться 128 раз
аха... вот как оно.

#293
0:35, 15 янв. 2020

MrShoor
> Если тот while будет крутиться 128 раз
Да, именно так, если писать через жопу

Пример MrShoor - это худший из сценариев, самый неэффективный из неэффективных методов при большом количестве костей, что самое странное - я даже написал его ограничения. Даже уточнял что актуально для 16 костей и меньше. Но вот тут вдруг все бац, и перевернулось с ног на голову, и это вдруг пример неэффективности "эффективного" кода "распараллеливания" на GPU....

MrShoor
Спорим, я твой "эффективный" код парой строк заставлю работать минимум в 5 раз быстрее?

Опять же, ребята, актер это не "воин в блестящих доспехах, до зубов обвешанный оружием", вернее не только. Это птички, бабочки, рой мух, всякая живность, типа кролики, собачки, олени, драконы, это "толпа/массовка" (crowd), или отдельные NPC где количество костей минимально, а любые предметы в руках являются частью модели и анимируются вместе с моделью, без необходимости привязки к костям, даже блин деревья в спидтри это "актеры", чей вид и анимация полностью контролируется через скелетку. Да и у "героев" может быть несколько скелеток - лодов, так как на расстоянии в 100 метров пофиг анимированы там пальцы ног в сапогах или нет. Тысяча таких объектов на сцене - это не предел для современных игр.
Но блин, не нужно алгоритм для моделей с несколькими костями пытаться применять на ОДНОЙ модели с 512 костями, и жаловаться что оно как-то криво работает.

#294
(Правка: 0:41) 0:39, 15 янв. 2020

Fantom09
> Спорим, я твой "эффективный" код парой строк заставлю работать минимум в 5 раз
> быстрее?
Валяй, аж любопытно стало.
upd. Только я не называл свой код эффективным если что.

#295
0:42, 15 янв. 2020

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

#296
0:43, 15 янв. 2020

Fantom09
> Чувак, я ж говорю - спорим? Если я буду прав, то ты на месяц исчезнешь с
> форума, ок? :)
Нет конечно, не спорим, я же не умею в эффективный код на GPU. Ты лучше покажи как нужно.

#297
0:43, 15 янв. 2020

MrShoor
> Ты лучше скажи, код, который я привел по твоему эффективный или нет? Я так
> понимаю что для тебя это эффективный код, правильно?
Давай, расскажи что ты никогда не говорил что это эффективный код, не смотря на все вопросы innuendo

#298
0:45, 15 янв. 2020

MrShoor
> я же не умею в эффективный код на GPU.
Я рад что ты сознался))
вот нельзя было так сразу, а не разводить флуд на 10 страниц?)

#299
0:56, 15 янв. 2020

Fantom09
> Я рад что ты сознался))
> вот нельзя было так сразу, а не разводить флуд на 10 страниц?)
Я тебя с самого начала спросил, как считать эффективно. Ты мне в #208 ответил кучу вариантов. На мой взгляд все они не эффективные.
Один из твоих вариантов:

Вариант третий - считаем все в одном диспатче, но для каждой кости в потоке пробегаем всю иерархию. Плюсы - хорошо параллелится, все выполняется за один диспатч, отсутствие синхронизации. Минусы - есть оверхед на лишних трансформациях на крайних в иерархии костях. Для скелетки из 16 костей это где-то до 5 трансформаций.

Такой же, каким делал я, вот этот псевдокод (продублирую):
uint bonesCount;
StructuredBuffer<uint> parents;
RWStructuredBuffer<float4x4> bones;

[numthreads(128, 1, 1)]
void CS(uint3 id: SV_DispatchThreadID) {
  if (id.x >= bonesCount) return;
  uint boneIdx = id.x;
  float4x4 boneTransform = bones[boneIdx];
  uint parentIdx = parents[boneIdx];
  while (parentIdx != 0xFFFFFFFF) {
    boneTransform = mul(bones[parentIdx], boneTransform);
    parentIdx = parents[parentIdx];
  }
  bones[boneIdx] = boneTransform;
}
Сейчас ты вбросил, что можешь в пару строк сделать его в 5 раз быстрее. Я очень хочу посмотреть, правда.
Страницы: 117 18 19 20 21 22 Следующая »
ПрограммированиеФорумГрафика