ПрограммированиеФорумОбщее

Frustum Culling (комментарии) (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
21:20, 14 фев 2017

MrShoor
>> вроде OBB, они жирные
>OOB не такие уж и жирные. Хранят их обычно в духе:
я имел ввиду динамику - 1.техника очень детализированная, много дипов 2.ее очень немного, какие-то сотни
тут как раз выгодно точно просчитать кулинг, через OBB

#31
21:30, 14 фев 2017

MrShoor
чем твой код отличается от

Min  = Min * Matrix4x4
Max = Max * Matrix4x4

не понял.
вот так не корректно будет

#32
21:32, 14 фев 2017

_Wizard_
на правильно, зависит от сцены.частицы например не выгодно куллить вообще ничем, только общим боксом =) а хайполи лучше четко отсеивать.

#33
21:56, 14 фев 2017

Mira
> чем твой код отличается от
> Min = Min * Matrix4x4
> Max = Max * Matrix4x4
> не понял.
Тем, что мой код не делает сразу сумму. Когда ты умножаешь:
vNew.x = v.x*a00 + v.y*a01 + v.z*a02;
ты сразу складываешь значения. Чтобы корректно повернуть AABB тебе придется умножать минимум 6 раз на матрицу. В моем случае умножать на матрицу нужно дважды, а чтобы получить 6 вершин - ты просто складываешь разные комбинации.

#34
21:31, 15 фев 2017

Есть ли какие-то методы оптимального разбития дерева для многопоточного варианта на CPU?

#35
21:58, 15 фев 2017

> Безусловно, если есть такая возможность, стоит использовать GPU кулинг.
сомнительное утверждение, с учетом что GPU всегда не хватает, а CPU в избытке

#36
22:01, 15 фев 2017

Gorunuch
>Есть ли какие-то методы оптимального разбития дерева для многопоточного варианта на CPU?
мы пробывали - тупо откулить линейный список из 10к объектов быстрее чем использовать всякие иерархические структуры
я бы подумал в сторону создания обычного линейного массива групп объектов... по 20-100 объектов, аппроксимируешь группу сферой / AABB и вперед
группы не сложно распределить поровну по потокам

#37
22:23, 15 фев 2017

_Wizard_
> мы пробывали - тупо откулить линейный список из 10к объектов быстрее чем использовать всякие иерархические структуры
про 10к слышал еще давно, а что за иерархические структуры  тестировались?

#38
22:40, 15 фев 2017

Frankinshtein
>> Безусловно, если есть такая возможность, стоит использовать GPU кулинг.
>сомнительное утверждение, с учетом что GPU всегда не хватает, а CPU в избытке
я в выводах написал условия, при которых стоит использовать
не всегда в ГПУ упирается... сейчас очень много дипов в играх / много разной геометрии / пропсов + физика + аи + симуляция/апдейт + куча какой то логики + звук + стриминг + не у всех офигенный многопоточный движок
у нас не на всех пресетах, но упирается по большей части в ЦПУ!

на ГПУ гораздо проще cделать Occlusion culling / с учетом загороженности одних объектов другими + не надо данные по шине таскать + гпу самый быстрый
ты можешь сделать видимость на кверях (в новом Думе так сделано например), но это надо заморачиваться с консервативностью видимости...
Hierarchical-Z map based гораздо удобнее - и в этом случае ГПУ порвет ЦПУ просто на тряпки

#39
22:48, 15 фев 2017

Andrey
>про 10к слышал еще давно, а что за иерархические структуры тестировались?
да - медленнее
sse не любит ветвления) + условия тормозная вещь + скорее даже больше дело в кешах процессора (у тебя данные не локально лежат и ты прыгаешь от одних к другим все время, непредсказуемо)

#40
15:53, 16 фев 2017

_Wizard_

    __m128i intersection_res_i = _mm_cvtps_epi32(intersection_res);
    _mm_store_si128((__m128i *)&culling_res_sse[i], intersection_res_i);

Есть какой-то смысл в _mm_cvtps_epi32 вместо _mm_castps_si128?

#41
16:51, 16 фев 2017

у меня с линейными данными да, SIMD лучше работает.
кстати почему там не работает префетчинг?) что с этой инструкцией что без - разница в пределах разброса, тоесть ее нет.

#42
17:17, 16 фев 2017

Охохо, я у себя реализовал Occlusion Culling на GPU, а про Frustum Culling сделать там же я совсем не подумал :)
Если создать буффер со всеми данными для рендеринга на ЦПУ и только присылать номера необходимых рендеров - вполне должно получиться.
Единственная проблема - необходимо минимизировать количество переключений Pipeline State. Если делать предварительное отсечение на ЦПУ, то этого будет проще избежать.

#43
0:57, 17 фев 2017

_Wizard_
> корее даже больше дело в кешах процессора (у тебя данные не локально лежат и ты
> прыгаешь от одних к другим все время, непредсказуемо)
Есть решение хранить узлы в массиве, без отдельного выделения по new, тогда данные будут локальны. Я кстати так и сделал.

#44
8:19, 17 фев 2017

Andrey
> Есть решение хранить узлы в массиве, без отдельного выделения по new, тогда
> данные будут локальны. Я кстати так и сделал.

Покажи как хранятся узлы массиве

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее