Технологии уменьшения пиксельного шейдинга

Иллюстрации

Показать все

Изобретение относится к области рендеринга двумерных изображений из трехмерных моделей. Технический результат – уменьшение требований к обработке шейдинга видимых примитивов при рендеринге 2D изображения экрана из 3D модели путем шейдинга пикселей при одновременной минимизации визуальных артефактов. Устройство рендеринга 2D изображения из данных 3D модели содержит: схему обработки и память, хранящую приложение, для функционирования схемы обработки в качестве: компонента определения пикселя шейдинга для определения одного из границ и области, покрытой множеством пикселей шейдинга; компонента отсечения для определения системы координат множества пикселей шейдинга и отсечения первого видимого примитива изображения 2D экрана, для формирования первого многоугольника; первого компонента интерполяции для интерполяции атрибута вершин первого видимого примитива с каждой вершиной первого многоугольника; и второго компонента интерполяции для интерполяции значений цвета вершин первого многоугольника до точки в пределах второй покрытой пикселем области изображения экрана; и компонента шейдинга для вывода значения цвета вершин первого многоугольника. 4 н. и 19 з.п. ф-лы, 15 ил.

Реферат

Визуализация двумерных (2D) сгенерированных компьютером изображений (CGI) из трехмерных (3D) моделей, ранее выполнявшаяся только частью относительно специализированных функций компьютера, все в большей степени используется во все большем количестве аспектов работы компьютерных устройств. В частности, хотя видеоигры продолжают представлять наиболее преобладающее использование таких изображений, их использование начинает поддерживаться на веб-сайтах и как часть графических интерфейсов пользователя (GUI) по все увеличивающемся массиве устройств.

Хотя достижения в конструкции аппаратных средств графической визуализации и повышение эффективности алгоритмов визуализации обеспечивали значительную часть такого увеличивающегося использования CGI на основе 3D моделей, эти достижения и повышение эффективности не были достаточными для того, чтобы полностью решить проблему ограничений при обработке и ресурсов энергии, которые являются типичными в портативных устройствах. В частности, работа по шейдингу графических примитивов для предоставления цвета и текстуры объектам в изображении продолжает требовать существенных ресурсов обработки, что, в свою очередь, налагает значительные требования в отношении ограниченных ресурсов энергии, предоставляемой аккумуляторными батареями и/или другими источниками питания, обычно используемыми в портативных устройствах. Кроме того, по мере того, как разрешение пикселей дисплеев, встроенных в портативные устройства, продолжает повышаться, достигнутое снижение требований в отношении обработки и питания было перекрыто экспоненциальным увеличением количества шейдинга связанного с таким увеличением разрешения.

Предыдущие усилия были направлены на то, чтобы, по меньшей мере, ограничить эти все возрастающие потребности в ресурсах энергии путем попыток непосредственного уменьшения количества выполняемого шейдинга. Однако при таких подходах все чаще происходит ввод неточной или неправильной информации, в виде входных данных для шейдинга, например, как в случае повышенного применения экстраполяций среди характеристик расчетов по интерполяции. Такая неточная или неправильная информация часто приводит к проявлению визуальных артефактов, таких как "мерцание" цвета пикселей, отсутствие гладкости при переходе цветов на изогнутых поверхностях объектов, составленных из множества примитивов, и/или смещенные границы теней.

Краткое описание чертежей

На фиг. 1 показан примерный вариант осуществления системы визуализации графики.

На фиг. 2 показан альтернативный примерный вариант осуществления системы визуализации графики.

На фиг. 3 показана часть примерного варианта осуществления.

На фиг. 4 показан примерный вариант осуществления растеризации 3D модели.

На фиг. 5 показан примерный вариант осуществления отсечения для определения многоугольника.

На фиг. 6 показан примерный вариант осуществления интерполяции для получения атрибутов вершин многоугольника.

На фиг. 7 показан примерный вариант осуществления вершин пиксельного шейдинга многоугольника.

