ТЕКСТУРНАЯ ДИСКРЕТИЗАЦИЯ
TEXTURE SAMPLING

Уровень техники
Текстура в общем относится к изображениям, содержащим повторяющиеся узоры, которые можно использовать для обертывания графических образов. Текстурные данные можно дискретизировать с помощью методов текстурной дискретизации на основе критерия Найквиста. Методы текстурной дискретизации могут включать в себя точечную дискретизацию, билинейную фильтрацию, трилинейную фильтрацию, анизотропную фильтрацию, подавление помех наложения и другие аналогичные методы. Текстурная дискретизация используется во все возрастающей степени, например, вершинным построителем теней, геометрическим построителем теней и пиксельным построителем теней.
Кроме того, сложность и использование таких методов текстурной дискретизации увеличивается, и при этом сложность аппаратного обеспечения, используемого для выполнения текстурной дискретизации, постоянно возрастает. Имеется по меньшей мере несколько приложений, которые могут требовать использования методов текстурной дискретизации, которым может быть не нужен прямой доступ к аппаратному устройству или которые не имеют прямого доступа к аппаратному устройству. Кроме того, существующие аппаратные устройства могут не полностью поддерживать сложные операции текстурной дискретизации, либо существующие аппаратные устройства могут не выполнять сложные операции текстурной дискретизации эффективно.
Краткое описание чертежей
Описанное здесь изобретение иллюстрируется посредством примера, а не ограничения в приложенных чертежах. Для простоты и ясности иллюстрации элементы, показанные на чертежах, не обязательно изображены в масштабе. Например, размеры некоторых элементов могут быть для ясности преувеличены по отношению к прочим элементам. Далее, когда это представляется пригодным, ссылочные позиции повторяются на чертежах для указания соответствующих или аналогичных элементов.
Фиг.1 иллюстрирует метод графической обработки, который использует текстурный дискретизатор, реализованный с помощью языка построителя теней в соответствии с одним вариантом осуществления.
Фиг.2 иллюстрирует состояния трехмерной магистрали метода графической обработки, использующего текстурные дискретизаторы, реализованные с помощью языка построителя теней в соответствии с одним вариантом осуществления.
Фиг.3 представляет собой блок-схему алгоритма, которая иллюстрирует текстурный дискретизатор, реализованный с помощью языка построителя теней в соответствии с одним вариантом осуществления.
Фиг.4 иллюстрирует диаграмму переходов, показывающую процесс текстурной дискретизации, использующий язык построителя теней в соответствии с одним вариантом осуществления.
Фиг.5 иллюстрирует компьютерную систему 500, в которой может быть воплощена текстурная дискретизация с помощью языка построителя теней в соответствии с одним вариантом осуществления.
Подробное описание изобретения
Нижеследующее описание описывает методы выполнения текстурной дискретизации с помощью текстурного дискретизатора, воплощенного с помощью языка построителя теней. В нижеследующем описании изложены многочисленные конкретные подробности, такие как логические воплощения, разделение ресурсов, либо совместное использование, либо дублирование воплощений, типов и взаимосвязей системных компонентов, и логическое разделение или интеграция выборов, чтобы обеспечить более тщательное понимание настоящего изобретения. Специалисты, однако, оценят, что изобретение можно осуществлять и без таких конкретных подробностей. В иных случаях управляющие структуры, схемы на вентильном уровне и полные последовательности программных команд не показаны подробно, чтобы не затемнять изобретение. Специалисты будут способны воплотить соответствующие функциональные возможности с помощью включенных здесь описаний без ненужного экспериментирования.
Ссылки в описании на «один вариант осуществления», «вариант осуществления», «примерный вариант осуществления» указывают, что описанный вариант осуществления может включать в себя конкретный признак, структуру или характеристику, но каждый вариант осуществления может не обязательно включать в себя эти конкретные признак, структуру или характеристику. Кроме того, такие фразы не обязательно относятся к одному и тому же варианту осуществления. Далее, когда конкретный признак, структура или характеристика описываются в связи с вариантом осуществления, представляется, что они относятся к знаниям специалиста действия с такими признаком, структурой или характеристикой в связи с другими вариантами осуществления, описаны ли они явным образом или нет.
Варианты осуществления изобретения могут воплощаться аппаратно, посредством встроенных программ, программно или любой их комбинацией. Варианты осуществления изобретения могут также воплощаться как команды, хранящиеся на машиночитаемом носителе, которые можно считывать и исполнять одним или несколькими процессорами. Машиночитаемый носитель данных может включать в себя любой механизм для хранения или передачи информации в виде, пригодном для считывания машиной (к примеру, вычислительным устройством).
Например, машиночитаемый носитель данных может включать в себя постоянно запоминающее устройство (ПЗУ) (ROM), оперативное запоминающее устройство (ОЗУ) (RAM), носитель данных на магнитном диске, оптический носитель данных, устройства флэш-памяти, электрические и оптические формы сигналов. Далее, встроенные программы, программы, подпрограммы и команды могут описываться здесь как выполняющие определенные действия. Однако следует понимать, что такие описания даны просто для удобства и что такие действия фактически являются результатом работы вычислительных устройств, процессоров, контроллеров и прочих устройств, исполняющих эти встроенные программы, программы, подпрограммы и команды.
Вариант осуществления соотношения «многие ко многим», разделяемого между множеством построителей теней и текстурных дискретизаторов, иллюстрируется на фиг.1. В одном варианте осуществления диаграмма этого соотношения может содержать М построителей с 110-A по 110-M теней, и K текстурных дискретизаторов с 120-A по 120-K могут поддерживать различные операции дискретизации (например, N операций дискретизации) с различными состояниями дискретизаторов (например, p состояний дискретизаторов). В одном варианте осуществления текстурный дискретизатор 120 может быть выполнен с состоянием дискретизатора и может принимать подлежащую выполнению операцию дискретизации на основании этого состояния дискретизации. В одном варианте осуществления построитель 110-A теней может извлекать текстурные выборки из текстурных дискретизаторов с 120-A по 120-K. В другом варианте осуществления построитель 110-A теней может извлекать текстурные выборки, например, из текстурных дискретизаторов 120-B, 120-D, 120-G и 120-J. В одном варианте осуществления построители с 110-A по 110-M теней могут представлять, например, вершинные, геометрические, оболочечные, доменные, пиксельные или вычислительные построители теней. В одном варианте осуществления построитель 110-A теней может включать в себя множество состояний дискретизатора (SS), которые можно использовать для дискретизации, а построитель 110-A теней, например, может выполнять множество операций дискретизации с помощью конкретного состояния дискретизатора. В одном варианте осуществления состояние дискретизатора может иметь отдельную логику для операций дискретизации. Во время компиляции это состояние дискретизатора можно добавлять к состоянию дискретизатора (SS), чтобы получить оптимальный код для конкретного состояния дискретизатора и операции дискретизации. В одном варианте осуществления текстурные дискретизаторы с 120-A по 120-K могут представлять операции текстурных дискретизаторов, которые могут воплощать поднабор поддерживающих текстурный дискретизатор операций дискретизации и состояний дискретизатора.
В одном варианте каждый построитель 110 теней может извлекать текстурные выборки, генерируемые одним или несколькими текстурными дискретизаторами 120. В одном варианте осуществления текстурные дискретизаторы с 120-A по 120-K могут быть воплощены автономно с помощью языка построителя теней, такого как ассемблер, Cg, GLSL, HLSL и прочие языки построителя теней. В одном варианте осуществления текстурные дискретизаторы 120 могут компилироваться во время создания построителей 110 теней, либо во время создания объекта ортогонального состояния дискретизатора, либо по запросу в более поздний момент времени после фазы создания. В одном варианте осуществления бинарный дискретизатор (SS-BIN) может быть создан и может использоваться построителями 110 теней, когда построителям 110 теней требуются текстурные выборки.
В одном варианте осуществления построители 110 теней и текстурные дискретизаторы 120 могут использоваться, например, в программируемой магистрали трехмерной графики. В одном варианте осуществления трехмерная графическая программируемая магистраль может содержать Direct3D10 (D3D10), Direct3D11 (D3D11) или иные ступени такой магистрали прикладного программного интерфейса (API) Direct, доступного от Microsoft Corporation, или ступени магистрали OpenGL межплатформенного API, доступного от Silicon Graphics Inc. Однако текстурные дискретизаторы 120 могут использоваться также любым построителем теней в иных средах.
Вариант осуществления трехмерной графической программируемой магистрали, которая может использовать текстурный дискретизатор, воплощенный с помощью высокоуровневого языка построителя теней, иллюстрируется на фиг.2. В одном варианте осуществления трехмерная графическая программируемая магистраль 200 может содержать такие ступени, как блок 210 обработки входных данных, множество построителей теней, таких как вершинный построитель 220 теней, каркасный построитель 230 теней, доменный построитель 250 теней, геометрический построитель 260 теней и пиксельный построитель 270 теней, построитель 235 мозаики, блок 265 растеризации, миксер 275, текстурные дискретизаторы с 280-A до 280-K и память 290.
В одном варианте осуществления ступни программируемой магистрали могут генерировать графические данные для приложений реального времени, таких, например, как игры. В одном варианте осуществления ступень 200 магистрали может представлять ступень D3D11 прикладного программного интерфейса (API) DirectX, доступного от Microsoft Corporation.
В одном варианте осуществления блок 210 обработки входных данных может генерировать блоки данных с помощью индексных данных и вершинных данных, хранящихся, соответственно, в буферах 290-A и 290-B памяти 290. В одном варианте осуществления вершинные данные могут представлять вершины треугольников, точки, линии и другие аналогичные данные. В одном варианте осуществления блок 210 обработки входных данных может подавать блоки данных в вершинный построитель 220 теней. В одном варианте осуществления блок 210 обработки входных данных может составлять геометрические данные, используя вершинные и индексные данные, хранящиеся в буферах 290-A и 290-B, перед подачей этих геометрических данных в вершинный построитель 220 теней и геометрический построитель 260 теней.
В одном варианте осуществления вершинный построитель 220 теней может обрабатывать вершины, которые принимаются из блока 210 обработки входных данных, с помощью текстурных выборок, генерируемых текстурными дискретизаторами с 280-A по 280-K. В одном варианте осуществления вершинный построитель 220 теней может использовать текстурные выборки, генерируемые одним или некоторыми или всеми текстурными дискретизаторами с 280-A по 280-K. В одном варианте осуществления вершинный построитель 220 теней может генерировать единственную выходную вершину, которую можно обрабатывать с помощью текстурных выборок после приема единственной входной вершины. В одном варианте осуществления вершинный построитель 220 теней может выполнять преобразования для получения специальных эффектов, таких как освещение и вуалирование, для входной вершины. В одном варианте осуществления вершинный построитель 220 теней может выполнять математические операции для изменения цвета, текстуры или положения входной вершины. В одном варианте осуществления вершинный построитель 220 теней может быть воплощен с помощью языков построителя теней, таких как язык ассемблера, язык С для графики (Cg), язык построителя теней OpenGL (GLSL) или высокоуровневый язык построителя теней (HLSL), либо любых иных языков построителя теней.
В одном варианте осуществления каркасный построитель 230 теней может принимать точки управления пятнами и может подготавливать эти точки управления пятнами для построителя 235 мозаики фиксированной функции. В одном варианте осуществления каркасный построитель 230 теней может принимать текстурные выборки из одного или нескольких текстурных дискретизаторов с 280-A по 280-K. В одном варианте осуществления каркасный построитель 230 теней может принимать текстурные выборки из текстурных дискретизаторов 280-A и 280-B. В одном варианте осуществления каркасный построитель 230 теней может быть воплощен с помощью языков построителя теней. В одном варианте осуществления построитель 230 мозаики может подразделять пятно на основе управляемых входов из каркасного построителя 230 теней и может пропускать результаты построения мозаики в доменный построитель 250 теней. В одном варианте осуществления доменный построитель 250 теней может манипулировать генерированными вершинами для согласования вершин с формой или выполнять отображение смещения с помощью входов из блока 235 построителя мозаики и текстурных выборок из одного или нескольких текстурных дискретизаторов с 280-A по 280-K. В одном варианте осуществления доменный построитель 250 теней может использовать текстурные выборки, поданные текстурным дискретизатором 280-B. В одном варианте осуществления доменный построитель 250 теней может подавать результаты в геометрический построитель 260 теней или блок 265 растеризации. В одном варианте осуществления доменный построитель 250 теней может быть воплощен с помощью высокоуровневых языков построителя теней.
В одном варианте осуществления геометрический построитель 260 теней может генерировать затененные примитивы в ответ на прием полных примитивов из вершинного построителя 220 теней или доменного построителя 250 теней и текстурных выборок, генерируемых одним или несколькими текстурными дискретизаторами с 280-A по 280-K. В одном варианте осуществления геометрический построитель 260 теней может принимать текстурные выборки, генерируемые текстурными дискретизаторами 280-A и 280-K. В одном варианте осуществления полные примитивы могут содержать множество вершин. В одном варианте осуществления геометрический построитель 260 теней может создавать ноль или более затененных примитивов в ответ на прием множества вершин и текстурных выборок в качестве входов.
В одном варианте осуществления множество вершин может содержать три вершины треугольника или две вершины линии, или единственная вершина точки вместе с информацией соседства в качестве входов и могут генерировать ноль или более затененных вершин в качестве выходов. В одном варианте осуществления геометрический построитель 260 теней может выполнять такие операции, как генерирование точечных полосок, построение геометрической мозаики и выдавливание теневого объема для генерирования затененных примитивов. В одном варианте осуществления геометрический построитель 260 теней может компилировать один или несколько текстурных дискретизаторов 280, а затем вызывать текстурные дискретизаторы с 280-A по 280-K для получения текстурных выборок из значений текстурных данных, хранящихся, например, в буфере 290-D. В одном варианте осуществления геометрический построитель 260 теней может программироваться с помощью языков ассемблера, Cg, HLSL и GLSL.
В одном варианте осуществления блок 265 растеризации может принимать вершины (векторную графическую информацию) из вершинного построителя 220 теней и геометрического построителя 260 теней и генерировать растровое изображение, которое может включать в себя пикселы или точки, которые можно отображать на дисплейном устройстве. В одном варианте осуществления блок 265 растеризации может выполнять такие методы растеризации, как трансформации, отсечение, сканирующее преобразование, отбраковка, текстурная фильтрация и другие методы. В одном варианте осуществления блок 265 растеризации может подавать пикселы в пиксельный построитель 270 теней для обработки растрового изображения.
В одном варианте осуществления пиксельный построитель 270 теней может выполнять обширные методы оттенения на растровом изображении для генерирования попиксельных выходов. В одном варианте осуществления пиксельный построитель 270 теней может выполнять такие методы, как попиксельное освещение и связанные с ним эффекты, такие как отображение шероховатости, цветовое тонирование, тени, отражающие высвечивания и прозрачность для получения живых и более реалистичных изображений. В одном варианте осуществления пиксельный построитель 270 теней может быть запрограммирован с помощью языков ассемблера, Cg, HLSL и GLSL, либо других подобных языков. В одном варианте осуществления пиксельный построитель 270 теней может принимать пиксельные данные из блока 265 растеризации и текстурные выборки из одного или нескольких текстурных дискретизаторов с 280-A по 280-K перед генерированием эффектов затенения. В одном варианте осуществления пиксельный построитель 270 теней может принимать текстурные выборки из текстурных дискретизаторов с 280-A по 280-K. В одном варианте осуществления пиксельный построитель 270 теней может принимать значения текстурных данных непосредственно также из буфера 290-F. В одном варианте осуществления выход пиксельного построителя 270 теней может подаваться в миксер 275 для дальнейшей обработки.
В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут дискретизировать значения текстурных данных, хранящиеся в текстурных буферах 290-С, 290-D и 290-F и других буферах. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут быть воплощены с помощью языка построителя теней, использованного для воплощения построителей 220, 230, 250, 260 и 270 теней. Такой подход может обеспечить воплощение сложной функции дискретизации текстуры как части программного кода, что может согласовываться с состоянием дискретизатора. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут быть реализованы с помощью высокоуровневых языков построителя теней во время автономной фазы. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут компилироваться с помощью компилятора построителей теней во время подготовительной фазы для генерирования двоичного файла дискретизатора, реализованного с помощью языка построителя теней. В одном варианте осуществления один или несколько двоичных файлов текстурных дискретизаторов могут быть вызваны построителями 220, 230, 250, 260 и 270 теней, когда задействуются построители 220-270 теней. В одном варианте осуществления один или несколько текстурных дискретизаторов с 280-A по 280-K могут компилироваться во время создания построителей 220, 230, 250, 260 и 270 теней, во время создания ортогонального объекта состояния дискретизатора или по запросу в более поздний момент времени после фазы создания.
В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут выполнять операции, такие как разделение уровней детализации (LOD), нахождение выборок, разделение тексельных адресов, вызов выборок и поглощение выборок. В одном варианте осуществления операции текстурных дискретизаторов с 280-A по 280-K могут быть воплощены с помощью языка построителя теней. В одном варианте осуществления разделение уровней детализации может определять MIP-отображения, которые идентифицируют область, из которой должны выбираться выборки. В одном варианте осуществления разделение тексельных адресов может определять местоположение, из которого должны вызываться выборки. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут поддерживать методы дискретизации, такие как точечная дискретизация, билинейная дискретизация, трилинейная дискретизация и анизотропная фильтрация. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K, воплощенные с помощью языка построителя теней для согласования с состоянием дискретизатора в построителях 220-270 теней, могут улучшать скорость работы текстурной дискретизации по сравнению с текстурным дискретизатором, воплощенным с помощью многофункционального программного обеспечения на основе метода текстурной дискретизации.
В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут использоваться для подачи текстурных выборок в вершинный построитель 220 теней, каркасный построитель 230 теней, доменный построитель 250 теней, геометрический построитель 260 теней и пиксельный построитель 270 теней. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K, воплощенные с помощью языка построителя теней, могут компилироваться во время создания вершинного построителя 220 теней или во время создания объекта состояния дискретизатора. В одном варианте осуществления текстурные дискретизаторы 280-A, 280-B и 280-K могут вызываться вершинным построителем 220 теней, когда задействуется вершинный построитель 220 теней. В одном варианте осуществления текстурные дискретизаторы 280-A и 280-B могут вызываться каркасным построителем 230 теней, когда задействуется каркасный построитель 230 теней. В одном варианте осуществления текстурный дискретизатор 280-B может вызываться доменным построителем 250 теней, когда задействуется доменный построитель 250 теней. В одном варианте осуществления текстурные дискретизаторы 280-B и 280-K могут вызываться геометрическим построителем 260 теней, когда задействуется геометрический построитель 260 теней, и текстурные дискретизаторы 280-B и 280-K могут вызываться пиксельным построителем 270 теней, когда задействуется пиксельный построитель 270 теней.
Такой подход может обеспечить воплощение сложной функции дискретизации текстуры как части программного кода, что может согласовываться с состоянием построителей 220, 230, 250, 260 и 270 теней, или согласовываться с ортогональным состоянием дискретизатора. В одном варианте осуществления текстурные дискретизаторы 280, воплощенные с помощью языка построителя теней для согласования с состоянием дискретизатора построителей 220, 230, 250, 260 и (или) 270 теней, могут улучшать скорость операции в коэффициент N раз по сравнению с текстурным дискретизатором, воплощенным с помощью многофункционального программного обеспечения на основе метода текстурной дискретизации. В одном варианте осуществления текстурные дискретизаторы 280, воплощенные с помощью языка построителя теней, могут улучшать производительность в N=KX раз по сравнению с производительностью многофункционального программного обеспечения на основе метода текстурной дискретизации, причем Х и K имеют положительное целое значение.
Блок-схема 300 алгоритма, показывающая текстурные дискретизаторы 280, реализованные с помощью высокоуровневого языка построителя теней, иллюстрируется на фиг.3. В блоке 310 текстурные дискретизаторы с 280-A по 280-K могут генерироваться с помощью языка построителя теней. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут разрабатываться с помощью языков построителя теней, таких как ассемблер, Cg, HLSL и GLSL. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут генерироваться автономно, например, при разработке модуля драйвера.
В блоке 320 построители теней-дискретизаторы, использованные для генерирования текстурных дискретизаторов с 280-A по 280-K, могут компилироваться во время создания объекта состояния дискретизатора. В другом варианте осуществления построители теней-дискретизаторы могут создаваться по запросу. В одном варианте осуществления конкретная операция дискретизации может создаваться по запросу, если эта операция дискретизации может потребоваться, например, для выведения команды.
В блоке 330 текстурные дискретизаторы с 280-A по 280-K могут компилироваться в целевой машинный код с помощью высокоуровневого компилятора построителя теней. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут компилироваться в целевой машинный код с помощью целевого машинного компилятора. В одном варианте осуществления текстурные дискретизаторы 280-A, 280-B и 280-K могут компилироваться в целевой машинный код с помощью высокоуровневого компилятора построителя теней. Аналогично, один или несколько текстурных дискретизаторов с 280-A по 280-K могут компилироваться в целевой машинный код с помощью высокоуровневых компиляторов построителя теней для построителей 230-270 теней.
В блоке 340 могут вызываться построители 220-270 теней. В одном варианте осуществления могут вызываться такие построители теней, как вершинный построитель 220 теней, каркасный построитель 230 теней, доменный построитель 250 теней, геометрический построитель 260 теней и пиксельный построитель 270 теней.
В блоке 360 один или несколько текстурных дискретизаторов с 280-A по 280-K могут вызываться построителем теней. В одном варианте осуществления текстурные дискретизаторы 280-A, 280-B и 280-K в ответ на вызов от вершинного построителя 220 теней могут выполнять операцию дискретизации и могут генерировать текстурные выборки. В одном варианте осуществления каркасный построитель 230 теней может вызывать текстурные дискретизаторы 280-A и 280-B, доменный построитель 250 теней может вызывать текстурный дискретизатор 280-B, геометрический построитель 260 теней может вызывать текстурные дискретизаторы 280-A и 280-K, а пиксельный построитель 270 теней может вызывать текстурные дискретизаторы 280-B и 280-K.
В блоке 380 текстурные дискретизаторы с 280-A по 280-K могут генерировать текстурные выборки с помощью текстурных данных, хранящихся в текстурных буферах в памяти 190. В одном варианте осуществления текстурный дискретизатор 280-A может выполнять операцию дискретизации для генерирования текстурных выборок с помощью текстурных данных, хранящихся в одном или нескольких текстурных буферах, например, с 290-С по 290-F. В одном варианте осуществления текстурный дискретизатор 280-B может выполнять операцию дискретизации для генерирования текстурных выборок с помощью текстурных данных, хранящихся в текстурном буфере 290-D, и может подавать эти текстурные выборки в пиксельный построитель 270 теней.
В блоке 390 текстурные выборки, генерируемые текстурными дискретизаторами с 280-A по 280-K, могут использоваться построителями 220-270 теней для создания теневого эффекта на графических элементах. В одном варианте осуществления вершинный построитель 220 теней принимает единственное вершинное значение и создает теневой эффект на вершине. В одном варианте осуществления геометрический построитель 260 теней может принимать полные примитивы и может создавать теневой эффект на полных примитивах. В одном варианте осуществления пиксельный построитель 270 теней может генерировать теневой эффект на пикселах или точках (или растровом изображении).
Вариант осуществления блок-схемы 400 алгоритма, показывающего генерирование и использование текстурных выборок, воплощенных с помощью высокоуровневого языка построителя теней, иллюстрируется на фиг.4. В одном варианте осуществления блок-схема 400 алгоритма показывает три стадии: стадию 401, стадию 411 и стадию 481. В одном варианте осуществления стадия 401 может представлять автономную фазу, стадия 411 может представлять подготовительную фазу, а стадия 481 может представлять фазу отображения.
В одном варианте осуществления стадия 401 может содержать блок 410 генерирования текстурных дискретизаторов. В одном варианте осуществления блок 410 генерирования текстурных дискретизаторов может относиться к генерированию таких текстурных дискретизаторов, как текстурные дискретизаторы с 280-A по 280-K, которые можно генерировать автономно и с помощью высокоуровневого языка построителя теней, такого как Cg, HLSL или GLSL, как описано в блоке 310.
В одном варианте осуществления стадия 411 может содержать блок 415 состояния дискретизаторов, блок 420 создания дискретизаторов, блок 445 компилятора построителей теней, блок 450 компилирования дискретизаторов и блок 470 двоичного файла дискретизаторов-построителей теней (SS-BIN). В одном варианте осуществления блок 415 состояния дискретизаторов может представлять значения входных данных. В одном варианте осуществления значения входных данных блока 415 могут определять операцию дискретизации, выполняемую текстурным дискретизатором блока 410. Блок 420 показывает блок создания текстурного дискретизатора, который создает такой текстурный дискретизатор, как с 280-А по 280-K в ответ на прием кода текстурного дискретизатора из блока 410 и значений входных данных из блока 415.
Блок 445 показывает блок компилятора построителей теней, который может извлекать язык построителя теней текстурного дискретизатора на абстрактном уровне и компилировать код текстурного дискретизатора в другой уровень абстракции. В одном варианте осуществления блок 445 компилятора построителей теней может извлекать код текстурного дискретизатора из блока 420 создания текстурных дискретизаторов и может задавать компиляцию кода текстурных дискретизаторов, как показано в блоке 450 компилирования дискретизаторов-построителей теней.
В одном варианте осуществления в блоке 420 код текстурного дискретизатора может создаваться с помощью высокоуровневого языка построителя теней, и блок 450 компилирования дискретизаторов-построителей теней может компилировать код текстурного дискретизатора и генерировать промежуточный код, такой как код языка ассемблера. В одном варианте осуществления блок 450 компилирования дискретизаторов-построителей теней может далее содержать машинно-ориентированный компилятор построителей теней, такой как графический компилятор построителей теней или компилятор построителей теней центрального процессора (CPU), который может компилировать промежуточный код на языке ассемблера в машинно-ориентированный код. В одном варианте осуществления блок графической обработки или центральный процессор могут поддерживать исполнение этого машинно-ориентированного кода.
Блок 470 показывает двоичный файл дискретизаторов-построителей теней (SS-BIN), который можно создать в результате компилирования, выполняемого блоком 450. В одном варианте осуществления двоичный файл дискретизаторов-построителей теней (SS-BIN) может использоваться построителями теней в фазе отображения.
В дном варианте осуществления стадия 481 может представлять фазу отображения, в которой графические элементы, такие как вершины и полные примитивы, отображаются на дисплейных устройствах после того, как построители теней обеспечивают эффект затенения для графических элементов. В одном варианте осуществления стадия 481 может содержать блок 485 задействования построителей теней, блок 490 исполнения построителей теней и блок 495 вызова SS-BIN. В одном варианте осуществления блок 485 задействования построителей теней может задействовать построители теней, такие как вершинный построитель 220 теней, каркасный построитель 230 теней, доменный построитель 250 теней, геометрический построитель 260 теней и пиксельный построитель 270 теней, как показано а блоке 340.
В одном варианте осуществления блок 490 исполнения построителей теней может заставлять исполняться двоичные файлы построителей 220-270 теней. В одном варианте осуществления блок графической обработки может поддерживать исполнение двоичных файлов построителей 220-270 теней. В одном варианте осуществления блок 495 вызова SS-BIN может вызывать двоичные файлы одного или нескольких текстурных дискретизаторов с 280-A по 280-K. В одном варианте осуществления, если блок 490 может исполнять вершинный построитель 220 теней, блок 495 может вызывать SS-BIN текстурных дискретизаторов 280-A, 280-B и 280-K. В одном варианте осуществления, если блок 490 может исполнять каркасный построитель 230 теней, блок 495 может вызывать SS-BIN текстурных дискретизаторов 280-A и 280-B. В одном варианте осуществления, если блок 490 может исполнять доменный построитель 250 теней, блок 495 может вызывать SS-BIN текстурного дискретизатора 280-B. В одном варианте осуществления, если блок 490 может исполнять геометрический построитель 260 теней, блок 495 может вызывать SS-BIN текстурных дискретизаторов 280-A и 280-K. В одном варианте осуществления, если блок 490 может исполнять пиксельный построитель 270 теней, блок 495 может вызывать SS-BIN текстурных дискретизаторов 280-B и 280-K.
В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K в ответ на прием вызова от построителей 220-270 теней могут выполнять операцию текстурной дискретизации на текстурных данных и могут генерировать текстурные выборки. В одном варианте осуществления эти текстурные выборки могут использоваться построителями теней для создания эффекта затенения на графических элементах.
На фиг.5 компьютерная система 500 может включать в себя универсальный процессор 502, включающий в себя процессор с одним потоком команд и множеством потоков данных (SIMD) и графический процессор (GPU) 505. Процессор 502 в одном варианте осуществления может выполнять операции расширения в дополнение к выполнению разнообразных других задач или хранить последовательность команд для обеспечения операций расширения в машиночитаемом носителе 525 данных. Однако эту последовательность команд можно также хранить в памяти 520 или на другом подходящем носителе данных. В одном варианте осуществления графический прикладной программный интерфейс (GPI) 510 может поддерживаться процессором 502 или GPU 505.
Хотя на фиг.5 показан отдельный графический процессор (GPU) 505, в некоторых вариантах осуществления, в качестве другого примера, для выполнения операций расширения может использоваться процессор 502. Процессор 502, который осуществляет работу компьютерной системы 500, может представлять собой одно или несколько процессорных ядер, связанных с логикой 530. Логика 530 может быть связана с одним или несколькими устройствами 560 ввода-вывода, которые могут обеспечивать интерфейс компьютерной системе 500. Логика 530, например, может быть в одном варианте осуществления логикой набора микросхем. Логика 530 связана с памятью, которая может быть любым видом памяти, в том числе оптической, магнитной или полупроводниковой памятью. Графический процессор 505 связан через кадровый буфер с дисплеем 540.
В одном варианте осуществления графический прикладной программный интерфейс (GPI) 510 может предусматриваться в процессоре 502. Однако в других вариантах осуществления графический прикладной программный интерфейс (GPI) 510 может предусматриваться (показан пунктирной линией) в GPU 505. В одном варианте осуществления GPI 510 может поддерживать трехмерную магистраль и может реализовывать текстурные выборки с помощью высокоуровневого языка построителя теней. В одном варианте осуществления GPI 510 может реализовывать текстурные дискретизаторы с 280-A по 280-K автономно и с помощью высокоуровневых языков построителя теней, и реализованные таким образом текстурные дискретизаторы с 280-A по 280-K могут компилироваться на основе целевой машины. В одном варианте осуществления текстурные дискретизаторы с 280-A по 280-K могут вызываться одним или несколькими построителями 220-270 теней для получения текстурных выборок. В одном варианте осуществления построители 220-270 теней могут использовать текстурные выборки,
Описанные здесь методы графической обработки могут быть воплощены в различных аппаратных архитектурах. Например, графические функции могут быть встроены в набор микросхем. Альтернативно, можно использовать отдельный графический процессор. В качестве еще одного варианта осуществления графические функции могут быть воплощены универсальным процессором, включая многоядерный процессор, или как набор программных команд, хранящихся на машиночитаемом носителе.