Системы и способы для обеспечения управляемой дискретизации текстуры

Иллюстрации

Показать все

Изобретение относится к системам и способам обеспечения дискретизации текстуры применительно к компьютерной графике. Технический результат заключается в обеспечении собственно управляемой дискретизации структуры. Согласно различным вариантам осуществления, предусмотрены усовершенствованные механизмы управления дискретизацией текстуры, которые позволяют аппаратному ускорителю трехмерной графики значительно повысить уровень реализма при визуализации, в том числе усовершенствованные механизмы для (1) размывания движущихся объектов; (2) генерации анизотропных отражений от поверхности; (3) генерации самозатенения поверхности; (4) объемной дискретизации с отсечением лучей; (5) объемной визуализации с самозатенением и (6) объемного отсечения лучей с самозатенением. В отличие от существующих способов дискретизации текстуры, параметры дискретизации текстуры можно заменять и/или модифицировать. 6 н. и 65 з.п. ф-лы, 10 ил.

Реферат

Уведомление об авторском праве и разрешение

Часть описания изобретения этого патентного документа может содержать материал, подлежащий защите авторских прав. Владелец авторских прав не имеет возражений против факсимильного воспроизведения кем-либо патентного документа или описания изобретения к патенту в том виде, в каком он выглядит в патентных фондах или реестрах Ведомства по патентам и товарным знакам, но в других отношениях, охраняет все авторские права. К этому документу должно прилагаться следующее уведомление: копирайт © 2001, Корпорация Майкрософт.

Область применения изобретения

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

Предшествующий уровень техники

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

На фиг.1 показан общий вид процесса наложения текстуры. Имея в своем распоряжении текстурную карту 200, содержащую тексели 202, наложение текстуры накладывает сигнал текстурной карты 200 на треугольники 210 сетки, в соответствии с некоторой геометрической конфигурацией треугольника, и/или применяет некоторое дополнительное преобразование, например затенение, подсвечивание и т.д., которое отображает тексели 202 в пиксели 222.

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

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

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

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

Чтобы проиллюстрировать проблему(ы), которая(ые) может/могут возникать, рассмотрим случай, когда количество текселей превышает количество пикселей. Пусть имеется поверхность квадратной доски объявлений в трехмерной (3-D) сцене, содержащая два равнобедренных треугольника, причем размер квадрата составляет 100х100 пикселей. В случае наложения текстурной карты, содержащей 200 красных и синих горизонтальных полосок, поверх квадратной области 100х100 пикселей, все 200 полосок текстуры, одновременно наложенных на доску объявлений, нельзя будет различить, поскольку текстура имеет больше точек выборки, чем область пикселей, на которую она накладывается. Некоторые промежуточные данные текстуры не будут использоваться в отображении и будут, по существу, проигнорированы.

По мере перемещения 3-D точки зрения по доске объявлений, например, при навигации в игре возникают феномены, именуемые выпадением пикселей, в результате чего полоски текстуры входят и выходят из «выравнивания» с пикселями доски объявлений. Это происходит, когда частота дискретизации текстуры недостаточна для описания деталей сцены. Приведен пример одного типа артефактов, которые могут иметь место, тогда как в результате недостаточной дискретизации текстуры могут возникать и другие типы артефактов.

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

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

Самым распространенным способом наложения текстур на поверхность является точечная дискретизация, в которой используется метод выборки «ближайшего соседа». Когда визуализатор выбирает фрагмент текстуры, он выхватывает из текстурной карты выборочную точку текстуры с координатами (u, v), которые отображаются ближе всего к координатам пикселя (центру пикселя), и накладывает ее на пиксель. Этот подход проиллюстрирован на фиг.2А, где соответствующая позиция отображения пиксельного пространства в тексельное пространство расположена в позиции Р1. В данном случае, поскольку ближайшим текселем является Т1, выбирают Т1. Хотя этот подход требует наименьшей величины пропускной способности памяти, в смысле количества текселей, которые необходимо считывать из памяти текстур, т.е. по одному на пиксель, результат часто приводит к артефактам, что обсуждалось выше, по причине недостаточного количества точек выборки, т.е. экранных пикселей, для описания текстуры. Но даже аппаратура трехмерной графики первого поколения для персональных компьютеров (ПК) имела функциональные возможности, позволяющие до некоторой степени устранять или, по крайней мере, скрывать эти проблемы дискретизации, а именно, с помощью билинейной фильтрации.

