Пересекаешь 4 луча фруструма с плоскостью грани ААББ, он ведь на то и АА чтобы это была тривиальная операция. Получаешь 2 д задачу пересечь 4-угольник проекции фруструма на грань и АА прямоугольник. Сначала возьми первую сторону АА прямоугольника и пересекай с ней 4 стороны 4 угольника. Она АА поэтому операция тривиальна. И так все 4 стороны. Если пересечений не нашёл проверь что одно полностью не включает второе и готово
Вий
Я и писал о проекции в 2D
Только вершины 4-х угольник может пересечь плоскость Z=0, вершины уезжают в бесконечность, надо подумать как это учесть
Так это не важно если камера не внутри ААББ целиком то все что я написал должно работать
Вий
В 2D решается через SAT, 5 осей
Но некоторые лучи фрустума могут быть направленны ОТ грани, тогда 4хугольник вырождается в бесконечную фигуру
Sat не даёт преимуществ при ААББ. ААББ позволяет 2д свести к 1д да ещё на SSE и никаких проблем не возникает.
От грани лучи дадут отрицательное расстояние вдоль луча
Ты не рассматривай фруструм как бесконечный, у него же есть z far, образующий дно пирамиды и вот из 4 его линий хотя бы 2 в случае когда часть лучей фруструма ушла от плоскости пересекут плоскость
Вий
О, придумал! Надо рассматривать пересечения не ребер фрустума, а его боковых граней, что эквивалентно пересечению полуплоскостью. Которые не пересекают грань - те просто не рассматривать. Для SAT то нужна лишь прямая пересечения плоскостей и нормаль к ней. Вместо 4чугольника - пересечение полуплоскостей в 2D. Можно заоптимизировать и обойтись без делений!
Вий
Написал, но очень громоздко. Попробую конус-шар-круг, как ты советовал
А эти твои точки-воксели не проще ли рисовать сортируя узлы по удалению от плоскости экрана? Давно обсуждали тут
Узлов может быть много, сортировка будет долгой. Если только заранее сортировать для 3 основных направлений взгляда
Вий
Не, сортируются 8 детей узла в октодереве, в пикселы, которые уже заполненны - не рисуем, быстро проверяем заполненость блока экрана через мипмап
https://www.reddit.com/r/VoxelGameDev/comments/1bz5vvy/a_small_up… at/?rdt=60929
Funny story while working there we got hacked by Russians and we found our tech with discussions on their Russian forums, turns out they knew all about advanced voxel rendering and were not all that impressed 😁 haha
Чем больше деталей может хранить геометрия - тем очевидно больше работы художникам. Это даже безотносительно тонкостей технической реализации. Именно поэтому в своё время так и не взлетела мега-текстура. Работы много, но профит от её применения неочевиден.
Игроки не выбирают игру только за то, что там есть мегатекстура и не отказываются играть в игры, где её нет.
Их в последнее время куда больше волнует фреймрейт, чем возможность разглядеть каждую царапинку на стене.
Ну и да, в каком-то смысле Nanite стал компромиссом между воксельным рендерингом и классическим. Он точно так же не дружит с анимацией и позволяет иметь хорошую детализацию на статичных мешах. Но и сами Наниты мало кто вручную создаёт, в основном сканируют реальные объекты.
И это тоже проблема на самом деле. Сделать игру про привычное окружение, путём сканирования реальных объектов становится достаточно простым, а как создать вымышленную вселенную со сверхдетализированными объектами? Сколько усилий на это придётся затратить?
g-cont
> Он точно так же не дружит с анимацией и позволяет иметь хорошую детализацию на статичных мешах.
(For reference* & thread unrolled: https://archive.is/KmNzw)
** Len' pol'zovat'sja translit.ru-om, proshu proshenja.