На фиг. 8 показан примерный вариант осуществления интерполяции для раскрашивания пикселя экрана.

На фиг. 9A и 9B вместе представлен примерный вариант осуществления отсечения для определения более, чем одного многоугольника.

На каждой фиг. 10-11 представлен поток логической обработки в соответствии с вариантом осуществления.

На фиг. 12 показана архитектура обработки в соответствии с вариантом осуществления.

На фиг. 13 показан другой альтернативный вариант осуществления системы обработки графики.

На фиг. 14 показан вариант осуществления устройства.

Осуществление изобретения

Различные варианты осуществления, в общем, направлены на технологии для уменьшения требований к обработке шейдинга видимых примитивов при рендеринге 2D изображения экрана из 3D модели путем шейдинга пикселей, которые являются более грубыми, чем пиксели экрана, для изображения экрана, при одновременной минимизации визуальных артефактов. После растеризации выполняется отсечение видимых примитивов в пределах каждого из пикселей шейдинга для определения многоугольников, которые представляют пересечения видимых примитивов с областями, покрытыми отдельными пикселями шейдинга. Атрибуты в вершинах видимых примитивов интерполируют до вершин многоугольников, и затем выполняют шейдинг пикселей, используя атрибуты в вершинах многоугольников для вывода цветов в вершинах многоугольников. Затем цвета в вершинах многоугольников интерполируют для вывода цветов пикселей экрана.

В некоторых вариантах осуществления при растеризации может использоваться только одна выборка, выделенная для каждого пикселя изображения экрана для изображения экрана (например, одна выборка в центре каждого пикселя изображения экрана), для идентификации частей примитивов 3D модели, которые являются видимыми из перспективы изображения экрана в местах расположения пикселей изображения экрана. В других вариантах осуществления при растеризации может использоваться любая из различных типов выборки, включая в себя избыточную выборку, стохастическую выборку, мультивыборку и т.д., в которых присутствует множество выборок изображения экрана, выделенных для каждого пикселя изображения экрана для изображения экрана, для идентификации, таким образом, частей примитивов 3D модели, которые являются видимыми. Перед растеризацией может выполняться шейдинг вершины для вывода атрибутов для каждой из вершин каждого из примитивов. Как понятно для специалиста в данной области техники, в зависимости от подхода, в котором генерируются объекты 3D модели, примитивы могут быть представлены треугольниками или могут представлять собой смесь разных типов многоугольников. Однако, независимо от формы каждого примитива, все части каждого примитива должны существовать в пределах одной плоскости. Атрибуты вершин примитива, включая в себя их взаимные положения, могут определять этот примитив и плоскость, в которой он присутствует.

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

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

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

При общей ссылке на представления и номенклатуру, используемые здесь, части подробного описания изобретения, которые следуют дальше, могут быть представлены со ссылкой на программные процедуры, выполняемые в компьютере или сети компьютеров. Такие описания процедур и представлений используются специалистами в данной области техники для того, чтобы наиболее эффективно передать суть своей работы другим специалистам в данной области техники. Здесь используется процедура, которая, в общем, рассматривается, как самостоятельная последовательность операций, приводящая к требуемому результату. Эти операции являются операциями требуемых физических манипуляций с физическими величинами. Обычно, хотя и не обязательно, такие величины принимают форму электрических, магнитных или оптических сигналов, выполненных с возможностью их сохранения, передачи, комбинирования, сравнения и другой манипуляции. Время показало удобно, преимущественно по причинам общего использования, ссылаться на эти сигналы, как на биты, значения, элементы, символы, знаки, термины, числа и т.п. Следует отметить, однако, что все эти и аналогичные термины должны быть ассоциированы с соответствующими физическими величинами и представлять собой просто удобные метки, применяемые для этих величин.