Метод билинейной фильтрации позволяет не просто выхватывать "ближайшего соседа" в текстуре, но считывать четыре точки выборки, ближайшие к центру пикселя, и использует взвешенное среднее этих цветовых значений в качестве конечного цветового значения текстуры. Таким образом, как показано на фиг.2В, вычисляют средневзвешенное значение Т1, Т2, Т3 и Т4, в котором весовые коэффициенты определяются расстояниями от центра пикселя до четырех центров текселей. Примеры уравнений билинейной фильтрации, известные специалистам по обработке графики, выглядят следующим образом:

ca = pi,j.α+(pi,j+1).(1-αa)

cb = pi+1,j.α+(pi+1,j).(1-αa)

F = lrp(ca,cb).αb,

где lrp - функция линейной интерполяции, которую без труда понимают современные графические процессоры (ГП). Этот метод позволяет, при визуализации графического объекта, избавиться от большого количества текстурных артефактов, видимых при точечной дискретизации, но, поскольку этот метод предусматривает лишь четырехотводный фильтр, работающий с одной текстурной картой, эффективность билинейной фильтрации ограничена.

Другой подход к повышению качества текстуры представляет собой способ, именуемый MIP-отображением, при котором визуализатор делает несколько копий исходной текстуры, и каждая последующая MIP-карта имеет точно вдвое меньшее разрешение по сравнению с предыдущей. Это, по существу, обеспечивает своего рода трехмерную текстуру, в которой, помимо двух стандартных координат (u,v), имеется также третья координата, d, позволяющая измерить, какую/ие MIP-карту/ы следует выбрать, исходя из того, какое разрешения карты наиболее точно соответствует области пикселей, на которую отображается текстура. В случае, когда плоскость бойца близка к камере наблюдения, выбирают очень подробную текстурную карту, но по мере удаления плоскости используются все меньшие и менее подробные карты.

По мере возрастания координаты d используются все меньшие и меньшие MIP-карты. Процесс нахождения координаты d, в общем случае, достаточно сложен и зависит от реализации, но, в целом, сводится к вычислению, какое увеличение или уменьшение текстуры следует применять, исходя из конкретного выбора MIP-карты на основании покрываемой области пикселей. Таким образом, этот метод позволяет выбирать MIP-карту с минимальной степенью увеличения и уменьшения текстуры. Согласно фиг.2С, задача MIP-отображения сводится к выбору, какую текстуру 200а, 200b, 200с и т.д. лучше всего использовать для представления количества пикселей в пиксельной визуализации 220.

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

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

Некоторые недостатки есть и у трилинейного MIP-отображения, но они, главным образом, относятся к смещению уровня детализации (УД). Каждая MIP-карта имеет соответствующий уровень детализации, и смещение относится к весовому коэффициенту, фигурирующему в среднем значении двух билинейно фильтрованных выборок, взятых из двух разных карт. Слишком «подняв» смещение УД, придав карте с меньшим разрешением большой весовой коэффициент во взвешенном среднем, можно получить размывание текстуры. Слишком «опустив» смещение УД, придав более крупной MIP-карте больший весовой коэффициент во взвешенном среднем, можно получить ступенчатость и временную ступенчатость, например, мерцание/неоднородность текстуры. Таким образом, смещение УД изменяет значение d, приводя к использованию более мелких или более крупных карт, хотя значение d заранее задается в процессе разработки. Основной проблемой этих методов является изотропный характер билинейной или трилинейной фильтрации. Увеличение/уменьшение по одной оси в текстуре может значительно отличаться от увеличения/уменьшения по другой оси, что может приводить к ступенчатости по одной оси и размыванию по другой оси.

Существует еще один способ фильтрации, именуемый анизотропной фильтрацией, представляющий собой попытку изменить изотропный характер билинейной и трилинейной фильтрации. Один вид анизотропной фильтрации предусматривает дискретизацию MIP-карты, но с использованием до 16 выборок вместо восьми. Используя анизотропную фильтрацию, задают для визуализатора степень анизотропии, которая представляет собой отношение, до которого можно растягивать текстуру, прежде, чем качество ее изображения начнет снижаться.

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

