Согласен, но из бесконечности вселенной не следовало бы бесконечное количество "сгустков"
Плюс с бесконечным количеством материи=энергии тепловая смерть вселенной была бы невозможна (может так и есть :) ) Мне про бесконечно-вечность больше CCC Пенроуза нравится, хотя я это только концептуально понимаю
Ну в общем-то ты попросил "псевдоалгоритм проверки 2д пространства камеры на наличие AABB". Но occlusion culling для меня - это использование depth pyramid и отсечение мешей (или кластеров/треугольников) в compute шейдерах. Возможно, с предварительным отсечением по frustum с использованием quadtree или тех же compute шейдеров. А как, и главное зачем делать occusion culling в quadtree мне неизвестно, но я очень сомневаюсь, что это может быть эффективнее простого чтения глубины из depth pyramid
quadtree - это же не статический объект, структура меняется при добавлении/удалении/перемещении объектов, в чем смысл делить на уровни пустое дерево? То есть, в quadtree - объекты (их aabb), зачем делить пространство под поле видимости камеры? Проверяю верхние уровни quadtree: если ячейка содержится в frustum полностью, то все объекты, входящие в её дочерние ячейки тоже в frustum если ячейка не имеет пересечения, то и объекты тоже если пересечение частичное, то решаем рекурсивно или через стек(очередь)
Смысл nanite не в том, что есть кластеры, а в том, что эти кластеры постоянно меняются (причем без видимых стыков) для поддержания необходимого уровня детализации. Получается что-то вроде "непрерывного" lod, а так и обычный меш можно назвать "простейшим аналогом nanite", с одним кластером
Уровни же не по волшебству появляются 1 объект - 4 узла. 2 объекта - 8 узлов (максимум). 3 объекта - 12 узлов (максимум). В худшем случае необходимо проверить все (то есть 4n), но экспоненциального роста проверок от числа элементов тут быть не может
я уже ниже про это писал, но, например, в презентации "Rendering 'Rainbow Six | Siege'", на слайде 33 видно, что куллинг они производят и на уровне отдельных треугольников
Плюс с бесконечным количеством материи=энергии тепловая смерть вселенной была бы невозможна (может так и есть :) ) Мне про бесконечно-вечность больше CCC Пенроуза нравится, хотя я это только концептуально понимаю
Но occlusion culling для меня - это использование depth pyramid и отсечение мешей (или кластеров/треугольников) в compute шейдерах. Возможно, с предварительным отсечением по frustum с использованием quadtree или тех же compute шейдеров.
А как, и главное зачем делать occusion culling в quadtree мне неизвестно, но я очень сомневаюсь, что это может быть эффективнее простого чтения глубины из depth pyramid
То есть, в quadtree - объекты (их aabb), зачем делить пространство под поле видимости камеры?
Проверяю верхние уровни quadtree:
если ячейка содержится в frustum полностью, то все объекты, входящие в её дочерние ячейки тоже в frustum
если ячейка не имеет пересечения, то и объекты тоже
если пересечение частичное, то решаем рекурсивно или через стек(очередь)
Получается что-то вроде "непрерывного" lod, а так и обычный меш можно назвать "простейшим аналогом nanite", с одним кластером
1 объект - 4 узла.
2 объекта - 8 узлов (максимум).
3 объекта - 12 узлов (максимум).
В худшем случае необходимо проверить все (то есть 4n), но экспоненциального роста проверок от числа элементов тут быть не может