Кроме того, такие манипуляции часто обозначают с использованием такой терминологии, как добавление или сравнение, которые обычно ассоциируются с ментальными операциями, выполняемыми оператором - человеком. Однако такая способность оператора - человека не является необходимой или желательной в большинстве случаев в любой из описанных здесь операций, которые формируют часть одного или больше вариантов осуществления. Скорее, эти операции представляют собой машинные операции. Полезные устройства для выполнения операций различных вариантов осуществления включают в себя цифровые компьютеры общего назначения, как избирательно активируемые или конфигурируемые компьютерной программой, содержащейся в них, которая записана в соответствии с представленным здесь описанием, и/или включают в себя устройство, специально построенное для требуемого назначения. Различные варианты осуществления также относятся к устройству или системам для выполнения этих операций. Такое устройство может быть, в частности, построено для требуемого назначения или может включать в себя компьютер общего назначения. Требуемая структура для множества таких устройств будет понятна из представленного описания.

Теперь будет сделана ссылка на чертежи, на которых одинаковые номера ссылочных позиций используются для обозначения одинаковых элементов на всех чертежах. В следующем описании, с целью пояснения, различные определенные детали представлены с целью обеспечения полного их понимания. Однако, может быть очевидно, что новые варианты осуществления могут быть выполнены на практике без этих конкретных деталей. В других случаях хорошо известные структуры и устройства показаны в форме блок-схем для того, чтобы способствовать их описанию. При этом предполагается охват всех модификаций, эквивалентов и альтернатив в пределах объема формулы изобретения.

На фиг. 1 иллюстрируется блок-схема варианта осуществления системы 1000 графической визуализации, в которой используется одно или больше из устройства 300 источника, вычислительного устройства 500 и устройства 700 просмотра. Вычислительное устройство 500 генерирует двумерное (2D) изображение 880 экрана трехмерной (3D) модели 280, проецируемой на 2D плоскость изображения 880 экрана. Вычислительное устройство 500 может принимать данные 330 3D модели, представляющие 3D модель 280 одного или больше объектов в пределах определенного 3D пространства из устройства 300 источника. Данные 330 3D модели могут либо непосредственно устанавливать примитивы, составляющие один или больше объектов модели 280 и/или атрибутов этих примитивов, или могут включать в себя достаточно информации для обеспечения вывода этих примитивов и/или их атрибутов.

После генерирования изображения 880 экрана, вычислительное устройство 500 может представлять изображение 880 экрана на дисплее 580 и/или передавать данные 730 изображения экрана, представляющие изображения 880 экрана, в устройство 700 просмотра для представления на его дисплее 780. Данные 730 изображения экрана могут включать в себя растровое представление для изображения 880 экрана, в котором цвета каждого пикселя изображения 880 экрана могут быть кодированы, используя любой из множества форматов. В некоторых вариантах осуществления разрешение пикселя изображения 880 экрана можно выбрать так, чтобы оно соответствовало разрешению пикселей дисплея 580 и/или дисплея 780. Действительно, в некоторых вариантах осуществления, устройство 700 просмотра может предоставлять обозначение разрешения пикселя дисплея 780 для вычислительного устройства 500, для обеспечения установки изображения пикселя изображения 880 экрана так, чтобы оно соответствовало разрешению пикселей дисплея 780.

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

Как представлено, такие вычислительные устройства 300, 500 и 700 выполняют обмен сигналами, переносящими данные, представляющие 3D модель и/или изображение 2D экрана через сеть 999. Однако, одно или больше их этих вычислительных устройств может выполнять обмен другими данными, полностью не связанными с визуализацией 2D изображения из 3D модели, с каждым другим и/или с дополнительными другими вычислительными устройствами (не показаны) через сеть 999. В различных вариантах осуществления сеть может представлять собой одиночную сеть, возможно, ограниченную по обмену одним зданием или относительно ограниченной другой областью, комбинации соединенных сетей, возможно, продолжающихся на значительное расстояние, и/или может включать в себя Интернет. Таким образом, сеть 999 может быть основана на любой из разновидностей (или комбинации) компьютерных технологий, с помощью которых может выполняться обмен сигналами, включая без ограничений, проводные технологии, в которых используются электрические и/или оптически проводящие кабели, и беспроводные технологии, в которых используются инфракрасная, радиочастотная или другие формы беспроводной передачи.