Этот вид анизотропной дискретизации, при которой неоднократно осуществляется билинейная фильтрация, проиллюстрирован на фиг.2D для точки Р1а, которая подлежит анизотропной фильтрации под углом θ, заданным отношением Δv/Δu, и длины шага s между точками P1a, P1b, P1c и т.д., заданной величиной Δv и Δu, в соответствии с некоторым заранее определенным геометрическим аспектом визуализируемого треугольника. Эллиптическая форма под углом θ задает местонахождение P1b и Р1с. Затем осуществляют билинейную фильтрацию для каждой точки P1a, P1b и Р1с, которые, в данном примере, во взвешенном виде смешиваются с соответствующими группами из четырех: (А) Т14, Т11, Т15 и Т12, (В) Т11, Т12, Т6 и Т5 и (С) Т7, Т6, Т8 и Т1, соответственно.

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

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

Преимущество, достигаемое за счет использования параллельных конвейеров, способных манипулировать множественными текселями в расчете на пиксель, состоит в том, что операции множественного текстурирования часто можно осуществлять в течение одного тактового периода, что избавляет от необходимости в многопроходной визуализации, когда каждый пиксель на сцене рисуют несколько раз. Из-за дополнительных проходов, которые микросхеме приходится делать, чтобы визуализировать сцену, содержащую многотекстурные эффекты, ее эффективная скорость заполнения пикселей делится на количество проходов, которые необходимо осуществлять. Поэтому, если микросхема со скоростью заполнения 500 Мпиксель/с должна делать два прохода, чтобы визуализировать сцену, на которой присутствуют многотекстурные эффекты, то эффективная скорость заполнения микросхемы снижается в два раза и оказывается равной 250 Мпиксель/с. Если она делает четыре прохода, то скорость заполнения падает до 125 Мпиксель/с. Таким образом, параллельные конвейеры также значительно увеличивают эффективность визуализации графики.

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

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

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

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

Более развитой метод наложения тумана называется «туман в диапазоне», который традиционно не был доступен в бытовых микросхемах трехмерной графики, но, с появлением вершинных затенителей в DirectX8, туман на основе диапазона стал опцией. Другой метод называется таблица тумана, где значения тумана хранятся в таблице поиска, а затем применяются к каждому пикселю.

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

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

Существуют также методы придания прозрачности и полупрозрачности. В отличие от непрозрачных объектов, прозрачные объекты следует, в общем случае, сортировать по глубине в порядке от заднего плана к переднему плану, чтобы гарантировать, что нижележащие цвета, которые смешиваются с прозрачными объектами, доступны при осуществлении операции смешивания. Имеется несколько формул, используемых для вычисления полупрозрачности объекта, но обычная формула такова:

сo = α.cs+(1-α).cd,

где со - конечный цвет пикселя;

α - значение альфа (от 0 до 1);

сs - цвет прозрачного пикселя (именуемого исходным пунктом) и

сd - цвет загороженного пикселя (именуемого пунктом назначения).

Эта формула является суммой двух модуляций пикселя, где значение альфа по-разному применяется к двум пикселям, и полученные значения складываются друг с другом, давая конечный цвет пикселя.

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

Сущность изобретения

Ввиду вышесказанного, настоящее изобретение предусматривает системы и способы обеспечения управляемой дискретизации текстуры применительно к компьютерной графике в компьютерной системе. Согласно различным вариантам осуществления предусмотрены усовершенствованные механизмы управления дискретизацией текстуры, которые позволяют аппаратному ускорителю трехмерной графики значительно повысить уровень реализма при визуализации, в том числе усовершенствованные механизмы для (1) размывания движущихся объектов; (2) генерации анизотропных отражений от поверхности; (3) генерации самозатенения поверхности; (4) объемной дискретизации с отсечением лучей; (5) объемной визуализации с самозатенением и (6) объемного отсечения лучей с самозатенением. В отличие от существующих способов дискретизации текстуры, параметры дискретизации текстуры можно заменять и/или модифицировать.

Различные варианты осуществления предусматривают способы, устройства, компьютерно-считываемые носители и сопроцессоры, обеспечивающие управляемую дискретизацию текстуры, включая задание параметра(ов) области дискретизации, используемого в связи с текстурной дискретизацией текстурной карты, и текстурную дискретизацию текстурной карты в соответствии с заданными параметрами области дискретизации.

Другие признаки и варианты осуществления настоящего изобретения описаны ниже.

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

Система и способы для обеспечения управляемой дискретизации текстуры в соответствии с настоящим изобретением дополнительно описаны со ссылкой на прилагаемые чертежи, на которых изображены:

фиг.1 - общий вид процесса дискретизации текстуры в системе компьютерной графики;

фиг.2А - общий вид процесса точечной дискретизации, отвечающего уровню техники, используемого в связи с дискретизацией текстуры в системе компьютерной графики;

