УСКОРЕННОЕ ОТСЕЧЕНИЕ ОДНОЙ ПЛОСКОСТЬЮ МНОГОУГОЛЬНИКОВ ПРИ ГРАФИЧЕСКОЙ ОБРАБОТКЕ
DOUBLE QUICK CROSS-SECTION OF POLYGONS BY ANY PLANE IN GRAPHIC PROCESSING

Уровень техники
Графическая обработка и, более конкретно, трехмерная (3D) визуализация часто выполняются в отношении многоугольников, таких как треугольники, которые иногда называются примитивами. Поскольку потребность в графической обработке повышается в различных устройствах, таких как устройства, связанные с играми, скорость, с которой можно обрабатывать такие примитивы, может представлять собой ограничительный фактор в различных контекстах, таких как в интегрированные и переносные графические ядра в модуле графической обработки (GPU).
Одна из технологий для ускорения обработки примитивов, таких как треугольники, состоит в обработке их только, когда их требуется обрабатывать. Если треугольник расположен полностью за пределами поля обзора для заданного контекста (часто определенного, как шестисторонний "конус видимости"), тогда его можно отбросить без какой-либо дополнительной обработки. Но если треугольник накладывается на границу, представляющую интерес, его можно отсечь, используя одну или больше плоскостей, которые формируют конус видимости, при этом часть треугольника, которая находится за пределами конуса видимости, исключают из дополнительной обработки в подходе, известном, как "отсечение".
Краткое описание чертежей
Различные преимущества вариантов осуществления будут понятны для специалистов в данной области техники, в результате чтения следующего описания и приложенной формулы изобретения, и со ссылкой на следующие чертежи, на которых:
на фиг. 1 показан пример конуса видимости, включая пример треугольников;
на фиг. 2 показан пример треугольника, имеющего барицентрические координаты;
на фиг. 3 показан пример треугольника, который был отсечен множеством плоскостей отсечения;
на фиг. 4 показан пример треугольника по фиг. 3, который был отсечен одной плоскостью отсечения;
на фиг. 5 показаны примеры некоторых переменных, ассоциированных со стороной отсеченного треугольника в соответствии с вариантом осуществления;
на фиг. 6A показан пример треугольника, который был отсечен одной плоскостью отсечения, при этом вершина треугольника находится снаружи, и основание находится внутри;
на фиг. 6B показан пример треугольника, который был отсечен одной плоскостью отсечения, при этом вершина треугольника находится внутри, и основание находится снаружи;
на фиг. 7 показана блок-схема последовательности операций примера способа обработки операций отсечения в соответствии с вариантом осуществления;
на фиг. 8 показан пример аппаратных средств для обработки операций отсечения в соответствии с вариантом осуществления; и
на фиг. 9 показана блок-схема примера системы в соответствии с вариантом осуществления.
Подробное описание вариантов осуществления
На фиг. 1 иллюстрируется конус 10 видимости, который рассматривают из перспективы оси 12. Конус 10 видимости имеет ближнюю поверхность 13, дальнюю поверхность 14, верхнюю поверхность 15, нижнюю поверхность 16, правую поверхность 17 и левую поверхность 18. Также, совместно с конусом 10 видимости показаны примеры треугольников 19, 20 и 21. Отсечение в 3D графических конвейерах может выполняться для отбрасывания участков сцены, которые находятся за пределами конуса видимости. Поскольку было быть расточительным выполнять графические операции для треугольника, который полностью находится за пределами конуса видимости, про такие объекты (например, треугольник 19) говорят, что они “тривиально отбрасываются”, то есть, отбрасываются из дальнейшей обработки. С другой стороны, объекты, которые полностью содержатся внутри объема видимости, такие как треугольник 20, обрабатывают, и они могут быть переданы по конвейеру для дальнейшей обработки, или другими словами, могут быть тривиально приняты (TA). Здесь интерес представляют объекты, такие как треугольник 21, который имеет вершины, находящиеся в пределах конуса видимости, и эти объекты пересекаются поверхностью конуса видимости, таким образом, что участки объекта находятся за пределами конуса видимости, и другие участки располагаются за пределами конуса видимости. В случае треугольника 21 на фиг. 1, правая поверхность 17 конуса 10 действует, как плоскость отсечения, разделяя треугольник 21 на внутренний многоугольный участок 22-23-24-25 (который сам по себе может быть дополнительно разделен на треугольники 22-23-24 и 24-25-22), и внешний или наружный участок 24-25-26. Такой треугольник может быть отсечен, генерируя новый треугольник с новыми вершинами на плоскости отсечения. Иллюстрация отсечения в отношении правой поверхности 17 представлена здесь для ясности иллюстрации. Любая из других поверхностей 13, 14, 15, 16 и 18, либо по-отдельности, или в комбинации друг с другом (включая в себя правую поверхность 17) могут действовать, как плоскости отсечения для заданного треугольника.
Операции отсечения могут быть дорогостоящими с точки зрения времени цикла и других мер использования компьютера, таких как латентность, пропускная способность и использование энергии, и могут, по существу, ухудшить рабочие характеристики графической подсистемы.
В то время как вплоть до шести плоскостей отсечения конуса видимости могут пересекать общий многоугольник, было определено, что распределение плоскостей отсечения в приложениях реального мира может быть очень неоднородным и, фактически, с сильным перекосом в направлении случая одной плоскости отсечения. В огромном большинстве случаев, когда возникает отсечение, привлекается только одна плоскость отсечения.
Хотя другие виды многоугольников могут использоваться в графике, они могут, в общем, быть уменьшены до примитивной формы треугольника, и, таким образом, примеры, которые представлены ниже, представлены в отношении треугольников. Однако варианты осуществления могут использоваться с другими многоугольниками, такими как прямоугольники, пятиугольники, шестиугольники и т.д.
На фиг. 2 показан пример треугольника 30, имеющего вершины A, B и C, которые могут иметь множество атрибутов, такие как насыщенность цвета (например, интенсивность красного, зеленого и синего), степень прозрачности, текстура и местоположение. В описанных здесь вариантах осуществления эти значения могут быть выражены в форме барицентрической координаты. В случае треугольника 30 каждая вершина имеет атрибут b0, b1 и b2, который, как отмечено выше, может обозначать насыщенность цвета, текстуру, интенсивность или любой другой атрибут, представляющий интерес. Может присутствовать меньшее или большее количество таких атрибутов, но в следующих примерах представлены три атрибута (b0, b1 и b2) с целью иллюстрации.
На фиг. 3 показан треугольник 30, после его отсечения тремя плоскостями 36, 37 и 38 отсечения, в результате чего, формируется внешний участок 39 и внутренний участок 41. Следует отметить, что отсечение треугольника любым количеством плоскостей приводит к получению выпуклого многоугольника, здесь B-G-H-I-J-C, который формирует границу между исключенным внешним участком 39 и внутренним участком 41. Как отмечено выше, область за пределами или внешняя область исключена в том смысле, что она располагается за пределами конуса видимости, и таким образом, ее нет необходимости дополнительно обрабатывать (то есть, ее "отсекают"), в то время как включенный внутренний участок 41, в общем, может потребовать дополнительной графической обработки. Многоугольник B-G-H-I-J-C может быть разбит на треугольники B-G-H, B-H-I, B-I-J и B-J-C, или четыре треугольника для треугольника, с которого началась обработка. Дополнительно следует отметить, что, в случае, когда первоначально присутствуют только три вершины с известными барицентрическими координатами, теперь их шесть, четыре из которых должны быть рассчитаны (барицентрические координаты точек B и C не изменились). Это может представлять собой задачу, требующую значительного времени на вычисления.
На фиг. 4 показан более простой случай, в котором треугольник 30 пересекается одиночной плоскостью 43 отсечения. В этом случае, область 45 исключается, и область 47 включается. Граница между областями представляет собой линию плоскости 43 отсечения, которая определяет включенный внутренний многоугольник B-D-E-C. Этот многоугольник может быть разбит на два треугольника: B-D-E и B-E-C (или B-D-C и D- E-C). В таком одиночном случае плоскости отсечения система может найти значение барицентрических координат для точек, в которых одиночная плоскость 43 отсечения пересекает треугольник, что на чертеже представлено точками D и E.
Однако, может присутствовать множество плоскостей отсечения, для каждой кромки треугольника, на которых плоскость отсечения пересекает треугольник, существует точка пересечения, и барицентрические значения для этой точки могут быть рассчитаны. Это может быть выполнено, используя расстояние отсечения двух вершин кромки, поскольку расстояние до плоскости отсечения изменяется линейно вдоль кромки. Такой подход иллюстрируется со ссылкой на фиг. 5, на которой представлена примерная кромка A-B, которая была пересечена плоскостью 50 отсечения. В представленном примере вершина A представляет собой внешнюю точку, расположенную за пределами конуса видимости, и вершина B представляет собой внутреннюю точку, расположенную внутри конуса видимости. Следующий анализ является общим, в том смысле, что он может применяться для одиночной плоскости отсечения, а также для произвольного количества плоскостей отсечения, путем последовательной обработки каждой из них.
Вначале определяют ряд переменных:
Dout: расстояние от вершины А до плоскости 50 отсечения.
Din: расстояние от вершины B до плоскости 50 отсечения.
D: точка вдоль A-B, на которой выполняется пересечение плоскостью 50 отсечения.
альфа:
Кроме того, в этом примере расстояние вдоль A-B нормализуют до 1 для удобства вычислений.
Dist = Din * альфа + Dout * (1 - альфа)
На фиг. 5 Dist показано, как расстояние от произвольной точки E расположенной вдоль A-B, до плоскости 50 отсечения. Установка Dist = 0 (что графически соответствует перемещению точки E в точку D), и решение для альфа приводит к получению значения альфа в плоскости отсечения, альфа = -Dout/(Din - Dout) или альфа = Dout/(Dout - Din) (Следует отметить, что Din и Dout могут представлять собой расстояния, с которыми ассоциируют величины со знаком. Таким образом, если Din является положительным, тогда Dout может быть отрицательным, и Din не будет равно Dout, таким образом, что исключается деление на ноль).
Пусть бета будет определено, как равное 1 - альфа, тогда, при упрощении уравнения до a*x + b*y, получают: бета = 1 - альфа = 1 - (Dout/(Dout-Din) = ((Dout - Din) - Dout)/(Dout-Din) бета = -Din/(Dout - Din)
Поскольку альфа и бета были рассчитаны от отсеченной кромки, оставшиеся расстояния в плоскости и барицентрические члены интерполируют для новой вершины, которая возникает в точке пересечения плоскости отсечения и кромки,
.
альфа = D (B)/(D (B) - D (A)) (ур 1)
бета = -D (A)/(D (B) - D (A)) (ур. 2)
b0(D) = b0(A)*альфа + b0 (B)*бета (ур. 3)
b1(D) = b1(A)*альфа + b1 (B)*бета (ур. 4)
b2(D) = b2(A)*альфа + b2 (B)*бета (ур. 5)
Конечные барицентрические координаты рассчитывают для всех новых вершин, и в конце операции отсечения новые положения и атрибуты могут быть рассчитаны следующим образом:
P(D) = V(A)*b0(D) + V(B)*b1(D) + V(C)*b2 (D) (ур. 6), где V(A), V(B) и V(C) представляют исходные значения атрибута вершины в вершинах A, B и C, соответственно, P(D) представляет атрибут (например, цвет, текстуру) в новой вершине D, и b0(D), b1(D) и b2(D) представляют собой рассчитанные барицентрические значения в новой вершине D.
Для отсечения одной плоскости можно использовать тот факт, что существуют два возможных результата при отсечении одной плоскостью. На фиг. 6A и 6B иллюстрируются эти две топологии. Каждая топология демонстрирует одиночную плоскость 52 отсечения, пересекающую треугольник. В топологии на фиг. 6A вершина B треугольника находится снаружи, и в топологии на фиг. 6B вершина B располагается с внутренней стороны плоскости 52 отсечения.
В случае, когда существует только одна плоскость отсечения, можно использовать представленные выше уравнения 1-6 для отсечения и расчета исходных барицентрических значений, и новые барицентрические координаты находятся в простой комбинации альфа и бета.
В этом примере могут использоваться исходные барицентрические значения, представленные для положений вершин для треугольника на фиг. 2, в результате чего получают:
b0(A) = 1, b1(A) = 0, b2(A) = 0
b0(B) = 0, b1(B) = 0, b2(B) = 1
b0(C) = 0, b1(C) = 1, b2(C) = 0
Путем замены исходных барицентрических значений в уравнениях (3), (4) и (5), для случая одной плоскости отсечения, барицентрические координаты для новой точки D могут теперь быть оценены следующим образом:
b0 (D) = l*альфа + 0*бета = альфа (ур. 7)
b1(D) = 0* альфа + 0*бета = 0 (ур. 8)
b2 (D) = 0 + бета = бета (ур. 9)
Барицентрические значения для точки E могут быть оценены аналогично.
Очевидно, что расчеты для операции отсечения одной плоскостью с точки зрения вычислительной нагрузки в меньшей степени используются, чем при отсечении множеством плоскостей. Операция может быть, таким образом, выполнена, используя относительно малые ресурсы процессора и памяти.
Возвращаясь теперь к фиг. 7, здесь показана блок-схема последовательности операций одного примера способа обработки, как для операций отсечения одной плоскостью, так и для операций отсечения множеством плоскостей. Способ может быть воплощен в логических аппаратных средствах с фиксированной функциональностью, используя технологию цепей, такую как, например, специализированная интегральная схема (ASIC), комплементарный металлооксидный полупроводник (CMOS) или технологию транзисторно-транзисторной логики (TTL), или любой их комбинации.
Как представлено в блоке 62, вершины заданного входного треугольника вводят, вместе с плоскостями отсечения, с помощью которых выполняют операции отсечения. Представленный условный блок 64 выполняет проверку количества плоскостей отсечения. Если присутствует одна плоскость отсечения, управление переходит на левую половину блок-схемы последовательности операций, тогда как, если присутствует более, чем одна плоскость отсечения, управление переходит на правую половину блок-схемы последовательности операций. Вначале рассмотрим случай отсечения одной плоскостью, которое выполняется левой половиной блок-схемы последовательности операций.
Как представлено в блоке 66, вершины треугольника инициализируют и представляют в виде списка, и барицентрические члены также инициализируют (то есть, нормализуют до 0 или 1). Затем, в представленном блоке 68 (например, в блоке "LOAD"), рассчитывают и сохраняют расстояния вершин от одной плоскости отсечения. В блоке 70, рассчитывают отношение расстояний изнутри наружу, наружу внутрь, то есть, альфа и бета, как описано выше, (как, например, в соответствии с уравнениями 7, 8 и 9). Затем, в представленном блоке 72 выбирают соответствующую выходную топологию из 4 вершин или 3 вершин, в зависимости от входной топологии. В представленном блоке 74, для всех вершин этой топологии барицентрические значения в новом положении отсечения рассчитывают (как описано со ссылкой на уравнения 7, 8 и 9), и в блоке 104 переменные значения, представляющие интерес для новых вершин, которые получают в результате операции отсечения, являются доступными (как, например, используя приложение в соответствии с уравнением 6, представленным выше).
Далее рассматривает случай, где присутствует множество плоскостей отсечения. Хотя, как отмечено выше, в большинстве случаев, когда требуется выполнить отсечение, используется только одна плоскость отсечения, все еще возможны случаи, когда необходимо учитывать множество плоскостей отсечения, и вариант осуществления способа для этого представлен с правой половине блок-схемы последовательности операций. В представленном блоке 80 вершины треугольника инициализируют и представляют в виде списка, и также инициализируют барицентрические термины. Затем, как показано в блоке 82, блоке нагрузки, рассчитывают и сохраняют расстояния вершин от конкретной рассматриваемой плоскости отсечения. В блоке 84 может быть определено, были ли рассмотрены все плоскости отсечения в отношении предшествующих этапов, и если нет, управление переходит обратно по циклу к предыдущему блоку и снова рассчитывают расстояния вершин от конкретной рассматриваемой плоскости отсечения и сохраняют. Если эта фаза способа была закончена в отношении всех плоскостей отсечения, тогда в блоке 86 начинаются этапы для отсечения в отношении конкретной плоскости.
В представленном блоке 88 определяются, находятся ли все вершины заданного треугольника за пределами конуса видимости и, если это так, эти треугольники отбрасывают (то есть, тривиально исключают), и управление переходит к блоку 104. Если не все вершины находятся снаружи, способ определяет в блоке 90, все ли вершины находятся внутри (то есть, во внутреннем пространстве) конуса видимости. Если этот так, фактически не требуется выполнять отсечение для этого треугольника, и управление переходит в блок 86 для выбора следующей плоскости для рассмотрения. Если не все вершины находятся внутри конуса видимости, тогда в блоке 92 рассчитывают отношение расстояний изнутри наружу, снаружи внутрь, то есть, альфа и бета, как описано выше, и в блоке 94 способ интерполирует новое барицентрическое расстояние вершины и другие координаты для точек вдоль кромок треугольника, которые были пересечены плоскостью отсечения.
В блоке 96 может быть определено, все ли плоскости были отсечены и если нет, управление переходит обратно к представленному блоку 94. Если все было учтено, тогда флаги блока 98 для новых вершин могут быть обновлены и рассчитаны. Флаги могут использоваться для обозначения топологии (то есть, внутри в противовес снаружи) вершин в отношении плоскостей, по которым выполняется отсечение. Как представлено в блоке 100, способ определяет, все ли плоскости были учтены, и если нет, управление переходит по циклу обратно в блок 86. Если, с другой стороны, если все плоскости отсечения были учтены, тогда в блоке 102 могут быть рассчитаны новые положения вершины, значения и барицентрические термины для всех новых сгенерированных вершин, в котором рассчитанные положения, значения и термины становятся доступными в представленном блоке 104.
На фиг. 8 иллюстрируется пример аппаратных средств 120 воплощения, с которыми может быть выполнен на практике способ в соответствии с вариантом осуществления. В общих чертах, представленный вариант осуществления представляет два конвейера обработки, в общем, соответствующие двум сторонам блок-схемы последовательности операций, представленной на фиг. 7, при этом конвейер 160 обработки соответствует левой стороне на фиг. 7, и конвейер 130 обработки соответствует, в общем, правой половине на фиг. 7. Используя аппаратные средства 120 для воплощения, для ускорения обработки геометрии, можно улучшить рабочие характеристики подсистемы геометрии, в частности, при использовании совместно с технологиями отсечения одной плоскостью, описанными здесь.
Треугольники 122 могут поступать в декодер 124, который управляется по одному сигналу 126 управления отсечением, который информирует декодер 124, подвергается ли этот треугольник отсечению одной плоскостью или отсечению множеством плоскостей. На противоположном конце фигуры тот же самый сигнал 126 управления может использоваться мультиплексором 125, для установки выхода.
Вначале рассматривают случай, когда было определено, что существует множество плоскостей отсечения. При таком воплощении существует много ресурсов 144, 146 и 148 ALU (их может быть больше или меньше), которые могут воплощать простые виды линейных операций A*X + B*Y, и также блок 150 делителя, и файл 152 регистра, который могут сохранять входные данные, выходные данные и временные вершины, которые были сгенерированы во время операций отсечения. Такой вариант осуществления также содержит блок 132 управления для планирования операции множества отсечений, используя эти ресурсы. Такой блок 132 управления может работать по более, чем пяти фазам через соответствующие модули, а именно, модуль 134 INIT, модуль 135 LOAD, модуль 136 CALC, модуль 140 CLIP и модуль 142 OUT. На фазе INIT вершины загружают в файл регистра, и список вершин, и барицентрические значения назначаются для этих вершин. На представленной фазе LOAD ресурсы ALU используют для расчета расстояния вершин от выбранной плоскости, и эта обработка выполняется итеративно для всех включенных плоскостей отсечения. Затем рассчитанные расстояния могут быть проверены для того, чтобы убедиться, для каких плоскостей требуется снова выполнить отсечение. На фазе CALC для выбранной плоскости отсечения в представленных аппаратных средствах используются ресурсы ALU и блок делителя для расчета отношений расстоянии изнутри наружу и снаружи внутрь, (то есть, альфа, бета в соответствии с уравнениями 1 и 2).
Представленный CLIP оценивает барицентрические значения в новом положении отсечения, в соответствии с уравнениями 3, 4 и 5. После этого может быть определено, требуется ли все еще выполнить отсечение другой плоскостью.
Предшествующая обработка может повторяться итеративно до тех пор, пока не останется ни одна плоскость, для которой требуется выполнить отсечение. На фазе OUT все новые барицентрические значения вершин могут быть считаны из файлов регистров, и ресурсы ALU снова используются для расчета новых положений и других значений, представляющих интерес (например, цвет, текстура и т.д.), путем оценки уравнения 6. Эта новая оценка может быть составлена для всех вновь сгенерированных вершин. В то время, как выполняются операции с множеством плоскостей отсечения, большинство ALU и другие ресурсы могут быть задействованы на упомянутых выше фазах, таким образом, что только один треугольник был запланирован для обработки в конвейере 130, до тех пор, пока не будут сгенерированы окончательные выходные значения.
Как было упомянуто выше, в большинстве случаев используется только одна плоскость отсечения, и в этом случае используется отдельный конвейер 160, оптимизированный для операций с одной плоскостью отсечения. В отличие от конвейера 130, для случая с множеством плоскостей отсечения, представленный конвейер 160 выполнен с возможностью обработки множества объектов в одном конвейере. В случае операции отсечения одной плоскостью, каждый ресурс ALU может быть привязан к одной фазе, и ALU может использоваться только для той операции, которая позволяет обрабатывать множество треугольников в конвейере. В представленном варианте осуществления пять треугольников могут быть обработаны в конвейере 160. Такой подход является противоположным случаю множества плоскостей отсечения (конвейер 130), где каждый ALU обычно совместно используется для множества операций, с использованием многочисленных расчетов для множества отдельных конвейеров. В этом случае, в качестве практического предмета, требования к расчетам являются такими, что только один треугольник может быть обработан одновременно.
В модуле 162 SinglePlane_INIT, загружают вершины, и барицентрические значения назначают для вершин. В модуле 164 SinglePlane_LOAD, один ресурс 144 ALU используется для расчета расстояния вершин от одной плоскости, по которой выполняется отсечение, таким образом, что нет необходимости выполнять оценку расстояния от множества плоскостей отсечения. В модуле 166 CALC SinglePlane для выбранной плоскости отсечения используется другой ресурс 146 ALU, наряду с блоком 150 делителя, для расчета отношений расстояния изнутри наружу и снаружи внутрь (то есть, альфа и бета, как описано выше со ссылкой на уравнения 1 и 2). В модуле 168 CLIP SinglePlane оценку новых барицентрических значений получают путем назначения значений альфа и бета, как было продемонстрировано в уравнениях 7, 8 и 9, представленных выше. Входная топология может определять, требуется ли генерировать одну или две новых вершины. В представленном модуле 170 SinglePlane_OUT, другой ресурс ALU (не показан) используется для оценки конечного положения или другого требуемого значения (например, цвета, текстуры и т.д.), путем выполнения расчетов, как представлено в уравнении 6.
В следующей таблице показан пример пропускной способности операций отсечения “необходимо отсечение” для случаев одной и множества плоскостей:
Случай “требуется отсечение”
Количество циклов тактовой частоты без конвейера одной плоскости
Количество циклов тактовой частоты с конвейером одной плоскости
Одна плоскость отсечения
S + M
SP_M
N-плоскостей отсечения
S + N*M
S + N*M
где:
S = количество фиксированных циклов, проведенных на исходной установке и при конечном выводе, и все другие операции учета;
N = количество плоскостей, по которым выполняется отсечение;
M = количество циклов, проведенных для отсечения по каждой плоскости;
SP_M представляет собой латентность этапа наихудшего случая операции отсечения одной плоскости.
Следует отметить, что латентность SP_M обычно будет существенно ниже, чем М, и действительно близка к латентности ALU.
Реальный прирост характеристик производительности может быть достигнут путем воплощения раскрытых здесь вариантов осуществления. Для большинства рабочих нагрузок варианты осуществления с одной плоскостью, такие, как раскрыты здесь, могут привести к хорошему приросту характеристик производительности. Кроме того, удаление даже половины ALU может оказывать малое влияние на характеристики производительности, что означает, что также возможно преимущество в отношении места, в том, что меньшее количество транзисторов или вентилей могут использоваться в конструкции, что, таким образом, экономит общую площадь микросхемы и ее стоимость. Таким образом, существует, как преимущество в рабочих характеристиках, так и преимущество в отношении занимаемого места при воплощении отдельного конвейера для аппаратного отсечения одной плоскостью, такого, как описано здесь.
На фиг. 9 показана блок-схема системы 200 обработки данных, в соответствии с вариантом осуществления. Система 200 обработки данных включает в себя один или больше процессоров 202 и один или больше графических процессоров 208, и может представлять собой настольную компьютерную систему с одним процессором, систему рабочей станции с множеством процессоров или систему сервера, имеющую большое количество процессоров 202 или ядер 207 процессора. Раскрытые здесь варианты осуществления могут составлять часть одного или больше графических процессоров 208. В одном варианте осуществления система 200 обработки данных представляет собой систему в интегральной схеме (SOC) для использования в мобильных, портативных или встроенных устройствах.
Вариант осуществления системы 200 обработки данных может включать в себя, или может быть встроен в игровую платформу на основе сервера, игровую консоль, включая в себя игровую и мультимедийную консоль, переносную игровую консоль или игровую онлайн консоль. В одном варианте осуществления система 200 обработки данных представляет собой мобильный телефон, смартфон, планшетное вычислительное устройство или мобильное Интернет устройство. Система 200 обработки данных также может быть соединена с или может быть интегрирована в пределах переносного устройства, такого как переносное устройство типа интеллектуальных часов, устройство типа интеллектуальных очков, устройство расширенной реальности или устройство виртуальной реальности. В одном варианте осуществления система 200 обработки данных представляет собой телевизионный приемник или устройство телевизионной приставки, имеющее один или больше процессоров 202 и графический интерфейс, сгенерированный одним или больше графическими процессорами 208.
Один или больше процессоров 202, каждый включает в себя одно или больше ядер 207 процессора для обработки инструкций, которые при их исполнении, выполняют операции для системы, и программное обеспечение пользователя. В одном варианте осуществления каждое из одного или больше ядер 207 процессора выполнено с возможностью обработки конкретного набора 209 инструкций. Набор 209 инструкций может способствовать вычислениям со сложным набором команд (CISC), вычислениям с сокращенным набором команд (RISC) или вычислениям с использованием очень длинного слова инструкций (VLIW). Множество ядер 207 процессора может каждое обрабатывать разные наборы 209 инструкций, которые могут включать в себя инструкции, которые способствуют эмуляции других наборов инструкций. Ядро 207 процессора также может включать в себя другие устройства обработки, такие как цифровой сигнальный процессор (DSP).
В одном варианте осуществления процессор 202 включает в себя запоминающее устройство 204 кэш. В зависимости от архитектуры процессор 202 может иметь один внутренний кэш или множество уровней внутреннего кэш. В одном варианте осуществления запоминающее устройство кэш совместно используется среди различных компонентов процессора 202. В одном варианте осуществления процессор 202 также используется, как внешний кэш (например, кэш Уровня 3 (L3) или, по меньшей мере, кэш последнего уровня (LLC)) (не показан), который может быть распределен среди ядер 207 процессора, используя известные технологии когерентности кэш. Файл 206 регистра дополнительно включен в процессор 202, который может включать в себя различные типы регистров для сохранения различных типов данных (например, регистров для целых чисел, регистров для чисел с плавающей точкой, регистров статуса и регистра указателя инструкций). Некоторые регистры могут представлять собой регистры общего назначения, в то время как другие регистры могут быть разработаны специально, в соответствии с конструкцией процессора 202.
Процессор 202 соединен с шиной 210 процессора для передачи сигналов данных между процессором 202 и другими компонентами в системе 200. Система 200 использует примерную архитектуру системы "концентратор", включающую в себя концентратор 216 контроллера памяти и концентратор 230 контроллера ввода-вывода (I/O). Концентратор 216 контроллера памяти способствует обмену данными между запоминающим устройством и другими компонентами системы 200, в то время как концентратор 230 контроллера I/O (ICH) предоставляет соединения с устройствами I/O через локальную шину I/O.
Запоминающее устройство 220 может представлять собой устройство динамического оперативного запоминающего устройства (DRAM), устройство статического оперативного запоминающего устройства (SRAM), запоминающее устройство типа флэш или некоторое другое устройство памяти, имеющее соответствующие характеристики для использования в качестве памяти для обработки. Запоминающее устройство 220 может сохранять данные 222 и инструкции 221 для использования, когда процессор 202 выполняет обработку. Концентратор 216 контроллера памяти также соединяется с необязательным внешним графическим процессором 212, который может связываться с одним или больше графическими процессорами 108 в процессорах 202 для выполнения графических операций и мультимедийных операций.
ICH 230 обеспечивает возможность соединения периферийных устройств с запоминающим устройством 220 и процессором 202 через высокоскоростную шину I/O. Периферийные устройства I/O включают в себя аудиоконтроллер 246, интерфейс 228 встроенного программного обеспечения, беспроводный приемопередатчик 226 (например, Wi-Fi, Bluetooth), устройство 224 накопителя данных (например, привод жесткого диска, запоминающее устройство типа флэш и т.д.) и контроллер традиционного I/O для подключения традиционных устройств (например, персональной системы 2 (PS/2)) к системе. Один или больше контроллеров 242 универсальной последовательной шины (USB) соединяет входные устройства, такие как комбинации клавиатуры и мыши 244. Сетевой контроллер 234 также может соединяться с ICH 230. В одном варианте осуществления сетевой контроллер высокой производительности (не показан) соединен с шиной 210 процессора.
Технологии обработки графики и/или видеоданных, описанные здесь, могут быть воплощены в различной аппаратных архитектурах. Например, графические и/или видеофункции могут быть интегрированы в пределах набора микросхем. В качестве альтернативы, могут использоваться процессор дискретной обработки графики и/или видеопроцессор. В соответствии с еще одним, другим вариантом осуществления, функции графики и/или обработки видеоданных могут быть воплощены процессором общего назначения, включая в себя многоядерный процессор. В дополнительном варианте осуществления функции могут быть воплощены в электронном устройстве потребителя.
Дополнительные примечания и примеры:
Пример 1 может включать в себя способ обработки, по меньшей мере, одного графического многоугольника, содержащий: определяют количество плоскостей отсечения, по которым должен быть отсечен многоугольник, и передают, если существуют только одна плоскость отсечения, многоугольник в конвейер, специально предназначенный для отсечения одной плоскости.
Пример 2 может включать в себя способ по Примеру 1, дополнительно включающий в себя: загружают координаты вершин многоугольника и назначают барицентрические значения для этих вершин.
Пример 3 может включать в себя способ по Примеру 2, дополнительно включающий в себя: рассчитывают расстояния от одной плоскости отсечения до каждой из вершин.
Пример 4 может включать в себя способ по Примеру 3, дополнительно включающий в себя: рассчитывают отношения расстояния альфа и бета, где альфа = Dout/(Din - Dout), в котором Dout представляет собой расстояние от одной вершины до плоскости отсечения, и Din представляет собой расстояние от соседней вершины до плоскости отсечения, и бета = 1 - альфа.
Пример 5 может включать в себя способ по Примеру 4, дополнительно включающий в себя: нормализуют расстояния между соседними вершинами.
Пример 6 может включать в себя способы по Примерам 1 - 5, дополнительно включающий в себя: назначают новые барицентрические значения для точек, которые располагаются на пересечении определенной плоскости отсечения и многоугольника.
Пример 7 может включать в себя способы по Примерам 1 - 5, дополнительно включающие в себя: назначают новые значения для точек, которые расположены на пересечении определенной плоскости отсечения и многоугольника.
Пример 8 может включать в себя способы по Примерам 1 - 5, в котором многоугольник представляет собой треугольник.
Пример 9 может включать в себя способ по Примеру 1, дополнительно включающий в себя: передают, если существует больше, чем одна плоскость отсечения, многоугольник во второй конвейер, предназначенный для отсечения множеством плоскостей.
Пример 10 может включать в себя устройство для обработки, по меньшей мере, одного графического многоугольника, содержащего модуль, который определяет количество плоскостей отсечения, по которым должно быть выполнено отсечение многоугольника, и конвейер, предназначенный для отсечения одной плоскости.
Пример 11 может включать в себя устройство по Примеру 10, дополнительно включающее в себя модуль, для загрузки координат вершин многоугольника и назначения барицентрических значений для координат этих вершин.
Пример 12 может включать в себя устройство по Примеру 11, дополнительно включающее в себя модуль для расчета расстояния от одной плоскости отсечения до каждой из вершин.
Пример 13 может включать в себя устройство по Примерам 10 - 12, дополнительно включающее в себя модуль для расчета отношений расстояния альфа и бета, где альфа = Dout/(Din - Dout), где Dout представляет собой расстояние от одной вершины до плоскости отсечения, и Din представляет собой расстояние от соседней вершины до плоскости отсечения, и бета = 1 - альфа.
Пример 14 может включать в себя устройство по Примерам 10 - 12, дополнительно включающее себя модуль для нормализации расстояния между соседними вершинами.
Пример 15 может включать в себя устройство по Примеру 13, дополнительно включающее в себя модуль для назначения новых барицентрических значений для точек, которые располагаются на пересечении заданной плоскости отсечения и многоугольника.
Пример 16 может включать в себя устройство по Примеру 13, дополнительно включающее в себя модуль для назначения новых значений для точек, которые располагаются на пересечении заданной плоскости отсечения и многоугольника.
Пример 17 может включать в себя устройство по Примеру 11, в котором многоугольник представляет собой треугольник.
Пример 18 может включать в себя устройство по Примеру 11, дополнительно содержащее второй конвейер для обработки случаев, в которых имеется больше, чем одна плоскость отсечения.
Пример 19 может включать в себя устройство по Примеру 18, в котором модули доступны для обоих конвейеров.
Пример 20 может включать в себя систему для обработки, по меньшей мере, одного графического многоугольника, содержащую модуль для обработки графики; модуль, который определяет количество плоскостей отсечения, по которым должен быть отсечен многоугольник; первый конвейер, предназначенный для отсечения одной плоскости; и второй конвейер, предназначенный для отсечения множества плоскостей.
Пример 21 может включать в себя систему по Примеру 20, дополнительно включающую в себя модуль, взаимосвязанный с первым конвейером, для загрузки координат вершин многоугольника, и назначения барицентрических значений для этих вершин.
Пример 22 может включать в себя систему по Примеру 21, дополнительно включающую в себя модуль, взаимосвязанный с первым конвейером, для расчета расстояния от одной плоскости отсечения до каждой из вершин.
Пример 23 может включать в себя систему по Примеру 22, дополнительно включающую в себя модуль, взаимосвязанный с первым конвейером для расчета отношений расстояний альфа и бета, где альфа = Dout/(Din - Dout), где Dout представляет собой расстояние от одной вершины до плоскости отсечения, и Din представляет собой расстояние от соседней вершины до плоскости отсечения, и бета = 1 - альфа.
Пример 24 может включать в себя систему по Примерам 21 - 23, дополнительно включающую в себя модуль, взаимосвязанный с первым конвейером для назначения новых барицентрических значений для точек, которые располагаются на пересечении определенной плоскости отсечения и многоугольника.
Пример 25 может включать в себя систему по Примеру 24, дополнительно включающую в себя модуль, взаимосвязанный с первым конвейером для назначения новых значений для точек, которые располагаются на пересечении определенной плоскости отсечения и многоугольника.
Пример 26 может включать в себя устройство, для обработки, по меньшей мере, одного графического многоугольника, содержащее средство для определения количества плоскостей отсечения, по которым должно быть выполнено отсечение многоугольника, и конвейер, предназначенный для отсечения одной плоскости.
Пример 27 может включать в себя устройство по Примеру 26, дополнительно включающее средство для загрузки координат вершин многоугольника и назначения барицентрических значений для координат вершин.
Пример 28 может включать в себя устройство по Примеру 27, дополнительно включающее в себя средство для расчета расстояния от одной плоскости отсечения до каждой из вершин.
Пример 29 может включать в себя устройство по Примерам 26-28, дополнительно включающее в себя средство для расчета отношений расстояния альфа и бета, где альфа = Dout/(Din - Dout), где Dout представляет собой расстояние от одной вершины до плоскости отсечения, и Din представляет собой расстояние от соседней вершины до плоскости отсечения, и бета = 1 - альфа.
Пример 30 может включать в себя устройство по Примерам 26-28, дополнительно включающее в себя средство для назначения новых барицентрических значений для точек, которые располагаются на пересечении определенной плоскости отсечения и многоугольника.
Пример 31 может включать в себя устройство по Примерам 26-28, дополнительно включающее в себя средство для назначения новых значений для точек, которые располагаются на пересечении определенной плоскости отсечения и многоугольника.
Пример 32 может включать в себя устройство по Примеру 30, в котором значения отражают одно или больше из значений цвета, текстуры или интенсивности.
Пример 33 может включать в себя устройство по Примеру 26, в котором многоугольник представляет собой треугольник.
Пример 34 может включать в себя устройство по Примерам 26-28, дополнительно содержащее второй конвейер для обработки случаев, в которых присутствует больше, чем одна плоскость отсечения.
Пример 35 может включать в себя устройство для отсечения многоугольников при графической визуализации, содержащее: первый конвейер, предназначенный для использования в случае одной плоскости отсечения; и второй конвейер, предназначенный для использования в случае больше, чем одной плоскости отсечения, в котором многоугольники, которые должны быть отсечены одной плоскостью отсечения, подают в первый конвейер, и все другие многоугольники подают во второй конвейер.
Пример 36 может включать в себя устройство по Примеру 35, в котором два конвейера совместно используют арифметические логические модули.
Различные варианты осуществления или элементы вариантов осуществления могут быть воплощены, используя аппаратные элементы, программные элементы или их комбинацию. Примеры аппаратных элементов могут включать в себя процессоры, микропроцессоры, схемы, элементы цепей (например, транзисторы, резисторы, конденсаторы, катушки индуктивности, и т.д.), интегральные схемы, специализированные интегральные схемы (ASIC), программируемые логические устройства (PLD), цифровые сигнальные процессоры (DSP), программируемые пользователем вентильные матрицы (FPGA), логические вентили, регистры, полупроводниковое устройство, микросхему, кристаллы микросхемы, наборы микросхем и т.д. Примеры программных средств могут включать в себя программные компоненты, программы, приложения, компьютерные программы, программы приложения, системные программы, машинные программы, программное обеспечение операционной системы, промежуточное программное обеспечение, встроенное программное обеспечение, программные модули, подпрограммы, вспомогательные подпрограммы, функции, способы, процедуры, программные интерфейсы, интерфейсы программ приложения (API), наборы инструкций, вычислительный код, компьютерный код, сегменты кода, сегменты компьютерного кода, слова, значения, символы или любую их комбинацию. Определение, воплощен ли вариант осуществления, используя аппаратные средства и/или программные элементы, может изменяться в соответствии с любым из множества факторов, таких как требуемая скорость вычислений, уровни мощности, устойчивость к воздействию тепла, бюджет цикла обработки, скорости передачи входных данных, скорости передачи выходных данных, ресурсы памяти, скорости шины передачи данных и другие конструктивные ограничения или ограничения в отношении рабочих характеристик.
Варианты осуществления применимы для использования с любым типом кристаллов с полупроводниковыми интегральными схемами (“IC”). Примеры этих кристаллов IC включают в себя, но не ограничены этим: процессоры, контроллеры, компоненты набора микросхем, программируемые логические матрицы (PLA), микросхемы памяти, сетевые микросхемы и т.п. Кроме того, на некоторых из чертежей, проводящие линии для сигнала представлены линиями. В некоторых случаях они могут быть представлены по-другому для обозначения более существенных путей передачи сигнала, могут иметь метку с номером для обозначения номера составляющих путей передачи сигналов, и/или могут иметь стрелки на одном или больше концах для обозначения направления потока первичной информации. Однако, это не следует рассматривать, как ограничительный подход. Скорее такая дополнительная деталь может использоваться в связи с одним или больше примерными вариантами осуществления, которые способствуют более простому пониманию схемы. Любые представленные линии сигнала, по которым передают или по которым не передают дополнительную информацию, могут фактически содержать один или больше сигналов, которые могут быть переданы во множестве направлений и могут быть воплощены с использованием любого соответствующего типа схемы передачи сигнала, например, цифровые или аналоговые линии, воплощенные с дифференциальными парами, оптоволоконными линиями и/или линиями с несимметричным выходом.
Примеры размеров/моделей/значений/диапазонов могут быть заданы, хотя варианты осуществления не ограничены этим. Поскольку технологии производства (например, фотолитография), развиваются с течением времени, ожидается, что могут быть изготовлены устройства меньшего размера. Кроме того, хорошо известное соединение питания/заземления с IC микросхемами и другими компонентами могут быть показаны или могут не быть показаны на чертежах для простоты иллюстрации и описания, и чтобы они не затеняли определенные аспекты вариантов осуществления. Кроме того, компоновки могут быть показаны в форме блок-схем для исключения затенения вариантов осуществления, и также с ввиду того факта, что специфичные особенности в отношении воплощения компоновок таких блок-схем в высокой степени зависят от платформы, в которой должен быть воплощен вариант осуществления, то есть, в таких специфических особенностях должен хорошо учитываться кругозор специалистов в данной области техники. В случае, когда конкретные детали (например, схемы) представлены для описания примерных вариантов осуществления, для специалиста в данной области техники должно быть понятно, что варианты осуществления могут быть выполнены на практике без, или с использованием вариаций этих конкретных деталей. Описание, таким образом, следует рассматривать, как иллюстративное, а не ограничительное.
Если только специально не будет заявлено противоположное, следует понимать, что термины, такие как "обработка", "вычисления", "расчеты", "определение" и т.п., относятся к действию и/или обработке компьютера или компьютерной системы, или аналогичного электронного вычислительного устройства, которое манипулирует и/или преобразует данные, представленные как физические величины (например, электронные величины) в регистрах и/или запоминающих устройствах вычислительной системы, в другие данные, аналогично представленные, как физические величины, в пределах запоминающих устройств компьютерной системы, регистров или других таких накопителей информации, передачи или устройств дисплея. Варианты осуществления не ограничены в этом контексте.
Термин "соединенный" может использоваться здесь для обозначения любого типа взаимосвязи, прямой или опосредованной, между рассматриваемыми компонентами, и может применяться для электрических, механических, жидких, оптических, электромагнитных, электромеханических или других соединений. Кроме того, термины "первый", "второй" и т.д. могут использоваться здесь только для того, чтобы способствовать описанию, и при этом они не несут конкретное временное или хронологическое значение, если только не будет обозначено другое.
Для специалиста в данной области техники должно быть понятно из представленного выше описания, что широкие технологии вариантов осуществления могут быть воплощены в различных формах. Поэтому, в то время, как варианты осуществления были описаны в связи с их конкретными примерами, истинный объем вариантов осуществления не должен быть ограничен, поскольку другие модификации будут понятны для специалиста соответствующего уровня в данной области после изучения чертежей, описания и следующей формулы изобретения.