В различных вариантах осуществления вычислительное устройство 500 включает в себя один или больше компонентов 550 процессора, накопителя 560, дисплея 580, контроллера 600 и интерфейса 590 для соединения вычислительного устройства 500 с сетью 999. В накопителе 560 содержится одна или больше процедур 540 управления, данные 330 3D модели и данные 335 управления. В контроллер 600 встроен один или больше из компонента 650 процессора и накопителя 660. В накопителе 660 содержится одна или больше из процедур 640 управления, данных 632 видимых примитивов, данных 633 многоугольников, данных 635 многоугольника с атрибутами, данных 636 многоугольника, данных 637 цвета выборки и данных 730 изображения экрана.

Процедура 540 управления включает в себя последовательность инструкций, работающих в компоненте 550 процессора при выполнении его роли основного компонента процессора вычислительного устройства 500 для воплощения логики для выполнения различных функций. При выполнении процедуры 540 управления компонент 550 процессора может принимать данные 330 3D модели из устройства 300 источника через сеть 999 и может сохранять, по меньшей мере, их часть, которая представляет, по меньшей мере, часть 3D модели 280 в накопителе 560. Следует отметить, что данные 330 3D модели могут содержаться в накопителе 560 в течение значительного периода времени перед их использованием, включая в себя генерирование их 2D изображений при передаче. После генерирования данных 730 изображения экрана, представляющих изображения 880 экрана, компонент 550 процессора может визуально представлять изображение 880 на дисплее 580, для просмотра и/или передачи данных 730 изображения экрана в устройство 700 просмотра, для обеспечения возможности представления изображения 880 экрана на дисплее 780 для просмотра.

В некоторых вариантах осуществления компонент 550 процессора может принимать обозначения различных параметров конфигурации для использования при генерировании изображения 880 экрана из 3D модели 280. Например, в вариантах осуществления, в которых изображение 880 экрана должно быть передано в устройство 700 просмотра для представления на дисплее 780, могут быть приняты обозначения из устройства 700 просмотра (например, через сеть 999) о величине разрешения пикселей в виде цветов, частоты кадров и/или других параметров дисплея 780. В качестве другого примера, обозначения расположения и/или ориентация плоскости и/или границ изображения 880 экрана относительно 3D модели 280 могут быть приняты из устройства 700 просмотра и/или из еще другого устройства (не показано) через сеть 999. Компонент 550 процессора может сохранять обозначения таких параметров, как часть данных 335 управления для использования компонентом 650 процессора при генерировании изображения 880 экрана. В качестве альтернативы или в дополнение, обозначение разрешения пикселей может быть представлено для дисплея 580, а не для дисплея 780.

Процедура 640 управления содержит последовательность инструкций, выполняемых в компоненте 650 процессора, который выполняет свою роль компонента процессора контроллера для контроллера 600 вычислительного устройства 500, для воплощения логики для выполнения различных функций. При выполнении процедуры 640 оценки компонент 650 процессора генерирует данные 730 изображения экрана, представляющие изображения 880 экрана, из данных 330 3D модели, представляющих 3D модель 280. Более точно, компонент 650 процессора выполняет визуализацию изображения 880 экрана, как 2D проекцию 3D модели 280 на плоскости изображения 880 экрана. На фиг. 3 представлен пример варианта осуществления такого генерирования данных 730 изображения экрана, представляющего изображение 880 экрана из данных 330 3D модели, представляющих 3D модель 280. Как представлено, процедура 640 управления может содержать один или больше из компонента 642 растеризации, компонента 643 отсечения при шейдинге, компонента 645 интерполяции атрибутов, компонента 646 шейдинга пикселей, компонента 647 интерполяции цвета и компонента 648 усреднения. При выполнении процедуры 640 управления компонент 650 процессора может выполнять один или больше из компонентов 642, 643, 645, 646, 647 и 648 процедуры 640 управления.

