В компьютерной графике и трехмерной компьютерной графике в реальном времени портальный рендеринг — это алгоритм определения видимости . Например, рассмотрим трехмерную игровую среду, которая может содержать множество полигонов , только некоторые из которых могут быть видны на экране в определенный момент времени. Определив, какие полигоны в данный момент не видны, и не выполняя рендеринг этих объектов, можно добиться значительного повышения производительности.
Система порталов основана на использовании разбиения пространства для формирования обобщений о видимости объектов в этих пространствах. Регионы пространства карты делятся на многоугольные, как правило, выпуклые области, называемые зонами , или иногда секторами . Смежные зоны связаны друг с другом через общие разделительные полигоны, называемые порталами . [1] Подходы, которые предварительно вычисляют видимость для зон, называются потенциально видимыми наборами или методами PVS . [2]
Например, в компьютерной игре, такой как Descent , игровая область может быть разделена на несколько зон. Затем эти зоны будут соединены друг с другом небольшими отверстиями, такими как двери или окна. Эти отверстия называются порталами . Когда необходимо нарисовать зону за порталом, то видны только те части, которые видны через портал. Поэтому зону можно обрезать по границам портала, чтобы удалить перерисовку. [3]
Использование порталов упрощает задачу игрового движка по определению видимых областей и объектов с любой заданной точки обзора уровня и упрощает рендеринг, позволяя использовать каждый портал в качестве усеченной пирамиды видимости для области, к которой он ведет. В идеале порталы формируются из ограниченных областей (например, дверей или туннелей), соединяющих две сложные области сцены, где каждая из этих областей будет заключена в такое многоугольное тело. [4]
Порталы лучше всего подходят для внутренних сцен, таких как лабиринты. Наружные сцены обычно не имеют объектов, похожих на двери, которые бы четко разделяли одну зону от другой. [5]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )