Вроде реализовал, по описанию, но толку нет, для конкретной задачи вообще не подходит, хотя вроде как оно и создано для этой задачи для поиска списка видимых объектов, occlusion culling.
Где хранятся конкретные данные, и как, как устроены узлы
Как происходит получения списка объектов в узле? Что значит вернуть Все, Все!!!! объекты в узле каким образом?
Допустим при обходе, узел (квадрат, или прямоугольник) сказал что он полностью внутри области просмотра, и что дальше? Как получить все его данные?
Вернуть все данные в узле. это же самое что дальше продолжать обходить все внутренние рекурсией или стеком узлы, и составить список. В чем профит то тогда? Как можно вернуть все данные по щелчку.
Если все дерево находится в поле видимости, А я вообще не врубаюсь в эту пирамиду отсечения, Так как в любой игре 1/4 всей сцены находится в поле видимости всегда,
Что за дальняя плоскость, "far plane" а за ней что, хедшот от снайпера
Некое жадное решение, которое ожидал бы прочесть, На каждом узле хранится массив всех копий элементов внутри, и так на каждом узле, тогда Общие число элементов в дереве будет ожидаемо N*log(N). Тогда вернуть все элементы узла, вернуть весь массив. Вот сцена с 20 млн треугольников для примера, она будет что 3 млрд. Не подходит.
Идеальное решение, что бы каждый узел знал начало Offset в линейном массиве и Размер, и вернул этот диапазон. Но как сделать, то, если данные попадают не равномерно наверное.(хотя может сортировать можно).
И вообще не могу понять эти пирамиды отсечения окта деревья, bsp деревья, Типа чем плохо деление пространства на равные кубы
https://developer.download.nvidia.com/assets/cuda/... Это же и проще, и быстрее в сотни раз. Распихать все кубам и составить список всех кубов внутри пирамиды в 1024 потока. А там уже дальше отсечь пару % лишнего.
И почему вообще каждый раз надо находить видимые вершины, если они скорей всего ни куда не убегут.
Совершено не могу не понять эту стадию, на бумаге вроде младенец поймет, а так совершено не нужная так 90% всей сцены о бесконечности всегда как мне кажется видно. А в конечном итоге всю-равно будет передан список индексов вершин, у которых как минимум одна проверка при трансформации координат будет сделана. дак почему при трансформации координат сразу то и не выкинуть. переделав список, через префиксную сумму.
Ведь там вообще нету ни какой разницы, на бенчмарках, типа без разницы 1млн вершин проверить или 10 млн, так как это очень быстрая операция.
Почему вообще надо там что-то каждый фрейм что-то собирать на cpu потом копировать, если все на gpu можно держать, и просто обрабатывать как есть, сразу отсеяв все лишние.
Я бы это понял, все эти Tree структуры отсекают не только что внутри, но и то что перекрыто,(или примерно перекрыто) а это как раз 90%, а как это вообще можно без проверки каждой вершины узнать что это стена и за ней ни чего не возвращай, типа всегда может быть мелкая трещина, окно, при растеризации с иерархическим z буффером, понятно. А каким образом окто дерево может определить что это стена, за ней ни чего не возвращай? То есть это как минимум нужно тщательно все проверять, что опять же долго. И лучше вернуть как есть.