Компонент 642 растеризации может выполнять визуализацию обозначения местоположения и ориентации на плоскости изображения 880 экрана относительно одного или больше объектов 3D модели 280 и/или границ изображения 880 экрана в пределах этой плоскости через данные 335 управления. Компонент 642 растеризации может затем использовать это обозначение при растеризации графических примитивов одного или больше объектов 3D модели 280, используя множество выборок для каждого пикселя изображения 880 экрана, для определения, какой из этих примитивов представляет собой видимые примитивы, все из которых являются, по меньшей мере, частично видимыми в изображении 880 экрана. На фиг. 4 более подробно представлены аспекты примера такой растеризации. Как представлено, данные 330 3D модели могут включать в себя данные 332 примитивов, которые включают в себя обозначение различных характеристик примитивов 282 3D модели 280, таких как размер, форма, местоположение и/или ориентация. Как описано выше, каждый из примитивов 282 может представлять собой любой из различных типов многоугольников, каждый из которых продолжается в пределах одной плоскости. Однако, как также было описано выше, большинство примитивов (если не все) в типичных 3D моделях представляют собой треугольники.

При выполнении растеризации, для определения, какие примитивы 282 3D модели 280 также являются видимыми примитивами 882, которые, по меньшей мере, частично видимы в изображении 880 экрана, компонент 642 растеризации может проецировать различные выборки 888 изображения экрана (только одна из которых представлена для ясности визуального представления) для каждого пикселя 885 изображения экрана для изображения 880 экрана в направлении 3D модели 280. При таком проектировании выборки 888 изображения экрана, любая из множества технологий выборки может использоваться при выборе количества выборок 888 изображения экрана на пиксель 885 изображения экрана и при выборе местоположений выборок 888 изображений экрана в пределах области, покрытой каждым пикселем 885 изображения экрана. Такие используемые технологии не являются ограничительными для избыточной выборки, множественной выборки и/или стохастической выборки. Поскольку каждая выборка 888 изображения экрана проецируется (как и линия, продолжающаяся от и нормально плоскости изображения 880 экрана) в направлении 3D модели 280, первый примитив 282 3D модели 280, с которым сталкивается каждая выборка 888 изображения экрана, становится видимым примитивом 882, который является, по меньшей мере, частично видимым в изображении 880 экрана.

Показатели того, какие видимые примитивы 882 идентифицированы растеризацией, могут быть сохранены, как часть данных 632 видимых примитивов. Как представлено, среди сохраненной информации, относящейся к видимым примитивам 882, могут быть показатели различных атрибутов, ассоциированных с каждой из вершин 883 каждого из видимых примитивов 882. Сохраненные атрибуты могут включать в себя, и не ограничены этим, одно или больше положений вершин, нормальных векторов, спецификаций материалов, глубин относительно плоскости изображения 880 экрана и т.д. В некоторых вариантах осуществления данные 632 видимых примитивов могут называться "буфером геометрии" (G - буфером).

Возвращаясь к фиг. 3, после растеризации, выполняемой компонентом 642 растеризации, компонент 643 отсечения шейдинга может разделить каждый из видимых примитивов 882 на один или больше многоугольников, так, что каждый из них представляет пересечение видимого примитива 882 с пикселем шейдинга для вывода вершин для использования при последующем шейдинге пикселя. На фиг. 5 более подробно представлены аспекты такого разделения примера видимого примитива 882. Более конкретно, на сетку 885 пикселей экрана, используемую во время растеризации, накладывается более грубая сетка пикселей 685 шейдинга, которая используется во время последующего пиксельного шейдинга. Как представлено, каждый из пикселей 685 шейдинга может покрывать большую область, чем пиксели 885 экрана. Кроме того, границы пикселей 685 шейдинга могут выравниваться, по меньшей мере, с поднабором границ пикселей 885 экрана таким образом, что область, покрываемая одним из пикселей 685 шейдинга, накладывается на область, покрытую целочисленным кратным пикселей 885 экрана (например, каждый пиксель 685 шейдинга соответствует области покрытия четырех из пикселей 885 экрана, как представлено). Несмотря на такое представление конкретного подхода соответствия местоположения и области между пикселями 685 шейдинга и пикселями 885 экрана, следует отметить, что возможны другие варианты осуществления, в которых границы не выравниваются и/или в которых область, покрытая пикселем 685 шейдинга, не является целочисленным кратным области, покрытой пикселем 885 экрана.

