Растеризация общего края двух соседних полигонов

При рендеринге по линии развертки при растеризации полигонов (обычно треугольников), если два полигона имеют общее ребро (т. е. они имеют две общие вершины), пиксели на этом общем ребре должны визуализироваться только один раз. (Это необходимо по нескольким причинам. Наиболее распространенная и очевидная из них — при использовании полупрозрачной текстуры: если бы пиксели общего края отрисовывались дважды, это повлияло бы на прозрачность этих пикселей, сделав общий край менее прозрачным и, следовательно, видимым. .)

Все средства рендеринга строки сканирования, включая графическое оборудование, должны решать эту проблему. Тем не менее, я не могу найти для этого четкий, понятный и эффективный алгоритм, даже после обширного поиска в Google.

Я ищу не только теорию и расплывчатые описания решений, но и реальный конкретный псевдокод. Предпочтительно алгоритмы, которые фактически используются в рендерерах и графическом оборудовании. Может ли кто-нибудь указать мне правильное направление?


person Warp    schedule 12.10.2016    source источник
comment
Гугл правила растеризации. В частности, верхнее левое правило растеризации (наиболее распространенное)   -  person samgak    schedule 12.10.2016
comment
Также проверьте этот вопрос   -  person samgak    schedule 12.10.2016
comment
Я искал это и многие другие подобные ключевые слова и не нашел ничего полезного. Большинство результатов просто описывают, что делает OpenGL/Direct3D, но не дают никакого алгоритма. Несколько страниц дают фактический алгоритм рендеринга, но до сих пор я нашел только крайне неоптимизированные неэффективные алгоритмы, которые в основном просто обходят весь экран и видят (используя большое количество умножений для каждого пикселя), находится ли он внутри треугольника или нет. (Например, одна из таких страниц комментирует: Эта версия действительна как доказательство концепции, но сильно неоптимизирована, что довольно показательно.)   -  person Warp    schedule 12.10.2016
comment
Верхнее левое правило всегда казалось мне плохо определенным. Спецификация Vulkan даже не указывает, что это за правило, просто выигрывает один из образцов.   -  person Acorn    schedule 03.10.2020
comment
Я изменил теги, чтобы повысить вероятность того, что вопрос увидят соответствующие эксперты.   -  person Acorn    schedule 03.10.2020