фиг.2В - общий вид процесса билинейной фильтрации, отвечающего уровню техники, используемого в связи с дискретизацией текстуры в системе компьютерной графики;

фиг.2С - общий вид процесса MIP-отображения, отвечающего уровню техники, используемого в связи с дискретизацией текстуры в системе компьютерной графики;

фиг.2D - общий вид процесса анизотропной фильтрации, отвечающего уровню техники, используемого в связи с дискретизацией текстуры в системе компьютерной графики;

фиг.3А - блок-схема иллюстративной сетевой среды, содержащей разнообразные вычислительные устройства, в которой можно реализовать настоящее изобретение;

фиг.3В - блок-схема иллюстративного неограничительного вычислительного устройства, в котором можно реализовать настоящее изобретение;

фиг.4А - вариант осуществления изобретения, обеспечивающий управляемую дискретизацию текстуры;

фиг.4В - еще один вариант осуществления изобретения, обеспечивающий управляемую дискретизацию текстуры;

фиг.5 - схема процесса, в сочетании с которым можно применять другие варианты осуществления изобретения.

Подробное описание изобретения

Обзор

Предусмотрен механизм обеспечения управляемой дискретизации текстуры, который позволяет аппаратному ускорителю трехмерной графики значительно повысить уровень реализма при визуализации и открывает путь к использованию вычислений по методу трассировки лучей в аппаратуре трехмерной графики. До сих пор программные визуализаторы, работающие с главным процессором, не могли использовать такие методы, что значительно замедляло графический конвейер. В связи с этим, используемые в настоящее время микросхемы трехмерной графики содержат блок, именуемый дискретизатором, который извлекает цвет из текстуры на многоугольнике в ходе визуализации. Поскольку позиции визуализируемых пикселей, в общем случае, не соответствуют в точности позициям текселей в текстуре, требуются некоторые действия. Дискретизацию текстуры можно осуществлять на разных уровнях сложности, используя методы, описанные в разделе «Предшествующий уровень техники», например точечную дискретизацию, билинейную фильтрацию, MIP-отображение и анизотропную фильтрацию, а также другие методы. Такие методы, отвечающие уровню техники, имеют фиксированные аспекты, которые применимы не ко всем ситуациям. Кроме того, современные методы анизотропной фильтрации предполагают устранение эффектов размывания, тогда как, на самом деле, разработчик может желать создать эффект размывания. Таким образом, настоящее изобретение позволяет разработчику изменять параметры, которые раньше были фиксированными, обеспечивая беспрецедентный уровень интеллектуальных возможностей в отношении управления процессом дискретизации текстуры. Различные варианты осуществления изобретения демонстрируют его возможности в создании разнообразных текстурных эффектов. Кроме того, изобретение допускает реализацию программными, аппаратными или комбинированными средствами. Например, некоторые его аспекты можно реализовать в соответствующей микросхеме, например, ГП, тогда как другие можно предоставить разработчику графики посредством комплекта инструментов API, операционной системы, драйверов, загружаемой программы и т.д.

Иллюстративные сетевая и распределенная среды

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

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

На фиг.3А представлена схема иллюстративной сетевой или распределенной вычислительной среды. Распределенная вычислительная среда содержит вычислительные объекты 10а, 10b и т.д. и вычислительные объекты или устройства 110а, 110b, 100c и т.д. Эти объекты могут содержать программы, методы, средства хранения данных, программируемую логику и т.д. Объекты могут содержать фрагменты одного или разных устройств, например ПЦС (персональный цифровой секретарь), телевизоров, МР3-проигрываетей, персональных компьютеров и т.д. Каждый объект может сообщаться с другим объектом посредством сети связи 14. Эта сеть сама может содержать другие вычислительные объекты и вычислительные устройства, которые предоставляют услуги системе, изображенной на фиг.3А. Согласно аспекту изобретения, каждый объект 10а, 10b, и т.д. или 110а, 110b, 110c и т.д. может содержать приложение, которое может требовать услуг дискретизации текстуры.

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

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

Очевидно также, что объект, например 110с, может размещаться на другом вычислительном устройстве 10а, 10b и т.д. или 110а, 110b и т.д. Таким образом, хотя в изображенной физической среде подключенные устройства показаны в виде компьютеров, это является всего лишь примером, и физическую среду можно альтернативно изображать или описывать как содержащую различные цифровые устройства, например ПЦС, телевизоры, МР3-проигрыватели и т.д., программные объекты, например интерфейсы, объекты COM и т.п.

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

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