В некоторых вариантах осуществления подход, в соответствии с которым границы и/или области, покрытые пикселями 685 и 885, соответствуют, могут быть определены по показателю, сохраненному в данных 335 конфигурации (например, показатель, определяющий, что каждый пиксель 685 шейдинга покрывает область из четырех пикселей 885 экрана, как представлено), и этот показатель может быть получен из данных 335 конфигурации компонентом 643 отсечения шейдинга. В других вариантах осуществления компонент 643 отсечения шейдинга может включать в себя компонент 6435 определения пикселя шейдинга для определения границ и/или областей, покрытых пикселями 685 шейдинга на основе анализа одной или больше характеристик видимых примитивов 882 (например, на основе статистики, такой как средняя площадь, покрытая видимыми примитивами 882).

Независимо от подхода, в соответствии с которым определяют размер и/или границы пикселей 685 шейдинга относительно пикселей 885 экрана, компонент 643 отсечения шейдинга может выполнять отсечение частей видимых примитивов 882, которые попадают в пределы каждого из пикселей 685 шейдинга, для вывода многоугольников 682, каждый из которых представляет пересечение области, покрытой пикселем 685 шейдинга, и части видимого примитива 882, который попадает в пределы пикселя 685 шейдинга. Более конкретно, и, как представлено, на примере видимого примитива 882, ранее идентифицированного компонентом 642 растеризации, наложена сетка пикселей 685 шейдинга, включающая в себя пример пикселя 685 шейдинга (выделен), который соответствует примеру пикселя 885 экрана (также выделен), для которого выполняют поиск значения цвета. В пределах примера пикселя 685 шейдинга, отсечение примера видимого примитива 882 выполняют в непосредственной близости двух углов примера пикселя 685 шейдинга для определения примера многоугольника 682 (также выделен), имеющего форму, которая определяется путем пересечения областей, покрытых примером пикселя 685 шейдинга и участком примера видимого примитива 882, который попадает в пределы примера пикселя 685 шейдинга.

В некоторых вариантах осуществления компонент 643 отсечения шейдинга может генерировать барицентрическую систему координат на каждом видимом примитиве 882, для управления отсечением. Как понятно для специалиста в данной области техники, барицентрическая система координат основана на относительных местоположениях вершин, при этом центры каждого сегмента продолжаются между вершинами и/или центром масс многоугольника. Дополнительно, в пределах, по меньшей мере, выпуклых многоугольников, барицентрическая система координат определяет все точки с помощью полностью неотрицательных значений координат, как находящиеся либо на ребре, или внутри многоугольника, и все точки с любым отрицательным значением координат, как находящиеся за пределами многоугольника. Таким образом, в вариантах осуществления, в которых компонент 643 отсечения шейдинга генерирует барицентрическую систему координат для каждого видимого примитива 882, компонент 643 отсечения шейдинга может затем накладывать ограничение на любое отрицательное значение координат, как часть идентификации местоположений кромок видимого примитива 882 в пределах пикселя 685 шейдинга, для определения, где должно произойти отсечение в пределах этого пикселя 685 шейдинга.

Независимо от подхода, в котором выполнено определение, следует ли выполнить отсечение для генерирования каждого многоугольника 682, компонент 643 отсечения шейдинга может содержать показатели областей, покрытых каждым многоугольником 682, который может быть определен при таком отсечении в пределах каждого из пикселей 685 шейдинга, как часть данных 633 многоугольника. В некоторых вариантах осуществления геометрии каждого такого многоугольника 682 могут быть описаны с использованием данных 633 многоугольника по показателям мест расположения их вершин.

