ГРАФИЧЕСКАЯ ОБРАБОТКА СО СКРЫТЫМ ИСКЛЮЧЕНИЕМ ПОВЕРХНОСТИ
GRAPHIC PROCESSING WITH HIDDEN SURFACE EXCLUSION

Область техники, к которой относится изобретение
Данное изобретение, в общем, относится к графической обработке для устройств обработки интегральных схем.
Уровень техники
При графической обработке трехмерные объекты могут быть представлены как последовательность треугольников, имеющих три точки. Три точки можно использовать для установления так называемого уравнения плоскости, которое представляет плоскость, включающую в себя три точки. Уравнение плоскости обозначает ориентацию каждой точки треугольника относительно плоскости экрана дисплея.
При удалении скрытой поверхности или Z-буферизации, отслеживают глубину пикселей для уменьшения объема обработки, выполняемой по многоугольникам, которые скрыты позади других многоугольников, представленных на экране.
Идентификация и обрезка скрытых пикселей многоугольников может представлять собой возможность для значительного улучшения рабочих характеристик.
Краткое описание чертежей
На фиг.1 схематично представлено устройство на основе процессора в соответствии с одним вариантом воплощения;
на фиг.2 представлено описание блока пикселей, используемых в соответствии с одним вариантом воплощения настоящего изобретения;
на фиг.3 представлен анализ, используемый для тестирования глубины, в соответствии с одним вариантом воплощения настоящего изобретения; и
на фиг.4 показана блок-схема последовательности операций тестирования глубины, в соответствии с одним вариантом воплощения.
Подробное описание изобретения
Как показано на фиг.1, система на основе процессора, в соответствии с одним вариантом воплощения настоящего изобретения, выполнена с возможностью высокоэффективной обработки трехмерной графики. В одном варианте воплощения система включает в себя основной процессор 1, базовую логику 10 набора микросхем, графический процессор 12, буфер 14 кадра, Z-буфер 16, HZ или иерархический Z-буфер 17, экран 18 дисплея, клавиатуру/мышь 20 и запоминающее устройство 30. Запоминающее устройство 30 может содержать любое соответствующее запоминающее устройство, и в одном варианте воплощения, включает в себя основное запоминающее устройство 32, выполненное с использованием микросхем оперативного запоминающего устройства, один или больше приводов 34 жесткого диска и съемных носителей 36 информации, таких как магнитные или оптические диски.
Процессор 1 может быть соединен с основной логикой набора микросхем через шину 3. Основная логика 10 набора микросхем, соединенная с графическим процессором 12 через шину 5, может быть соединена с буфером кадра, а также Z-буфером 16 и иерархическим Z-буфером 17 через шину 6. Буфер 14 кадра, Z-буфер 16 и иерархический Z-буфер 17 соединены с экраном 18 дисплея через шину 7, и экран 18 дисплея соединен с клавиатурой/мышью 20 через шину 8.
Другие элементы интерфейса пользователя, такие как аудиогромкоговорители, микрофоны, рычаги управления, рулевые колеса, принтеры, музыкальные инструменты с клавиатурой и цифровым интерфейсом, колпаки виртуальной реальности, подвижные сиденья и окружающая среда, помимо прочих, могут составлять часть системы обработки.
Архитектура, показанная на фиг.1, представляет собой пример и представляет только одну из множества архитектур обработки, которые можно использовать в соответствии с некоторыми вариантами воплощения настоящего изобретения. Запоминающее устройство 30 может составлять считываемый компьютером носитель информации, который может представлять собой любое устройство, активное или пассивное, содержащее компьютерные инструкции, предназначенное для передачи инструкции в процессор или содержащее компьютерные данные, такое как жесткий диск, гибкий диск, компакт-диск, оперативное запоминающее устройство, оптическое запоминающее устройство или любая полупроводниковая память.
В соответствии с некоторыми вариантами воплощения настоящего изобретения для менее чем всех пикселей и группы пикселей можно тестировать глубину, вместо тестирования всех пикселей группы. Тест глубины представляет собой тест расстояния определенного пикселя до экрана дисплея. Тестирование глубины можно использовать для определения пикселей, которые закрыты. Закрытые пиксели многоугольника не требуется обрабатывать. Такое устранение закрытой обработки закрытых пикселей может улучшить характеристики при обработке графики.
Как показано на фиг.2, множество пикселей могут быть сгруппированы в то, что может быть названо блоком. Блок может включать в себя некоторое количество пикселей, обычно, по меньшей мере, четыре пикселя, которые расположены смежно друг к другу. Блок может быть прямоугольным, но можно использовать другие формы. Путем анализа глубины представительных пикселей блока можно определить, во многих случаях для блока в целом, будет ли блок закрыт. В результате тестирование глубины может быть ускорено, поскольку тестирование глубины каждого пикселя нет необходимости выполнять в каждом случае. Аналогично, во многих случаях для блока в целом можно определить, что блок не закрыт, поэтому ни один из пикселей блока не закрыт и, таким образом, нет необходимости выполнять тестирование каждого пикселя.
Таким образом, как показано на фиг.2, в одном варианте воплощения, первая группа из 16 пикселей 38, расположенных в виде прямоугольника может составлять промежуток ноль, и вторая группа из 16 пикселей 38, расположенных в виде прямоугольника составляет промежуток один. В данном варианте воплощения блок, который подвергают анализу, составляет промежутки ноль и один, включающие в себя 32 пикселя, которые, в некоторых случаях, можно анализировать как группу для улучшения скорости проверки глубины.
Конвейер графической обработки, включающий в себя, например, поток данных через графический процессор 12, может предоставлять данные, которые представляют треугольники, в свою очередь, представленные тремя точками. Каждая точка ассоциирована с глубиной или значением Z.
Уравнение плоскости характеризует глубину каждого пикселя в пределах треугольника, где Z представляет глубину:
0
x
ref
y
ref
Z=C+C(x-X)+C(y-Y).
х
y
Таким образом, уравнение плоскости определяет плоскость пикселей, формирующих треугольник, и определяет наклон этой плоскости, относительно экрана дисплея. В некоторых вариантах воплощения, коэффициенты С и С и, в частности, их знаки используют для определения углов наихудшего случая для всего блока в блоке с использованием прямоугольного массива пикселей. Углы наихудшего случая представляют собой углы с минимальной и максимальной глубиной среди всех пикселей в блоке.
Как показано на фиг.2, значения на оси Х увеличиваются слева направо и значения на оси Y увеличиваются сверху вниз в данном варианте воплощения. Таким образом, например, пиксель D имеет большее значение X, чем пиксели, обозначенные как А, В, или С. И пиксели Е имеют большее значение Y, чем пиксель А. Пиксель Н имеет как большее значение Y, так и большее значение X, чем пиксель А.
Иерархический Z-буфер или HZ буфер 17 (фиг.1) построен из Z-буфера 16, и в нем накапливают минимальные и максимальные значения для всех ранее полученных мест расположения пикселей для блока пикселей, составляющих один промежуток в одном варианте воплощения. Тогда выполняют тестирование многоугольника для следующих мест расположения пикселей, которые сравнивают со значениями в иерархическом Z-буфере 17 для тестирования, не являются ли эти многоугольники скрытыми. Если они скрыты, они могут быть отброшены, в результате чего уменьшается объем обработки.
При тестировании со сравнением со значениями в иерархическом Z-буфере, восемь разных тестов обычно используют в графической обработке. При этом используют тест "меньше чем", тест "меньше чем или равен", тест "больше чем", тест "больше чем или равен", тест "равен", тест "не равен", тест "всегда проходит", и тест "всегда не проходит". Обычно тест "всегда проходит" и тест "всегда не проходит", не предполагают какой-либо проверки вообще и не представляют интерес в настоящем контексте.
На фиг.3 иллюстрируется пример того, как выполняют тест глубины в одном варианте воплощения, используя прямоугольный массив пикселя.
Такой тест основан частично на проверке, является ли каждый промежуток ненулевым. Промежуток является ненулевым, если свечение, по меньшей мере, одного пикселя в промежутке фактически "включено", или пиксель активирован. Если ни один пиксель в промежутке не включен, тогда такой промежуток можно игнорировать во время тестирования глубины.
х
y
Кроме того, тест определяет, больше или равны коэффициенты С уравнения плоскости нулю (то есть являются ли они положительными), и больше или равен нулю коэффициент уравнения плоскости С (то есть является положительным). Затем минимальный угол и максимальные углы для блока, состоящего из промежутка ноль и промежутка один, идентифицируют в самой левой и самой правой колонках. (Конечно, колонки и структуры, определенные на фиг.3, фактически могут не использоваться в вариантах воплощения настоящего изобретения, но они представлены, в основном, для пояснения и иллюстрации вариантов воплощения настоящего изобретения).
Таким образом, первая горизонтальная линия на фиг.3 представляет ситуацию, в которой ни один из пикселей в любом из промежутков не включен. Поэтому первая строка, не представляет интерес в данном контексте.
х
y
Пятая горизонтальная строка представляет ситуацию, в которой ни один из пикселей промежутка ноль не включен, но, по меньшей мере, один из пикселей промежутка включен. В этом случае, оба коэффициента С и С являются положительными. В таком случае, если Х и Y увеличиваются, как обозначено на фиг.2, минимальный угол представляет собой пиксель С, и максимальный угол, очевидно, представляет собой пиксель Н.
После определения минимального и максимального углов на следующем этапе, в одном варианте воплощения, требуется проанализировать минимальный и максимальный углы для данной группы пикселей и сравнить их со значением, содержащимся в данный момент времени в иерархическом Z-буфере 17. Например, в приложение для графической системы используют тест "меньше чем", тогда любая глубина, которая ниже чем минимальное значение глубины в иерархическом Z-буфере, проходит тест, и любое значение глубины, большее чем максимальная глубина, не проходит тест. В таком случае минимальный угол сравнивают с максимальным значением в иерархическом Z-буфере. Если минимальный угол больше чем максимум в иерархическом Z-буфере, тогда каждый пиксель в блоке больше чем максимальное значение иерархического Z-буфера, и ни один из пикселей в блоке не проходит тест. Затем, максимальный угол в данном блоке сравнивают с минимальным значением иерархического Z-буфера. Если значение максимального угла меньше чем минимальное значение иерархического Z-буфера, то все пиксели в блоке меньше чем минимальное значение иерархического Z-буфера, и в этом случае, все пиксели блока проходят тест, как группа, без необходимости анализа каждого пикселя.
Если ни одно из таких сравнений не работает, тогда экономия ресурса, обеспечиваемая вариантами воплощения настоящего изобретения, не применима, и значения каждого пикселя можно сравнивать обычным способом в блоке один за другим со значениями, содержащимися в иерархическом Z-буфере. В таком случае невозможно получить экономию времени, но, в общем, поскольку описанный здесь тест часто успешен, в некоторых вариантах воплощения может быть достигнута значительная экономия времени.
На фиг.4, в соответствии с одним вариантом воплощения показана последовательность выполнения быстрой проверки 39 глубины, которая включает в себя последовательность. В одном варианте воплощения последовательность может быть воплощена с использованием программных средств. В таком случае программное средство, представляющее последовательность 39, может быть сохранено в любом соответствующем хранилище или в памяти, включающей в себя основную память 32, как показано на фиг.1. В таком случае последовательность программных средств сохранена на считываемом компьютером носителе информации и выполняется компьютером, который включает в себя один или больше из процессора 1, процессора 12, или любого другого соответствующего процессора компьютера, или системы, построенной на основе процессора.
Как обозначено в блоке 40, минимальное и максимальное места расположения пикселя в блоке определяют в варианте воплощения, используя прямоугольный блок. В некоторых случаях, также может быть определено, включен ли один из пикселей в блоке или один из пикселей в любом промежутке, составляющем блок. Если ни один из пикселей не включен, то этот промежуток или блок можно игнорировать.
Затем выбранные места расположения пикселей, представляющие все минимальные и максимальные значения блока, тестируют, сравнивая их с минимальным и максимальным значениями в иерархическом Z-буфере 17, как обозначено в блоке 42. Точный выполняемый тест зависит от типа системы, воплощенной с использованием соответствующего приложения. В одном примере может использоваться тест "меньше чем", но также можно использовать другие тесты. В таких случаях, возможно сделать вывод, на основе минимального и максимального значений группы пикселей, пройдут или не пройдут все пиксели группы тест глубины.
Как обозначено на фиг.4, в блоке 44 выполняют тест, проходит ли тест весь блок в целом или нет. Если он проходит тест, выполняют обработку блока, и может быть получен следующий блок, после чего проверку повторяют. В случае если для блока не будет получен результат, прошел он или не прошел проверку, тогда выполняют обычный тест глубины (блок 46), с оценкой каждого пикселя блока от пикселя к пикселю. В этом случае, выполняется обработка блока в целом, и исключение необходимости тестирования каждого пикселя в блоке невозможно.
Размер блока и составляющего его промежутка или промежутков подвергаются значительным вариациям, хотя, в общем, вероятно, есть смысл использовать, по меньшей мере, четыре пикселя при любом анализе. Кроме того, количество промежутков может быть другим, чем два, и может составлять любое количество от одного промежутка или больше. При этом не имеет значения, что некоторые пиксели промежутка не включены. Кроме того, два набора из восьми пикселей можно анализировать параллельно, в одном варианте воплощения.
Методики графической обработки, описанные здесь, могут быть воплощены в различных архитектурах аппаратных средств. Например, графические функции могут быть интегрированы в набор микросхем. В качестве альтернативы, можно использовать дискретный графический процессор. В качестве еще одного варианта воплощения, графические функции могут быть выполнены с использованием процессора общего назначения, включающего в себя многоядерный процессор.
Ссылки, приведенные в данном описании на "один вариант воплощения" или "на вариант воплощения" означают, что конкретное свойство, структуры или характеристики, описанные в связи с вариантом воплощения, включены, по меньшей мере, в один вариант воплощения, охваченный настоящим изобретением. Таким образом, появление фразы "один вариант воплощения" или "в варианте воплощения" не обязательно относится к одному и тому же варианту воплощения. Кроме того, определенные свойства структуры или характеристики могут быть установлены в любых других соответствующих формах, помимо конкретного представленного варианта воплощения, и все такие формы могут быть охвачены в формуле изобретения настоящей заявки.
Хотя настоящее изобретение было описано в отношении ограниченного количества вариантов воплощения, для специалистов в данной области техники будут понятны различные модификации и варианты на их основе. При этом предполагается, что приложенные формулы изобретения охватывают все такие модификации, и варианты, которые попадают в пределы истинной сущности и объема настоящего изобретения.