Возвращаясь к фиг. 3, после выполнения отсечения компонентом 643 отсечения, компонент 645 интерполяции атрибута может интерполировать один или больше атрибутов в вершинах каждого видимого примитива 882 до вершин многоугольников 682, на которые были разделены видимые примитивы 882 в результате отсечения. На фиг. 6 более подробно представлены аспекты примера такой интерполяции атрибутов от вершин примера примитива 882 до вершин примера многоугольника 682 на фиг. 5. Более конкретно, возвращаясь частности к тому, что представлено на фиг. 6, компонент 645 интерполяции атрибута интерполирует один или больше атрибутов каждой из вершин 883 примера видимого примитива 882 для каждой из вершин 683 примера многоугольника 682. Таким образом, компонент 645 интерполяции атрибута может получать показатели атрибутов вершин 883 примера видимого примитива 882 из данных 632 видимых примитивов и может получать показатели местоположений вершин 682 примера многоугольника 682 из данных 633 многоугольника.

Рабочие характеристики интерполяции, выполняемые компонентом 645 интерполяции атрибута из одного или больше атрибутов в каждой из вершин 883 примера видимого примитива 882 до вершин 683 примера многоугольника 682, исключают случаи экстраполяции, при которых интерполяция от вершин 883 выполняется до одного или больше мест расположения за пределами примера видимого примитива 882. Атрибуты интерполяции от каждой из вершин примитива до местоположения за пределами примитива могут рассматриваться логически некогерентными, поскольку может отсутствовать основание для собственного предположения о том, что атрибуты этого примитива могли бы иметь какую-либо применимость в отношении того, что может представлять собой местоположение, в котором может ничто не присутствовать, или в котором может существовать другой примитив, имеющий совершенно другие атрибуты. В качестве примера, интерполяция от значений цвета в вершинах 883 примера видимого примитива 882 до местоположения за пределами примера видимого примитива 882, вероятно, будет бессмысленной, поскольку в этом местоположении может ничего не находиться, что могло быть иметь заданное значение цвета, или здесь может находиться другой примитив с совершенно другим цветом в этом местоположении.

Вершины 683 примера многоугольника 682 предоставляет набор местоположений, которые, как известно, находятся либо в пределах примера видимого примитива 882 или вдоль одной или больше кромок примера видимого примитива 882, а не за пределами примера видимого примитива 882. В результате, интерполяция, выполняемая компонентом 645 интерполяции атрибута, может быть выполнена из вершин 883 примера видимого примитива 882 для каждой из вершин 683 примера многоугольника 682 без риска, что одна или больше этих интерполяций представляет собой экстраполяцию. Это отличается от других известных технологий, в которых такая интерполяция была бы выполнена из вершин 883 примера видимого примитива 882 в любой из углов пикселя 685 шейдинга, в котором пример многоугольника 682 сформирован к центрам этого пикселя 685 шейдинга и одному или больше соседних пикселей 685 шейдинга. Каждая такая интерполяция таких других известных технологий, могла бы привести к множеству экстраполяций (как можно видеть со ссылкой на фиг. 5). Компонент 645 интерполяции атрибута может содержать показатели атрибутов, выведенные для каждой из вершин 683 примера многоугольника 682, как часть данных 635 многоугольника с атрибутами. В некоторых вариантах осуществления данные 635 многоугольника с атрибутами также могут включать в себя показатели местоположений каждой из вершин 683.

Возвращаясь к фиг. 3, после интерполяции для вывода атрибутов в вершинах 683 каждого из многоугольников 682, выполненной компонентом интерполяции 645 атрибута, компонент 646 пиксельного шейдинга может использовать атрибуты в каждой вершине 683 каждого многоугольника 682, как входы для выполнения пиксельного шейдинга в каждой вершине 683 каждого многоугольника 682 для вывода значений цвета для каждой вершины 683 каждого многоугольника 682. Например, в каждой вершине 683 примера многоугольника 682, компонент 646 пиксельного шейдинга может использовать один или больше атрибутов в этой вершине 683 для вывода значения цвета, устанавливающего цвет в этой вершине 683. Таким образом, компонент 646 пиксельного шейдинга может получать показатели одного или больше атрибутов для каждой вершины 683 примера многоугольника 682 из данных 635 многоугольника с атрибутами. Компонент 646 пиксельного шейдинга может затем содержать показатели значений цвета, устанавливающих цвет в каждой из вершин 683 примера многоугольника 682, как часть данных 636 многоугольника после шейдинга. В некоторых вариантах осуществления данные 636 многоугольника после шейдинга также могут включать в себя показатели местоположений каждой из вершин 683 и/или атрибуты в каждой из вершин 683.

После шейдинга в вершинах 683 каждого из многоугольников 682, выполненного компонентом 646 пиксельного шейдинга, компонент 647 интерполяции цвета может интерполировать значения цвета в каждой вершине каждого многоугольника 682 для вывода значений цвета пикселей 885 экрана. На фиг. 7 более подробно представлены аспекты примера такой интерполяции для вывода значений цвета для примера пикселя 885 экрана, совпадающего с примером многоугольника 682 на фиг. 5 и 6.

Следует отметить, что интерполяция, выполняемая компонентом 647 интерполяции цвета, включает в себя, по меньшей мере, интерполяцию значений цвета, устанавливающих цвет для каждого пикселя 885 экрана изображения 880 экрана из значений цвета, выведенных компонентом 646 пиксельного шейдинга для вершин 683 соответствующих вершин многоугольника 682. Однако, интерполяция, выполняемая компонентом 647 интерполяции цвета, также может включать в себя вывод одного или больше других атрибутов для каждого пикселя 885 экрана, путем аналогичной интерполяции этих атрибутов, выведенных для вершин 683 соответствующих вершин многоугольников 682 с помощью компонента 645 интерполяции атрибута. Таким образом, компонент 647 интерполяции цвета может выводить обозначения значений цвета и/или значений атрибута (атрибутов) в каждой из вершин 683 многоугольников 682 из данных 636 многоугольника после шейдинга. Компонент 647 интерполяции цвета может затем сохранять значения цвета и/или значения атрибута (атрибутов), выведенные для пикселей 885 экрана путем интерполяции, как части данных 730 изображения экрана. Со значением (значениями) каждого пикселя 885 изображения экрана, сохраненными в данных 730 изображения экрана, данные 730 изображения экрана могут стать представлением изображения 880 экрана.

Таким образом, компонент 647 интерполяции цвета может интерполировать значения цвета, выведенные для каждой из вершин 683 примера многоугольника 682 компонентом 646 пиксельного шейдинга, для вывода значения цвета, устанавливающего цвет для примера пикселя 885 экрана. Аналогично, компонент 647 интерполяции цвета может дополнительно интерполировать значения одного или больше других атрибутов, выведенных для каждой из вершин 683 примера многоугольника 682 компонентом 646 пиксельного шейдинга для вывода значения (значений) для этих одного или больше других атрибутов, для примера пикселя 885 экрана. Местоположение, в которое могут быть направлены эти интерполяции, выполняемые компонентом 647 интерполяции цвета, может представлять собой центр примера пикселя 885 экрана. Кроме того, пример пикселя 885 экрана можно рассматривать, как соответствующий примеру многоугольника 682 в результате того, что центр примера пикселя 885 экрана попадает в пример многоугольника 682, и такая форма соответствия примера многоугольника 682 может определять, что атрибуты (включая в себя значения цвета), выведенные для примера пикселя 885 экрана, должны быть интерполированы из вершин 683 примера многоугольника 682.

Такая интерполяция к центру каждого из пикселей 885 экра