системы и способы обеспечения промежуточных адресатов в графической системе
Классы МПК: | G06T1/60 управление памятью |
Автор(ы): | БОУЛЭНД Мишель Б. (US), БОЙД Чарльз Н. (US), КАНЧЕРЛА Ананта Р. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2003-04-11 публикация патента:
27.10.2008 |
Группа изобретений относится к средствам обработки данных при визуализации и отображения трехмерной графики, требующих вычислений и расчетов, с привлечением промежуточного адресата памяти. Техническим результатом является повышение или сохранение скорости обработки данных для компьютерной графики в компьютерной системе с использованием при этом промежуточных адресатов для повторного использования данных на других этапах обработки. В различных вариантах выполнения обеспечиваются и используются промежуточные буферы памяти в видеопамяти для обеспечения возможности последовательно выводимым программам из графического интерфейса поддерживать алгоритмы, которые превышают ограничения процедурных средств затенения для единичных программ. Промежуточные буферы обеспечивают совместное использование данных обработки в компьютерной системе. Размер этих буферов, т.е. величина данных, хранящихся в промежуточных буферах, может устанавливаться переменным образом для изменяющейся величины разрешения для графических данных. 10 н. и 27 з.п. ф-лы, 7 ил.
Формула изобретения
1. Способ обеспечения и использования промежуточных адресатов памяти в компьютерной системе, имеющей главную систему, включающую в себя центральный процессор (CPU), и графическую подсистему, включающую в себя графический процессор (GPU), причем способ содержит следующие этапы:
передача от главной системы набора программных команд, по меньшей мере, в один компонент графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение специализированной функции, которая включает в себя:
одно из (А) введение данных из промежуточного адресата памяти, по меньшей мере, в один компонент графической подсистемы и (В) выведение данных, по меньшей мере, из одного компонента графической подсистемы в промежуточный адресат памяти;
передача второго набора программных команд, по меньшей мере, в один компонент графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя:
одно из (А) повторное использование данных из промежуточного адресата памяти в качестве ввода, по меньшей мере, в один компонент, (В) ввод данных из промежуточного адресата памяти в, по меньшей мере, один компонент графической подсистемы, и (С) вывод данных из по меньшей мере одного компонента графической подсистемы в промежуточный адресат памяти;
и сохранение и рециркуляция данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированной функций.
2. Способ по п.1, в котором промежуточный адресат памяти является частью видеопамяти.
3. Способ по п.1, в котором данные в промежуточном адресате памяти сохраняются.
4. Способ по п.1, в котором разрешение промежуточного адресата памяти является переменно устанавливаемым.
5. Способ по п.1, в котором, по меньшей мере, один компонент включает в себя процедурное средство затенения.
6. Способ по п.5, в котором процедурное средство затенения является одним из средства затенения вершин и средства пиксельного затенения.
7. Способ по п.1, в котором данные в первом промежуточном адресате памяти представляют различные виды и величины пиксельных данных, иные чем во втором промежуточном адресате памяти.
8. Способ по п.1, отличающийся тем, что он используется для обеспечения управляемой текстурной дискретизации посредством, по меньшей мере, одного из операционной системы, управляющего кода, прикладного программного интерфейса, инструментального набора и сопроцессорного устройства.
9. Модулированный данными сигнал, переносящий исполняемые компьютером команды для выполнения способа по п.1.
10. Компьютерная система для обеспечения и использования промежуточных адресатов памяти, содержащая главную систему, включающую в себя центральный процессор (CPU), и соединенную с ней графическую подсистему, включающую в себя графический процессор (GPU),
причем главная система выполнена с возможностью передачи набора программных команд, по меньшей мере, в один компонент графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение специализированной функции, которая включает в себя:
одно из (А) введение данных из промежуточного адресата памяти, по меньшей мере, в один компонент графической подсистемы и (В) выведение данных по меньшей мере из одного компонента графической подсистемы в промежуточный адресат памяти;
передачи второго набора программных команд, по меньшей мере, в один компонент графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя одно из (А) повторное использование данных из промежуточного адресата памяти в качестве ввода, по меньшей мере, в один компонент, (В) ввод данных из промежуточного адресата памяти в по меньшей мере один компонент графической подсистемы, и (С) вывод данных из по меньшей мере одного компонента графической подсистемы в промежуточный адресат памяти; и
сохранение и рециркуляция данных из множества из, по меньшей мере, одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
11. Интерфейс для сопряжения, по меньшей мере, с одним промежуточным адресатом памяти в компьютерной системе, имеющей главную систему, включающую в себя центральный процессор (CPU), и графическую подсистему, включающую в себя графический процессор (GPU), причем интерфейс содержит исполняемые компьютером модули для сопряжения, по меньшей мере, с одним промежуточным адресатом памяти посредством, по меньшей мере, одного аппаратного компонента в графической подсистеме, причем модули выполняют способ, содержащий следующие шаги:
передача набора программных команд, по меньшей мере, в один аппаратный компонент графической подсистемы для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение специализированной функции, где упомянутая специализированная функция включает в себя:
одно из (А) введение данных из по меньшей мере одного промежуточного адресата памяти по меньшей мере в один аппаратный компонент и (В) выведение данных, по меньшей мере, из одного аппаратного компонента в промежуточный адресат памяти; и
передача второго набора программных команд, по меньшей мере, в один аппаратный компонент графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) повторное использование данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один аппаратный компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один
аппаратный компонент, и (С) вывод данных из по меньшей мере одного аппаратного компонента в промежуточный адресат памяти; и
сохранение и рециркуляция данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
12. Интерфейс прикладной программы по п.11, в котором промежуточный адресат памяти является частью видеопамяти.
13. Интерфейс прикладной программы по п.11, в котором данные в промежуточном адресате памяти сохраняются.
14. Интерфейс прикладной программы по п.11, в котором разрешение промежуточного адресата памяти является переменно устанавливаемым.
15. Интерфейс прикладной программы по п.11, в котором, по меньшей мере, один компонент включает в себя процедурное средство затенения.
16. Интерфейс прикладной программы по п.15, в котором процедурное средство затенения является одним из средства затенения вершин и средства пиксельного затенения.
17. Интерфейс прикладной программы по п.11, в котором данные в первом промежуточном адресате памяти представляют различные виды и величины пиксельных данных, иные чем во втором промежуточном адресате памяти.
18. Машиночитаемый носитель для сопряжения с промежуточными адресатами памяти, имеющий хранящийся на нем, по меньшей мере, один исполняемый компьютером модуль, содержащий исполняемые компьютером команды для выполнения способа, содержащего следующие этапы:
передача набора программных команд, по меньшей мере, в один аппаратный компонент графической подсистемы для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение специализированной функции, которая включает в себя:
одно из (А) введение данных из по меньшей мере одного промежуточного адресата памяти по меньшей мере в один аппаратный компонент и (В) выведение данных, по меньшей мере, из одного аппаратного компонента в промежуточный адресат памяти; и
передача второго набора программных команд, по меньшей мере, в один аппаратный компонент для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) повторное использование данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один аппаратный компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один компонент, и (С) вывод данных из по меньшей мере одного компонента в промежуточный адресат памяти; и
сохранение и рециркуляция данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из, по меньшей мере, одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
19. Машиночитаемый носитель по п.18, в котором промежуточный адресат памяти является частью видеопамяти.
20. Машиночитаемый носитель по п.18, в котором данные в промежуточном адресате памяти сохраняются.
21. Машиночитаемый носитель по п.18, в котором разрешение промежуточного адресата памяти является переменно устанавливаемым.
22. Машиночитаемый носитель по п.18, в котором, по меньшей мере, один компонент включает в себя процедурное средство затенения.
23. Машиночитаемый носитель по п.22, в котором процедурное средство затенения является одним из средства затенения вершин и средства пиксельного затенения.
24. Машиночитаемый носитель по п.18, в котором данные в первом промежуточном адресате памяти представляют различные виды и величины пиксельных данных иные, чем во втором промежуточном адресате памяти.
25. Машиночитаемый носитель по п.18, в котором упомянутые модули включаются, по меньшей мере, в одно из интерфейса прикладной программы (ИПП), управляющего кода, операционной системы и приложения.
26. Сопроцессорное устройство для приема набора программных команд для ввода и вывода данных, пригодных для множества промежуточных адресатов памяти, содержащее:
компонент ввода для приема набора программных команд, по меньшей мере, в один компонент сопроцессорного устройства для программирования этого, по меньшей мере, одного компонента на выполнение специализированной функции, причем упомянутая специализированная функция включает в себя:
одно из (А) введение данных из промежуточного адресата памяти по меньшей мере в один компонент и (В) выведение данных, по меньшей мере, из одного компонента в промежуточный адресат памяти;
компонент ввода для приема второго набора программных команд, по меньшей мере, в один компонент сопроцессорного устройства для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) повторное использование данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один компонент, и (С) вывод данных из по меньшей мере одного компонента в промежуточный адресат памяти; и
компонент ввода для приема сохраненных и рециркулированных данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
27. Сопроцессорное устройство по п.26, в котором промежуточный адресат памяти является частью видеопамяти.
28. Сопроцессорное устройство по п.26, в котором данные в промежуточном адресате памяти сохраняются.
29. Сопроцессорное устройство по п.26, в котором разрешение промежуточного адресата памяти, является переменно устанавливаемым.
30. Сопроцессорное устройство по п.26, в котором, по меньшей мере, один компонент сопроцессорного устройства включает в себя процедурное средство затенения.
31. Сопроцессорное устройство по п.30, в котором процедурное средство затенения является одним из средства затенения вершин и средства пиксельного затенения.
32. Сопроцессорное устройство по п.26, в котором данные в первом промежуточном адресате памяти представляют различные виды и величины пиксельных данных иные, чем во втором промежуточном адресате памяти.
33. Сопроцессорное устройство по п.26, в котором упомянутое сопроцессорное устройство включает в себя, по меньшей мере, один графический процессор (GPU).
34. Машиночитаемый носитель, содержащий исполняемые компьютером модули для сопряжения, по меньшей мере, с одним промежуточным адресатом памяти посредством, по меньшей мере, одного аппаратного компонента в графической подсистеме, причем модули содержат
средство для передачи набора программных команд, по меньшей мере, в один аппаратный компонент для программирования этого, по меньшей мере, одного аппаратного компонента графической подсистемы на выполнение специализированной функции, причем упомянутая специализированная функция включает в себя:
одно из (А) введение данных из по меньшей мере одного промежуточного адресата памяти по меньшей мере в один аппаратный компонент и (В) выведение данных, по меньшей мере, из одного аппаратного компонента в промежуточный адресат памяти;
средство для передачи второго набора программных команд, по меньшей мере, в один аппаратный компонент для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) повторное использование данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один аппаратный компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один компонент, и (С) вывод данных из по меньшей мере одного компонента в промежуточный адресат памяти; и
средство для сохранения и рециркуляции данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
35. Система обеспечения и использования промежуточных адресатов памяти в компьютерной системе, содержащая
средство для передачи набора программных команд, по меньшей мере, в один компонент графического аппаратного обеспечения графической подсистемы для программирования этого, по меньшей мере, одного компонента на выполнение специализированной функции, которая включает в себя:
одно из (А) средство для введения данных из по меньшей мере одного промежуточного адресата памяти по меньшей мере в один компонент графического аппаратного обеспечения и (В) средство для выведения данных, по меньшей мере, из одного компонента графического аппаратного обеспечения в промежуточный адресат памяти;
средство для передачи второго набора программных команд, по меньшей мере, в один компонент графического аппаратного обеспечения для программирования этого, по меньшей мере, одного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) средство для повторного использования данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один компонент, и (С) вывод данных из по меньшей мере одного компонента в промежуточный адресат памяти; и
средство для сохранения и рециркуляции данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
36. Интерфейс для сопряжения, по меньшей мере, с одним промежуточным адресатом памяти, содержащий исполняемые компьютером модули для сопряжения, по меньшей мере, с одним промежуточным адресатом памяти посредством, по меньшей мере, одного аппаратного компонента в графической подсистеме, причем модули содержат
средство для передачи набора программных команд, по меньшей мере, в один аппаратный компонент графической подсистемы для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение специализированной функции, причем упомянутая специализированная функция включает в себя:
одно из (А) введение данных из, по меньшей мере, одного промежуточного адресата памяти, по меньшей мере, в один аппаратный компонент и (В) выведение данных, по меньшей мере, из одного аппаратного компонента в промежуточный адресат памяти; и
средство для передачи второго набора программных команд, по меньшей мере, в один аппаратный компонент графической подсистемы для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) средство для повторного использования данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один аппаратный компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один аппаратный компонент, и (С) вывод данных из по меньшей мере одного аппаратного компонента в промежуточный адресат памяти; и
средство для сохранения и рециркуляции данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
37. Сопроцессорное устройство для приема набора программных команд для ввода и вывода данных, пригодных для множества промежуточных адресатов памяти, содержащее
средство для приема набора программных команд, по меньшей мере, в один компонент сопроцессорного устройства для программирования этого, по меньшей мере, одного компонента на выполнение специализированной функции, причем упомянутая специализированная функция включает в себя:
одно из (А) введение данных из, по меньшей мере, одного промежуточного адресата памяти по меньшей мере в один компонент и (В) выведение данных, по меньшей мере, из одного компонента в промежуточный адресат памяти;
средство для приема второго набора программных команд, по меньшей мере, в один компонент сопроцессорного устройства для программирования этого, по меньшей мере, одного аппаратного компонента на выполнение второй специализированной функции, которая включает в себя:
по меньшей мере одно из (А) средство для повторного использования данных из по меньшей мере одного промежуточного адресата памяти в качестве ввода, по меньшей мере, в один компонент, (В) ввод данных из по меньшей мере одного промежуточного адресата памяти в по меньшей мере один компонент, и (С) вывод данных из по меньшей мере одного компонента в промежуточный адресат памяти; и
средство для сохранения и рециркуляции данных из множества из по меньшей мере одного промежуточного адресата памяти для выполнения функции программы пиксельного затенения с адресатами визуализации указанной программы, причем данные из множества из по меньшей мере одного промежуточного адресата памяти повторно используются для выполнения указанной функции с указанными адресатами визуализации, отличной от первой и второй специализированных функций.
Описание изобретения к патенту
Уведомление об авторском праве и разрешение копирования
Часть описания данного патентного документа может содержать материал, который является предметом защиты по авторскому праву. Обладатель авторского права не имеет возражений против факсимильного воспроизведения кем бы то ни было этого патентного документа или патентного описания, как оно явствует из дел или записей Ведомства по патентам и товарным знакам, но во всех остальных случаях оставляет за собой все права на копирование. К данному документу должно прикладываться следующее извещение: Авторское право © 2002, Microsoft Corp.
Область изобретения
Настоящее изобретение направлено на системы и способы обеспечения промежуточного адресата(ов) памяти в связи с компьютерной графикой. В частности, настоящее изобретение относится к системам и способам обеспечения промежуточного адресата(ов) памяти для использования в связи с процедурными программами затенения, такими как программы затенения пикселов и вершин.
Существующий уровень техники
Визуализация и отображение трехмерной графики, как правило, связано с множеством расчетов и вычислений. Например, чтобы визуализировать трехмерный объект, формируется набор координатных точек или вершин, которые определяют этот объект. Вершины могут соединяться для образования многоугольников, которые определяют поверхность объекта, подлежащего визуализации и отображению. После того как образованы вершины, которые определяют объект, эти вершины могут преобразовываться из объектного или модельного эталонного кадра в глобальный эталонный кадр и, наконец, в двумерные координаты, которые могут быть отображены на плоском отображающем устройстве, таком как монитор. По пути вершины могут поворачиваться, масштабироваться, исключаться или ограничиваться, потому что они оказываются вне видимой области, освещаться различными схемами или источниками освещения, окрашиваться, преобразовываться иным образом, затеняться и т.д. Процессы, используемые при визуализации и отображении трехмерного объекта, могут требовать вычислений и могут включать большое число вершин.
Обычно, как иллюстрируется на Фиг.1, сложные трехмерные объекты или их части могут быть представлены совокупностями смежных треугольников ("сеткой"), представляющими приблизительную геометрию трехмерного объекта, либо геометрической картой или поверхностью в пространстве двумерных поверхностей. Сетка может определяться через позиции вершин треугольников. Одна или более текстурных карт могут отображаться на поверхность для создания текстурированной поверхности согласно процессу отображения текстуры. В этом отношении сигналы, текстурированные по поверхности, могут быть очень общими и могут определять любой вид промежуточного результата, который можно вводить в механизм(ы) преобразования, такой как процедура(ы) затенения, чтобы получить конечные цветовые и/или иные значения, связанные с точечной выборкой.
После текстурной дискретизации к текстурированной поверхности могут дополнительно применяться дополнительные преобразования, такие как алгоритмы и методы затемнения, перед визуализацией изображения посредством элементов изображения (пикселов) отображающего устройства или выведением данных иным образом для другой цели, нежели отображение. Изображения в компьютерной графике обыкновенно представляются как двумерная матрица дискретных значений (шкала серого) или как три двумерных матрицы дискретных значений (цветов). С помощью стандартной системы прямоугольных координат (x, y, z) поверхность можно определить как сетку (например, треугольную сетку) с координатами (x,y,z) для вершины сетки либо как геометрическую карту, в которой координаты (x,y,z) определяются как прямолинейное изображение в двумерной системе координат (u,v), иногда называемой областью параметризации поверхности. Текстурная карта(ы) может также определяться системой координат (u,v).
Точечные выборки в области параметризации поверхности, где к поверхности, включая ее геометрию, приписаны сигналы, можно генерировать из текстурных сеток или геометрических карт. Эти выборки могут быть преобразованы и затенены с помощью множества вычислений. В конце этой обработки преобразования и затенения точечная выборка включает в себя: (а) информацию позиционирования, т.е. адрес изображения, указывающий, куда отображается точка в плоскости изображения, и (б) информацию текстурного цвета или шкалы серого, которая указывает цвет выборки в позиции, указанной информацией позиционирования. Другие данные, такие как информация глубины точечной выборки, чтобы обеспечить исключение скрытой поверхности, вес или иная полезная информация о точечной выборке, тоже могут включаться в него. Преобразованная текстурированная поверхность помещается в кадровый буфер перед визуализацией посредством дисплея в двумерном пиксельном пространстве (x,y) изображения. В этой точке в случае черно-белого отображающего устройства каждой пиксельной позиции (x,y) в двумерном пространстве изображения присваивается значение серого в соответствии с некоторой функцией поверхности в кадровом буфере. В случае цветного отображающего устройства каждой пиксельной позиции (x,y) в двумерном пространстве изображения присваиваются значения красного, зеленого и синего (RGB). Отметим, что существует также множество цветовых форматов, иных, нежели RGB. С учетом изменений архитектуры от начала до конца вышеописанный метод уплотнения больших массивов данных графических вершин и пикселов известен как графический конвейер.
Индустрия компьютерной графики и графические конвейеры в последние несколько лет растут чрезвычайно бурно. К примеру, нынешнее поколение компьютерных игр переносится в трехмерную графику во все возрастающей степени и весьма реалистично. В то же время скорость игры становится все быстрее и быстрее. Эта комбинация подпитывает насущную потребность в быстрой визуализации трехмерной графики в относительно недорогих системах.
Еще в 1970-е годы системы трехмерной визуализации были способны описать "внешность" объектов согласно параметрам. Эти и более поздние способы обеспечивают параметризацию воспринимаемого цвета объекта на основании положения и ориентации его поверхности и освещающих его источников света. При этом из них вычисляется внешность объекта. Параметры также включают в себя значения, такие как диффузный цвет, коэффициент зеркального отражения, зеркальный цвет, отражательная способность и прозрачность материала объекта. Такие параметры в общем именуются параметрами затенения объекта.
Ранние системы могли лишь приписывать единственное значение параметрам затенения, а следовательно, они оставались постоянными и однородными по всей поверхности объекта. Более поздние системы позволяли использовать неоднородные параметры (например, прозрачность), которые могли иметь различные значения на разных частях объекта. Два известных и отличных друг от друга метода использовались для описания значений, полученных этими неоднородными параметрами на разных частях поверхности объекта: процедурное затенение и отображение текстуры. Отображение текстуры основано на пикселах и не зависит от разрешения.
Процедурное затенение описывает внешний вид материала в любой точке одномерного, двумерного или трехмерного пространства путем определения функции (часто называемой процедурным средством затенения) в этом пространстве на пространство параметров затенения. Объект "погружается" в исходное одномерное, двумерное или трехмерное пространство, и значения параметров затенения в данной точке поверхности объекта определяются как результат функции процедурного затенения в этой точке. К примеру, разработаны и могут быть найдены в литературе процедурные средства затенения, которые аппроксимируют внешний вид поверхностей из дерева, мрамора или другого естественного материала.
Визуализация графических данных в компьютерной системе представляет собой совокупность ресурсоемких процессов. Процесс затенения, т.е. процесс выполнения сложных алгоритмов на наборе(ах) специализированных структур графических данных, используемых для определения значений некоторых примитивов, таких как цвет и т.п., связанных со структурами графических данных, упрощает такие вычислительно-емкие и сложные процессы. В целом процесс затенения до некоторой степени нормирован. За счет пересылки исходного кода, предназначенного для работы со средством затенения, в приложение средство затенения становится объектом, который приложение может создавать/использовать, чтобы облегчить эффективное вычерчивание сложной видео графики. Примерами таких средств затенения являются средства затенения вершин и средства пиксельного затенения.
До их нынешнего воплощения в специализированных аппаратных микросхемах средства затенения вершин и пикселов иногда воплощались в целом или по большей части как программный код, а иногда воплощались как комбинация более жестких частей аппаратуры с программным обеспечением для управления этой аппаратурой. Такие реализации часто содержали центральный процессорный блок или имитировали его наличие с помощью системного центрального процессора. Например, аппаратные реализации непосредственно встраивали микросхему центрального процессора в свою конструкцию, чтобы выполнять обработку функций, требуемых задачами затенения. Хотя центральный процессор придает значительную гибкость в процесс затенения ввиду диапазона функциональных возможностей, которые обеспечивает стандартная микросхема обработки, встраивание центрального процессора добавляет непроизводительные издержки к специализированному процессу затенения. Однако без современного состояния аппаратного обеспечения было бы мало возможностей выбора.
В настоящее время, тем не менее, достигнут прогресс в технологии аппаратного обеспечения, что облегчает возможность перемещения функций, ранее реализованных в программном обеспечении, в специализированную аппаратуру. В результате нынешние средства пиксельного затенения и вершин реализуется как специализированные и программируемые микросхемы. Современные аппаратные разработки микросхем для пиксельного затенения и вершин в высокой степени специализированы и этим отличаются от аппаратных реализаций центральных процессоров в прошлом.
Разработаны специализированные интерфейсы прикладных программ (ИПП) (API) трехмерной графики, которые проявляют специализированные функциональные возможности современных средств затенения вершин и пикселов. В этом отношении разработчик может загружать команды в средство затенения (программу построения теней) вершин, которые эффективно программируют это средство затенения вершин для выполнения специализированного режима. К примеру, ИПП проявляют функциональные возможности, связанные с возросшим числом регистров в средствах затенения вершин, например, специализированные функции затенения вершин по отношению к числам с плавающей запятой на регистровом уровне. В дополнение к этому, возможно реализовать набор команд, который позволяет чрезвычайно быстродействующему средству затенения вершин выдавать в ответ только дробные части чисел с плавающей запятой. Множество функций может быть реализовано посредством загрузки этих команд в предположении, что предел счета для команд в средстве затенения вершин не превышается.
Подобным же образом в отношении средства пиксельного затенения специализированные функции средства пиксельного затенения могут реализовываться путем загрузки команд в средство пиксельного затенения. К примеру, проявляются функциональные возможности, которые обеспечивают механизм линейной интерполяции в средстве пиксельного затенения. Кроме того, для разработчиков выявляются функциональные возможности многих различных модификаторов операций в связи с наборами команд, настроенными на средство пиксельного затенения. К примеру, логическое отрицание (взятие с обратным знаком), повторное отображение, смещение и другие функции чрезвычайно полезны для многих графических приложений, для которых желательно эффективное пиксельное затенение, и даже когда они исполняются как часть единственной команды, они лучше всего выражаются как модификаторы для этой команды. Короче говоря, вышеуказанные функциональные возможности являются преимуществом для многих графических операций, и их функциональное встраивание в наборы команд уже специализированных средств затенения пикселов и вершин добавляет огромное значение с точки зрения простоты разработки и улучшения характеристик. Множество функций может, таким образом, обеспечиваться через загрузку этих команд в предположении, что предел счета для команд в средстве пиксельного затенения не превышается.
Совместно переуступленная заявка на патент США того же заявителя №09/801079, поданная 6 марта 2001 года, предлагает такие примерные трехмерные ИПП для осуществления связи с аппаратными реализациями средств затенения вершин и средств пиксельного затенения, имеющих локальные регистры. Что касается средств затенения вершин, в этой заявке описываются связи ИПП, которые могут использовать встроенный указатель регистров, и эти связи ИПП обеспечивают также специализированную функцию, реализованную на микросхеме на регистровом уровне, которая выводит дробную часть(и) ввода(ов) (введенных данных). Что касается пиксельного затенения, связи ИПП обеспечивают специализированную функцию, реализованную на микросхеме на регистровом уровне, которая выполняет функцию линейной интерполяции, и предусмотрены связи ИПП для специализированных модификаторов, также реализованных на микросхеме на регистровом уровне, которые выполняют функции модификации, включая взятие с обратным знаком, определение дополнения, повторное отображение смещение, масштабирование и насыщение. Преимущественно связи ИПП предоставляют разработчику очень полезные встроенные графические алгоритмические элементы, скрывая в то же время от разработчика подробности работы микросхем со средствами затенения вершин и пиксельного затенения. Совместно переуступленная заявка на патент США того же заявителя №09/796577, поданная 1 марта 2001 года, также описывает трехмерные ИПП, которые предоставляют разработчику уникальные алгоритмические элементы для использования с процедурными средствами затенения посредством механизма, который находится концептуально ниже или внутри программного интерфейса и разрешает разработчику загружать команды в процедурные средства затенения и центральный процессорный блок. Например, такой трехмерный ИПП разрешает загружать операции в микросхему трехмерной графики для улучшения характеристик качества. Эти трехмерные ИПП получают преимущество от новейших микросхем трехмерной графики, которые начали обрабатывать такие программируемые функциональные возможности путем включения гибкой встроенной обработки и ограниченной встроенной памяти, чтобы удалять заказной графический код из обработки главного процессора и помещать такие программируемые и загружаемые функциональные возможности в микросхему графики. Такие ИПП обеспечивают то, что программирующие или алгоритмические элементы, написанные разработчиком, могут загружаться в микросхему, тем самым программируя эту микросхему на выполнение этих алгоритмов на повышенных уровнях эффективности. Сюда же относится и то, что разработчик может написать подпрограмму, загружаемую в микросхему трехмерной графики, а также имеется набор(ы) алгоритмических элементов, которые предусматриваются в связи с трехмерным ИПП (подпрограммы, которые не пишутся разработчиком, но которые уже запрограммированы для разработчика). Аналогично, разработчик может загружать эти предварительно упакованные алгоритмы ИПП в программируемую микросхему трехмерной графики для повышение эффективности обработки. Способность загружать трехмерные алгоритмические элементы обеспечивает повышение эффективности, расширение возможностей управления, а также простоту разработки.
Таким образом, введение программируемых операций на повершинной и попиксельной основе более широко распространяется в современном графическом аппаратном обеспечении. Эта общая программируемость обеспечивает огромный потенциал для усложненных алгоритмов создания на повышенных уровнях эффективности. Однако имеется ряд ограничений того, что может быть достигнуто. Как правило, при нынешних визуализирующих конвейерах в средствах затенения вершин и пикселов, как иллюстрируется на фиг.2А, поток геометрических данных ПГД (SGD) вводится в средство 200 затенения вершин для выполнения некоторой операции для вершин, после чего растеризатор 210 растеризирует геометрические данные в пиксельные данные, выводя поток пиксельных данных ППД1 (SPD1). Средство 200 затенения вершин может принимать команды, которые программируют это средство 200 затенения вершин выполнять специализированные функции, но имеются пределы на размер и сложность команд программы затенения вершин. Аналогично, средство 220 пиксельного затенения может дополнительно выполнять одно или более преобразований данных, выведенных потоком пиксельных данных ППД2. Средство 220 пиксельного затенения может также принимать команды, которые программируют средство 220 пиксельного затенения для выполнения специализированных функций, но имеются ограничения на размер и сложность команд средства пиксельного затенения. Таким образом, одно ограничение для современных ИПП и соответствующего аппаратного обеспечения состоит в том, что большая часть аппаратного обеспечения имеет очень ограниченный счет команд. Этот ограниченный счет команд препятствует реализации некоторых из наиболее усложненных алгоритмов разработчиком с помощью ИПП. Кроме того, современное программируемое аппаратное обеспечение имеет весьма ограниченные механизмы для обмена данными между отдельными программами, т.е. первая программа пиксельного затенения не может повторно использовать вывод данных из второй программы пиксельного затенения.
В дополнение к этому, как иллюстрируется на фиг.2А, пиксел обыкновенно представляется как точка в двумерной сетке пространства изображения, имеющая значение шкалы серого или связанные с ним цветные значения; однако современная графика рассматривает пиксел в конвейере обработки пикселов как любую совокупность данных, связанных с точкой в любом двумерном массиве данных, относится ли он к отображаемому изображению или нет. Например, хотя фиг.2А иллюстрирует пиксел, имеющий участок памяти для красного, участок памяти для зеленого и участок памяти для синего, это вовсе не обязательно, и любое число участков памяти и соответствующих значений может быть пикселом. Таким образом, имеется значительная гибкость в генерировании двумерного массива пиксельных данных, который может включать в себя значения параметров для эффектов освещения, веса, информации буфера глубины (z-буфера) и т.п. Проблема, свойственная современному графическому конвейеру, как иллюстрируется на фиг.2С, относится к гибкости, с которой могут выводиться раздельные наборы пикселов. Хотя пиксельный процессор 230 способен выводить любой вид пиксельных данных, т.е. пикселы Р1, Р2, Р3, Р4 ... PN, выводимые в потоке, могут отличаться значительной гибкостью, что касается вида или числа участков памяти, определяющих эти пикселы, тем не менее, все Р1, Р2, Р3, Р4 ... PN имеют одни и те же участки памяти. Таким образом, если Р1 включает в себя данные R, G, B, то же самое относится и к Р2, Р3, Р4 ... PN, тем самым отсутствует гибкость, которая обеспечивала бы определение разных наборов выходных пиксельных данных, часть которых может использоваться для освещения, а другие - непосредственно для цвета. Кроме того, в настоящее время разрешение для визуализированных объектов определяется заранее в соответствии с процессом растеризации, т.е. процесс визуализации управляет количеством выборок, которые можно помещать в визуализируемый объект, и тем самым было бы желательно иметь переменное управление разрешением визуализируемого объекта, т.е. количество выборок, которые могут храниться в связи с визуализируемым объектом.
Поэтому было бы желательно реализовать системы и способы, которые преодолевают недостатки современных возможностей программирования в связи с существующими архитектурами графических конвейеров, ИПП и аппаратного обеспечения вследствие ограничений на счет команд, ограничений на форму вывода и отсутствие совместного использования данных среди программ.
Сущность изобретения
Исходя из вышеизложенного, настоящее изобретение предлагает системы и способы обеспечения промежуточного адресата(ов) в связи с компьютерной графикой в компьютерной системе. В различных вариантах осуществления изобретение обеспечивает и использует промежуточные буферы памяти в видеопамяти, чтобы позволить преобразованным в последовательную форму программам из графических ИПП поддерживать алгоритмы, которые превышают командные ограничения процедурных средств затенения для одиночных программ. Промежуточные буферы могут также обеспечить совместное пользование данными среди программ и для других целей и доступны как неделимое целое. Размер этих буферов, т.е. величина данных, хранящихся в промежуточных буферах, может устанавливаться переменным образом для изменяемой величины разрешения по отношению к графическим данным. В этой связи единичная программа генерирует промежуточные данные, которые затем могут использоваться и повторно использоваться путем расширения той же самой программы и/или любого числа других программ любое число раз, как желательно, обеспечивая значительную гибкость и сложность программ затенения, сохраняя скорость современных микросхем графики.
Другие признаки и варианты осуществления настоящего изобретения описаны ниже.
Краткое описание чертежей
Система и способы обеспечения промежуточных адресатов памяти в соответствии с настоящим изобретением описаны ниже со ссылками на чертежи, на которых представлено следующее: фиг.1 - схематическое представление процесса графического конвейера в компьютерной графической системе;
фиг.2А-2С - иллюстрация различных ограничений и проблем существующих графических конвейеров;
фиг.3А - блок-схема, представляющая пример сетевой среды, имеющей множество вычислительных устройств, в которой может быть реализовано настоящее изобретение;
фиг.3В - блок-схема, представляющая пример неограничивающего вычислительного устройства, в котором может быть реализовано настоящее изобретение;
фиг.4 - иллюстрация примера использования промежуточных адресатов памяти согласно изобретению для обхода аппаратурного предела счета команд;
фиг.5 - блок-схема алгоритма, иллюстрирующая использование ИПП в соответствии с настоящим изобретением;
фиг.6 - диаграмма, иллюстрирующая примерные аспекты промежуточных адресатов памяти согласно изобретению, и
фиг.7 - иллюстрация примерного использования промежуточных адресатов памяти для достижения комплексных функциональных возможностей с несколькими прогонами программ аппаратными средствами в соответствии с изобретением.
Подробное описание изобретения
Обзор
Как описано выше, настоящее изобретение позволяет использовать множество вычислений промежуточных адресатов в языках затенения, таких как языки затенения низкого уровня, что позволяет разработчику программировать функциональные возможности процедурных средств затенения. Графические платформы, которые не имеют рециркуляции промежуточных адресатов в соответствии с изобретением, ограничены в размерах и сложности программ, которые работают на попиксельном или повершинном уровне. Системы и способы, соответствующие изобретению, обеспечивают создание языка высокого уровня для абстрактного и упрощенного использования возможностей программирования в связи с эволюцией программируемого в общем виде графического конвейера. Изобретение может также использоваться для создания программ с виртуально неограниченной длиной, которые обеспечивают визуализацию не в реальном времени с помощью аппаратного ускорения. Размер буферов, т.е. количество данных, хранящихся в промежуточных адресатах, может быть переменным набором для изменяющейся величины разрешения по отношению к графическим данным. Доступность неограниченной рециркуляции с аппаратным ускорением для приложений визуализации не в реальном времени в соответствии с изобретением увеличивает тем самым скорость и эффективность графической платформы.
Примерные сетевые и распределенные среды
Специалисту должно быть понятно, что компьютер или иное клиентское или серверное устройство может применяться как часть компьютерной сети либо в распределенной вычислительной сети. С этой точки зрения настоящее изобретение подходит к любой компьютерной системе с любым числом блоков памяти или хранения и любым числом приложений и процессов, происходящих в любом числе блоков или объемов памяти, которые могут использоваться в связи с промежуточными адресатами памяти по изобретению. Настоящее изобретение может применяться к среде с серверными компьютерами и клиентскими компьютерами, развернутыми в сетевой среде или распределенной вычислительной среде, имеющей удаленную или локальную память. Настоящее изобретение может быть также применено к автономным вычислительным устройствам с функциональными возможностями языков программирования, средствами интерпретации и выполнения для генерирования, приема и передачи информации в связи с удаленными или локальными услугами.
Распределенное вычисление облегчает совместное использование компьютерных ресурсов и услуг путем прямого обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, сверхоперативную память и дисковую память для файлов. Распределенное вычисление имеет преимущество сетевой связности, позволяющей клиентам выгодно использовать их совместную производительность для получения выигрыша для всего предприятия. В этом отношении множество устройств могут иметь приложения, объекты и ресурсы, которые могут использовать промежуточные адресаты памяти согласно изобретению.
На фиг.3А показано схематичное представление примерной сетевой или распределенной вычислительной среды. Эта распределенная вычислительная среда содержит вычислительные объекты 10а, 10b и т.д. и вычислительные объекты или устройства 110а, 110b, 110с и т.д. Эти объекты могут содержать программы, способы, банки данных, программируемую логику и т.п. Эти объекты могут содержать части одних и тех же или различных устройств, таких как персональные цифровые ассистенты (ПАА) (PDA), телевизоры, звуковые проигрыватели МР3, персональные компьютеры и т.п. Каждый объект может осуществлять связь с другим объектом с помощью сети 14 связи. Эта сеть сама может содержать другие объекты и вычислительные устройства, которые обеспечивают услуги для системы по фиг.2А. В соответствии с одним из аспектов данного изобретения каждый объект 10а, 10b и т.д. или 110а, 110b, 110с и т.д. может содержать приложение, которое может использовать ИПП или иной объект, чтобы запрашивать использование промежуточных адресатов памяти по изобретению.
В распределенной вычислительной архитектуре компьютеры, которые могут традиционно использоваться только как клиенты, осуществляют связь непосредственно между собой и могут действовать и как клиенты, и как серверы, принимая на себя ту роль, которая наиболее эффективна для сети. Это снижает нагрузку на серверы и позволяет всем клиентам обращаться к ресурсам, доступным на других клиентах, благодаря чему увеличивается пропускная способность и эффективность всей сети. Услуги, которые используют промежуточные адресаты памяти в соответствии с настоящим изобретением, могут, таким образом, распределяться среди клиентов и серверов, действующих тем способом, который эффективен для всей сети.
Распределенное вычисление может помочь коммерческим предприятием предоставлять услуги и возможности более эффективно через разные географические границы. Кроме того, распределенное вычисление может перемещать данные ближе к тому пункту, где данные потребляются, действуя как сетевой механизм сверхоперативной памяти. Распределенное вычисление также позволяет вычислительным сетям динамически взаимодействовать с использованием интеллектуальных агентов. Агенты постоянно находятся на одноранговых компьютерах и передают различные виды информации туда и обратно. Агенты могут также инициировать задачи от имени других одноранговых систем. К примеру, интеллектуальные агенты могут использоваться, чтобы устанавливать приоритеты задач в сети, изменять поток трафика, искать файлы на месте или определять аномальное поведение, такое как вирусы, и останавливать его, прежде чем оно окажет воздействие на работу. Могут подразумеваться также все типы других услуг. Поскольку графический объект(ы), текстурные карты, данные затенения и т.п. могут на практике физически располагаться в одном или более местоположений, способность распределять услуги, которые используют промежуточные адресаты памяти, описанные здесь, является очень полезной в такой системе.
Можно также отметить, что объект, такой как 110с, может управляться с другого вычислительного устройства 10а, 10b и т.д. или 110а, 110b и т.д. Тем самым, хотя изображенная физическая среда может показывать соединенные устройства как компьютеры, такая иллюстрация является просто примером, а физическая среда может быть альтернативно изображена или описана как содержащая различные цифровые устройства, такие как ПАА, телевизоры, проигрыватели МР3 и т.п., программные объекты, такие как интерфейсы, объекты СОМ и т.п.
Имеется множество систем, компонентов и сетевых конфигураций, которые поддерживают распределенную вычислительную среду. Например, вычислительные системы могут соединяться вместе проводными или беспроводными системами, локальными сетями или глобальными сетями. В настоящее время многие из этих сетей связаны с Интернетом, который обеспечивает инфраструктуру для широко распределенного вычисления и охватывает множество разных сетей.
В домашних сетевых средах имеется, по меньшей мере, четыре в корне отличных носителя сетевого переноса, каждый из которых может поддерживать уникальный протокол, такой как сеть питания, данные (как беспроводные, так и проводные), речь (например, телефон) и медийные средства развлекательного типа. Большая часть домашних управляющих устройств, таких как выключатели света и бытовые приборы, могут использовать для соединения сеть питания. Услуги данных могут вводиться в дом как широкополосные (например, либо цифровая абонентская линия (DSL), либо кабельный модем) и быть доступны в доме с помощью беспроводного (например, HomeRF или 802.11b), либо проводного (например, домашнего PNA, Cat 5, линия питания) соединения. Речевой трафик может вводиться в дом либо как проводной (например, Cat 3), так и беспроводный (например, сотовые телефоны) и может распределяться внутри дома с помощью проводки Cat 3. Медийные средства развлекательного типа или другие графические данные могут вводиться в дом либо через спутник, либо по кабелю и обычно распределяются в доме с помощью коаксиального кабеля. Аппаратура стандартов IEEE 1394 и DVI также может быть реализована в виде цифровых межсоединений для кластеров медиа-устройств. Все эти сетевые среды и другие, реализуемые в качестве стандартов протоколов, могут соединяться между собой, чтобы образовать внутреннюю сеть (интранет), которая может соединяться с внешним миром посредством Интернета. Короче говоря, существует множество отличающихся источников для хранения и передачи данных, а следовательно, в перспективе вычислительные устройства потребуют способов совместного использования данных, таких как данные, к которым обращаются или которые используют в связи с программными объектами, которые используют промежуточные результаты промежуточных адресатов в соответствии с настоящим изобретением.
Интернет обычно называют собранием сетей и шлюзов, которые используют комплект проколов TCP/IP, которые общеизвестны в области компьютерных сетей. TCP/IP является акронимом для слов "Протокол управления переносом/Интерфейсная программа". Интернет может быть описан как система географически распределенных удаленных компьютерных сетей, соединенных между собой компьютерами, исполняющими сетевые протоколы, которые позволяют пользователям взаимодействовать и совместно пользоваться информацией по сетям. Из-за такого широко распространенного совместного пользования информацией удаленные сети, такие как Интернет, тем самым в большинстве случаев вовлекаются в открытую систему, для которой разработчики могут конструировать программные приложения для выполнения специализированных операций или услуг практически без ограничений.
Таким образом, сетевая инфраструктура создает возможность главного компьютера сетевых топологий, таких как клиент-сервер, одноранговых или гибридных архитектур. "Клиент" является членом класса или группы, которая использует услуги другого класса или группы, к которой он не относится. Тем самым в вычислениях клиент является процессом, т.е., грубо говоря, набором команд или задач, который запрашивает услугу, предоставляемую другой программой. Клиентский процесс использует запрошенную услугу без "знания" каких-либо подробностей работы о самой этой другой программе или услуге. В архитектуре клиент-сервер, в частности в сетевой системе, клиент обычно представляет собой компьютер, который обращается к совместно используемым сетевым ресурсам, предоставленным другим компьютером, например сервером. В примере по фиг.3А компьютеры 110а, 110b и т.д. могут считаться клиентами, компьютер 10а, 10b и т.д. может считаться сервером, где сервер 10а, 10b и т.д. поддерживает данные, которые затем копируются в клиентских компьютерах 110а, 110b и т.д.
Сервер обычно является удаленной компьютерной системой, доступной по удаленной сети, такой как Интернет. Клиентский процесс может активироваться в первой компьютерной системе, а серверный процесс может активироваться во второй компьютерной системе, и они могут осуществлять связь друг с другом по среде передачи данных, тем самым обеспечивая распределенные функциональные возможности и позволяя множеству клиентов получать выгоды от способностей сервера собирать информацию.
Клиент и сервер осуществляют связь друг с другом, используя функциональные возможности, предоставляемые уровнем протокола. К примеру, гипертекстовый транспортный протокол (ГТТП) (НТТР) является общим протоколом, который используется в связи со всемирной паутиной (WWW). Как правило, компьютерный сетевой адрес, такой как унифицированный указатель ресурсов (УУР) (URL), или адрес межсетевого протокола (IP) используется, чтобы идентифицировать серверный или клиентский компьютеры друг для друга. Сетевой адрес можно называть адресом УУР. Например, связь может обеспечиваться по среде передачи данных. В частности, клиент и сервер могут соединяться друг с другом через соединения TCP/IP для связи с высокой пропускной способностью.
Таким образом, фиг.3А иллюстрирует примерную сетевую или распределенную среду с сервером, осуществляющим связь с клиентскими компьютерами через сеть/шину. В этой среде может применяться настоящее изобретение. Более подробно ряд серверов 10а, 10b и т.д. соединяются друг с другом через сеть/шину 14, которая может быть локальной сетью, глобальной сетью, корпоративной сетью, Интернетом и т.п. с несколькими клиентскими или удаленными вычислительными устройствами 110, 110b, 110c, 110d, 110е и т.д., такими как портативный компьютер, карманный компьютер, тонкий (простой) клиент, сетевое приложение, или иным устройством, таким как видеомагнитофон (VCR), телевизор, печь, светильник, нагреватель и т.п. в соответствии с настоящим изобретением. Тем самым подразумевается, что настоящее изобретение можно применить к любому вычислительному устройству, в связи с которым желательно обрабатывать графический объект(ы).
В сетевой среде, в которой сеть/шина 14 передачи данных является Интернетом, к примеру, серверы 10а, 10b и т.д. могут быть Web-серверами, с которыми клиенты 110а, 110b, 110c, 110d, 110е и т.д. осуществляют связь посредством любого числа известных протоколов, таких как НТТР. Серверы 10а, 10b и т.д. тоже могут обслуживать клиентов 110а, 110b, 110c, 110d, 110е и т.д., что может быть характерным для распределенной вычислительной среды. Связи могут быть проводными или беспроводными, как удобнее. Клиентские устройства 110а, 110b, 110c, 110d, 110е и т.д. могут или не могут осуществлять передачи по сети/шине 14 связи и могут иметь связанные с ними независимые передачи. Например, в случае телевизора или видеомагнитофона может иметься или отсутствовать сетевой аспект для управления. Каждый клиентский компьютер 110а, 110b, 110c, 110d, 110е и т.д. и серверный компьютер 10а, 10b и т.д. могут быть снабжены разными прикладными программными модулями или объектами 135 и со связями или доступом к различным типам элементов или объектов хранения, в которых могут сохраняться файлы или в которые можно загрузить или переместить части файлов. Любой компьютер 10а, 10b, 110а, 110b и т.д. может отвечать за поддержание и обновление базы 20 данных или иного элемента хранения в соответствии с настоящим изобретением, такого как база или память 20 данных для сохранения графического объекта(ов) или промежуточного графического объекта(ов) или данных, обработанных в соответствии с изобретением. Таким образом, настоящее изобретение можно использовать в компьютерной сетевой среде, имеющей клиентские компьютеры 110а, 110b и т.д., которые могут обращаться и взаимодействовать с компьютерной сетью/шиной 14, и серверные компьютеры 110а, 110b и т.д., которые могут взаимодействовать с клиентскими компьютерами 110а, 110b и т.д. и другими подобными устройствами, и базы 20 данных.
Примерное вычислительное устройство
Фиг.3В и последующее обсуждение предоставляют краткое общее описание подходящей вычислительной среды, в которой может быть реализовано изобретение. Следует иметь в виду, однако, что карманные, портативные и другие вычислительные устройства и вычислительные объекты всех видов также могут быть использованы в связи с настоящим изобретением, как описано выше. Хотя ниже описывается универсальный компьютер, это отнюдь не единственный пример, и настоящее изобретение может быть реализовано тонким клиентом с возможностью сетевой/шинной совместной работы и взаимодействия. Таким образом, настоящее изобретение может быть реализовано в среде сетевых услуг, выполняемых под управлением главной программы, в которую вовлечены очень малые или минимальные клиентские ресурсы, например сетевая среда, в которой клиентское устройство служит всего лишь в качестве интерфейса с сетью/шиной, такой как объект, помещенный в бытовое электронное оборудование. В сущности, что угодно, где могут сохраняться или откуда могут извлекаться данные, является желательной или пригодной средой для работы методов графического конвейера по изобретению.
Хотя это и не требуется, изобретение может быть реализовано посредством операционной системы для использования разработчиком услуг для устройства или объекта и/или включено в прикладное программное обеспечение, которое работает в связи с промежуточными адресатами по изобретению. Изобретение также относится к созданию средств затенения (программному продукту построения теней) вершин и пиксельного затенения и для взаимодействия с промежуточными адресатами по изобретению. Программное обеспечение может быть описано в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемые одним или более компьютерами, такими как клиентские рабочие станции, серверы или другие устройства. В общем, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задачи или воплощают конкретные типы абстрактных данных. Как правило, функциональные возможности программных модулей могут комбинироваться или распределяться, как это желательно в различных вариантах выполнения. Кроме того, специалистам должно быть понятно, что изобретение может функционировать с другими конфигурациями компьютерных систем. Другие общеизвестные вычислительные системы, среды и/или конфигурации, которые могут быть пригодны для использования с настоящим изобретением, включают в себя, но не ограничиваются ими, персональные компьютеры (ПК) (РС), банковские автоматы, серверные компьютеры, карманные или компактные устройства, многопроцессорные системы, основанные на микропроцессорах системы, программируемую пользовательскую электронику, сетевые ПК, бытовую технику, светильники, элементы контроля за окружающей средой, миникомпьютеры, большие ЭВМ (мейнфреймы) и т.п. Изобретение можно также реализовать в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны через сеть/шину передачи данных или иную среду передачи данных. В распределенной вычислительной системе программные модули могут располагаться как в локальных, так и в удаленных компьютерных носителях для хранения данных, в том числе в устройствах памяти/хранения, а клиентские узлы могут, в свою очередь, выполнять функции серверных узлов.
Фиг.3В, таким образом, иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано настоящее изобретение, хотя, как пояснено выше, среда 100 вычислительной системы является всего лишь одним примером подходящей вычислительной среды и не предназначена для какого-либо ограничения объема или функциональных возможностей изобретения. Не следует интерпретировать вычислительную среду 100 как имеющую какую бы то ни было зависимость или требование, относящиеся к любому компоненту или комбинации компонентов, проиллюстрированных в примерной операционной среде 100.
На фиг.3В примерная система для реализации изобретения включает в себя универсальное вычислительное устройство в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничиваться ими, блок 120 обработки, системную память 130 и системную шину 121, которая связывает разные системные компоненты, в том числе системную память с блоком 120 обработки. Системная шина 121 может быть любой из нескольких типов шинных структур, в том числе контроллером шины или памяти, периферийной шиной и локальной шиной, использующей любую из множества шинных архитектур. В качестве примера, а не ограничения такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (МСА), усовершенствованную шину ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину интерфейса периферийных устройств (PCI) (известную также как шина расширения).
Компьютер 110, как правило, включает в себя множество машиночитаемых носителей. Машиночитаемый носитель может быть любым доступным носителем, к которому может обращаться компьютер 110, и включает в себя как энергозависимые, так и энергонезависимые носители, съемные и несъемные носители. В качестве примера, а не ограничения машиночитаемый носитель может содержать компьютерную запоминающую среду и среду связи. Компьютерная запоминающая среда включает в себя как энергозависимую, так и энергонезависимую, съемную и несъемную среду, реализованную любым способом, или технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули и другие данные. Компьютерная запоминающая среда включает в себя, но не ограничивается ими, ОЗУ (RAM), ПЗУ (ROM), ЭСППЗУ (EEPROM), технологию флэш-памяти или другой памяти, ПЗУ-КД (CDROM), многоцелевой цифровой диск (МЦД) (DVD) или любую другую память на оптическом диске, магнитные кассеты, магнитную ленту, память на магнитном диске или другие устройства магнитной памяти либо любой иной носитель, который можно использовать для хранения желательной информации и к которому может обращаться компьютер 110. Среда связи, как правило, воплощает в себе машиночитаемые команды, структуры данных, программные модули или иные данные в модулированном данными сигнале, таком как несущее колебание или другой транспортный механизм, и включает в себя любую среду доставки информации. Выражение "модулированный данными сигнал" означает сигнал, который имеет одну или более характеристик, установленных или измененных так, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения среда связи включает в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная, инфракрасная и другие беспроводные среды. Комбинации любых из вышеуказанных сред также должны включаться в объем машиночитаемых сред.
Системная память 130 включает в себя машиночитаемую среду в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода-вывода (БСВВ) (BIOS), содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютера 110, как во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые сразу же доступны для работы и/или используются в данный момент в блоке 120 обработки. В качестве примера, а не ограничения фиг.2В иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/несъемные энергозависимые/энергонезависимые компьютерные запоминающие среды. Только в качестве примера фиг.3В иллюстрирует дисковод 141 жесткого диска, который считывает с или записывает на несъемный энергонезависимый магнитный носитель, дисковод 151 магнитного диска, который считывает с или записывает на съемный энергонезависимый магнитный диск 152, и дисковод 155 оптического диска, который считывает с или записывает на съемный энергонезависимый оптический диск 156, такой как ПЗУ-КД или иной оптический носитель. Другие съемные/несъемные энергозависимые/энергонезависимые компьютерные запоминающие среды, которые можно использовать в примерной рабочей среде, включают в себя, но не ограничиваются ими, магнитные кассеты, карты флэш-памяти, цифровые многоцелевые диски, цифровые видеоленты, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Дисковод 141 жесткого диска, как правило, соединяется с системной шиной 121 через интерфейс несъемной памяти, такой как интерфейс 140, а дисковод 151 магнитного диска и дисковод 155 оптического диска, как правило, соединяются с системной шиной 121 посредством интерфейса съемной памяти, такого как интерфейс 150.
Дисководы и связанные с ними компьютерные запоминающие среды, обсуждавшиеся выше и проиллюстрированные на фиг.3В, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 110. На фиг.3В, к примеру, дисковод 141 жесткого диска иллюстрируется как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Отметим, что эти компоненты могут быть либо одними и теми же, либо отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 здесь даны другие ссылочные позиции для иллюстрации того, что они, как минимум, являются разными копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и координатно-указательное устройство 161, обычно называемое мышью, трекболом или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком 120 обработки через интерфейс 160 пользовательского ввода, который связан с системной шиной 121, но может подключаться и иными интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Графический интерфейс 182, такой как Northbridge, может также подключаться к системной шине 121. Northbridge является интерфейсом, который осуществляет связь с блоком обработки или главным блоком 120 обработки и обеспечивает связь через ускоренный графический порт (AGP). Один или более блоков 184 графической обработки (БГО) (GPU) могут осуществлять связь с графическим интерфейсом 182. С этой точки зрения, БГО 184 в общем случае включают в себя встроенную память, такую как регистровая память, и БГО 184 осуществляют связь с видеопамятью 186, в которой могут быть реализованы промежуточные адресаты по изобретению. БГО 184, однако, является не единственным примером сопроцессора, и, таким образом, множество сопроцессорных устройств могут быть включены в компьютер 110 и могут включать в себя множество процедурных средств затенения, таких как средства затенения вершин и пикселов. Монитор 191 или другой тип отображающего устройства также соединяется с системной шиной 121 посредством интерфейса, такого как видео интерфейс 190, который, в свою очередь, может осуществлять связь с видеопамятью 186. В дополнение к монитору 191 компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут соединяться через интерфейс 195 периферийных устройств вывода.
Компьютер 110 может работать в сетевой или распределенной среде, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Этот удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и, как правило, включает в себя многие или все элементы, описанные выше по отношению к компьютеру 110, хотя на фиг.3В проиллюстрировано только запоминающее устройство 181. Логические соединения, представленные на фиг.3В, включают в себя локальную сеть (ЛС) (LAN) 171 и глобальную сеть (ГС) (WAN) 173, но могут также включать в себя и другие сети/шины. Такие сетевые среды распространены в домах, офисах, компьютерных сетях предприятий, корпоративных сетях и Интернете.
При использовании в сетевой среде ЛС компьютер 110 соединяется с ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи по ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может соединяться с системной шиной 121 посредством интерфейса 160 пользовательского ввода или другим подходящим механизмом. В сетевой среде программные модули, показанные отнесенными к компьютеру 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера, а не ограничения, фиг.3В иллюстрирует удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Понятно, что показанные сетевые соединения являются примерными, и что можно использовать другие средства установления линии связи между компьютерами.
Примерные распределенные вычислительные оболочки или архитектуры
Различные распределенные вычислительные оболочки разработаны и разрабатываются в свете сближения персональных компьютеров и Интернета. Индивидуальные, а равным образом и деловые пользователи снабжены интерфейсом, обеспечивающим одновременно как взаимодействие, так и доступ к Интернету, для приложений и вычислительных устройств, что способствует тому, что вычислительные действия во всевозрастающей мере становятся ориентированными на Web-браузеры и сети.
К примеру, платформа MICROSOFT®'s.NET включает в себя серверы, услуги стандартных блоков, такие как программное обеспечение хранения данных и загружаемых устройств на базе всемирной паутины. Вообще говоря, платформа.NET обеспечивает (1) способность создавать полный диапазон вычислительных устройств, работающих совместно, и автоматически обновлять пользовательскую информацию и синхронизировать ее со всеми ими, (2) увеличенные интерактивные возможности для Web-сайтов за счет более широкого использования XML, а не HTML, (3) услуги в реальном времени, которые отличаются ориентированным на пользователя доступом и доставкой продуктов и услуг пользователю из центрального исходного пункта для управления множеством приложений, таких как электронная почта, к примеру, или программное обеспечение, такое как Office.NET, (4) централизованное хранение данных, что увеличивает эффективность и легкость доступа к информации, равно как и синхронизацию информации среди пользователей и устройств, (5) способность объединять различные среды передачи данных, такие как электронная почта, факсы и телефоны, (6) для разработчиков - способность создавать повторно используемые модули, благодаря чему возрастает производительность и снижается число программных ошибок, и (7) многие другие характеристики межплатформенной интеграции.
Хотя примерные варианты выполнения описаны здесь в связи с программным обеспечением, находящимся в вычислительном устройстве, одна или более частей изобретения могут также быть реализованы посредством операционной системы, интерфейса прикладной программы (ИПП) (API) или объектом-"посредником" между сопроцессором и запрашивающим объектом, так что услуги по управляемой дискретизации текстуры могут выполняться посредством всех языков или услуг.NET, поддерживаться ими или быть доступными через них, равно как и других распределенных вычислительных оболочек. В дополнение к этому, другой аспект изобретения - это сами промежуточные адресаты, находящиеся в видеопамяти, а также графическая архитектура, которая разрешает процедурным средствам затенения принимать программы из ИПП и переносить их к различным промежуточным адресатам.
Многократная циркуляция промежуточных адресатов
Системы и способы согласно изобретению обеспечивают создание языка высокого уровня для абстрактного и упрощенного использования возможностей программирования в связи с эволюцией программируемого в общем виде графического конвейера. Изобретение тем самым создает платформу, которая обеспечивает намного более широкий диапазон графических методов, которые могут быть выражены разработчиком, но выполняются на очень высоких качественных уровнях графическим аппаратным обеспечением.
Графические платформы, которые не имеют рециркуляции промежуточных адресатов в соответствии с изобретением, ограничены в размерах и сложности программ, которые работают на попиксельном и повершинном уровне с точки зрения качества, в том, что требуются дополнительные прогоны по данным для достижения того же результата. К примеру, некоторые программы, которые реализуют эффекты освещения или подобные преобразования, без использования настоящего изобретения ограничены до графики не реального времени из-за сложности и/или длины используемой программы. Как иллюстрируется на фиг.4, относительно сложная программа ПЗ (SP) затенения превышает максимальный предел команд для используемого аппаратного обеспечения, например, средства пиксельного затенения, и, соответственно, если разработчик не использует изобретение, то ему остается реализовывать это преобразование посредством главного процессора, который может не обеспечить достаточное быстродействие для потребностей режима реального времени. Посредством использования промежуточных адресатов АМР1 и АМР2, которые могут иметь переменные размеры в соответствии с изобретением, разработчик может фактически дробить программу ПЗ на части ЧПЗ1, ЧПЗ2 и ЧПЗ3 (SPP), ни одна из которых не превышает предел команд для аппаратного обеспечения, но которые совместно выполняют функции ПЗ путем выведения и повторного использования промежуточных результатов. Например, ЧПЗ1 выводит промежуточные результаты в промежуточный адресат АМР1, который служит в качестве входа в программную часть ЧПЗ2, которая затем выводит промежуточные результаты в промежуточный адресат АМР2, который, в свою очередь, служит в качестве входа для программной части ЧПЗ3, которая затем выводит желательные преобразованные данные. Изобретение может, таким образом, использоваться для создания программ с виртуально неограниченной длиной, которые обеспечивают визуализацию не в реальном времени с помощью аппаратного ускорения. Доступность неограниченной аппаратно ускоренной рециркуляции для приложений визуализации не в реальном времени в соответствии с изобретением увеличивает, таким образом, скорость и эффективность графической платформы.
Кроме того, способность рециркулировать данные в АМР для любой программы в качестве ввода любое число раз означает, что любая программа может обеспечивать итеративные операции и повторное использование промежуточных данных без повторных вычислений. Далее, формат данных в промежуточных адресатах устанавливается разработчиком так, что АМР1 может включать в себя данные красного, зеленого и синего цветов, но АМР2 может включать в себя данные, совершенно не относящиеся к цвету, например, эти данные могут иметь дело со сложными функциями положения, или весом. Так же, как упомянуто выше, размер буферов, т.е. величина данных, хранящихся в промежуточных адресатах, может устанавливаться изменяемым для переменной величины разрешения для графических данных.
Как используется здесь, адресаты многократной рециркуляции (АМР) (MRT) по изобретению являются текстурами, которые используются в качестве буферов. Эти буферы могут использоваться в качестве вводов в попиксельную программу, обычно именуемую "средством пиксельного затенения", и выводов из нее. Программа затенения единственного пиксела может одновременно осуществлять ввод из любого числа этих АМР в виде текстур при выводе в любое число других АМР, которые представляются адресатами визуализации. Число этих отличающихся буферов ограничивается только аппаратным обеспечением и размером видеопамяти, и, таким образом, эти буферы могут быть весьма многочисленными.
Примерные компоненты по изобретению включают в себя: (1) программу(ы) пиксельного затенения, которая способна дискретизировать текстуру и выводить ее в АМР в дополнение к любому конечному дополнительному выводу кадрового буфера, и (2) буфер(ы) рециркуляции, который может быть связан с программой(ами) пиксельного затенения в качестве адресатов визуализации для вывода или текстур для ввода.
Неограничивающие варианты осуществления
Отсюда следуют неограничивающие программные реализации изобретения, которые используют вышеуказанные компоненты изобретения. В этом отношении изобретение выражает АМР, по меньшей мере, в двух видах, чтобы адаптировать изменения в аппаратном обеспечении. Эти реализации включают в себя форму, описанную как форма МЭА (многоэлементный адресат) (МЕТ), и форму, описанную как форма АМР. Форма МЭА является более простой формой. В этом случае промежуточные выводы четырех компонентов, в общем связанные с элементом цвета, записываются в единственную поверхность перемежающимся образом. В случае АМР отдельные элементы цвета могут быть связаны с индивидуальными поверхностями по отдельности. Эти поверхности могут изменяться по формату для каждого элемента цвета таким образом, который является оптимальным для метода, выражаемого программой пиксельного затенения.
Неограничивающий ИПП МЭА
Для целей ИПП МЭА традиционные текстуры рассматриваются в качестве текстур из единственного элемента, что дает возможность записывать множество элементов текстуры одновременно из средства пиксельного затенения, так что в следующем прогоне визуализации приложение может использовать один или более из этих элементов в качестве текстуры единственного элемента, т.е. в качестве вводов в средство пиксельного затенения. Эти дополнительные элементы можно мыслить как временное хранение для промежуточных результатов, которые будут использоваться этим приложением в более поздних прогонах. Примерное неограничивающее использование многоэлементных адресатов (МЭА) иллюстрируется блок-схемой алгоритма псевдокода на фиг.5. На шаге 500 приложение обнаруживает поддержку для промежуточных адресатов путем проверки на доступность форматов МЭА. На шаге 510 приложение создает поверхности МЭА путем вызова функции СоздатьПоверхность (CreateSurface). На шаге 520 приложение устанавливает МЭА как АдресатВизуализации (RenderTarget) посредством вызова функции УстановитьАдресатВизуализации (SetRenderTarget). Средство 230 пиксельного затенения осуществляет вывод на поверхности с помощью команд перемещения. На шаге 530 вызывается функция УстановитьТекстуру (SetTexture), чтобы установить поверхность МЭА в конкретную стадию. Как и другие текстуры, одна и та же поверхность может устанавливаться сразу во множество стадий. На шаге 540 вызывается функция УстановитьСостояниеДискретизатора (SetSamplerState), чтобы установить переменную D3DSAMP_ELEMENTINDEX на соответствующее число элементов в текстуре МЭА, из которой берет выборки дискретизатор, причем значение по умолчанию для состояния дискретизатора равно 0, что означает, что будут работать текстуры не-МЭА. Вызов функции УдостоверитьУстройство (ValidateDevice) уведомляет об установке этого состояния на неподходящее число, например, если МЭА имеет ширину всего лишь два элемента, а дискретизатор запрашивается о выборке из четвертого элемента.
Нижеследующее является неограничивающим ИПП, который поддерживает признак МЭА. Имеются форматы поверхности, подобные показанным ниже, которые выражают перемежаемость формата. // Перемеженные форматы поверхности, которые может поддерживать карта
D3DFMT_MULTI2_ARGB8=MAKEFOURCC('M','E','T','1'),
D3DFMT_MULTI4_ARGB8=MAKEFOURCC('M','E','T','2')
//Состояние дискретизатора, чтобы указывать, какой выбирается элемент.
D3DSAMP_ELEMENTINDEX
//Состояния визуализации
//D3DRS_COLORWRITEENABLE применяется для использования нулевого адресата (или элемента).
D3DRS_COLORWRITEENABLE1
D3DRS_COLORWRITEENABLE2
D3DRS_COLORWRITEENABLE3
//Конкретные характеристики дополнительных устройств
D3DPMISCСAPS_INDEPENDENTWRITEMASKS // Истинно, если устройство может поддерживать независимые маски записи
Неограничивающий ИПП адресатов многократной (визуализации) (АМВ)
Многие реализации поддерживают менее ограниченную форму МЭА, названную здесь АМВ. Одним таким условием является возможность независимого создания адресов многократной визуализации. Эти визуализации могут иметь различные форматы. В настоящее время некоторые графические трехмерные ИПП поддерживают адресат однократной визуализации, который может устанавливаться посредством ранее существовавшего ИПП УстановитьАдресатВизуализации. В соответствии с изобретением точка входа этого ИПП расширена для одновременного представления адресатов многократной визуализации в устройстве. Новая характеристика выражает эту способность.
Нижеследующие регистры oCn представляют примерные различные элементы текстуры МЭА: (а) оС0: Цвет 0 (элемент 0), (б) оС1: Цвет 1 (элемент 1), (в) оС2: Цвет 2 (элемент 2), (г) оС3: Цвет 3 (элемент 3) и (д) оГлубина (oDepth): Новое значение глубины для проверки глубины буфера эталонной глубины. В регистры оСх может осуществляться запись с помощью команды.
Примерный неограничивающий псевдокод для ИПП АМВ таков:
IDirect3DDevice9::SetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9*pRenderTarget);
IDirect3DDevice9::GetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9**ppRenderTarget);
//Конкретная характеристика устройства
D3DCAPS9.NumSimultaneousRTs // 1 для всех, кроме тех, которые поддерживают этот признак. Никогда не 0.
//Команда переместить
Переместить: mov
Формат маркера: 1 маркер опкода - D3DSIO_MOV (установить поле инстр. длины на: 2)
1 конечный маркер
1 исходный маркер
Команда: mov[_sat]dst[.mask],[-]src0[.swizzle]
Нижеследующее включает в себя примерное описание псевдокода для компонентного перемещения:
Операция: dst = src0
dst может быть r#/oC#/oDepth src0 может быть r#/c#/v#/t#
Примерное использование промежуточных адресатов
Фиг.6 иллюстрирует, что с промежуточными адресатами по изобретению может создаваться множество промежуточных адресатов в качестве выходов их пиксельного процессора с переменными участками памяти для информации в отличие от существующих методов пиксельной обработки. Кроме того, данные в промежуточных адресатах могут сохраняться бесконечно и, соответственно, могут повторно использоваться позже. Например, пикселы Р1-PN могут хранить значения R, G и В пикселов и помещаться в промежуточный адресат ПА1 (IT1). Пикселы PW-PZ могут хранить значения освещения и помещаться в промежуточный адресат ПА2, а пикселы PY и PZ могут хранить какой-нибудь другой промежуточный результат и помещаться в промежуточный адресат ПА3. Данные в каждом из промежуточных адресатов ПА1, ПА2 и ПА3 могут повторно использоваться той же самой или другими программами или частями программ, и таким образом может достигаться множество сложных эффектов затенения. Аппаратное обеспечение, например микросхема графики, включающая в себя средство затенения вершин и средство пиксельного затенения, осуществляет вывод в промежуточный адресат(ы) или ввод из него(них) в соответствии со спецификацией разработчика с помощью ИПП.
В качестве примера более сложной работы, которая может быть реализована в соответствии с изобретением, фиг.7 иллюстрирует промежуточный адресат АМР, который существует некоторое время и запрашивается как ввод для первого Прогона 1 программы, который принимает АМР1 в качестве ввода и выводит промежуточный адресат АМР2. Вслед за этим или перед этим Прогон2 программы получает АМР1 в качестве ввода и выводит промежуточный адресат АМР3. В дополнение к этому Прогон3 программы выводит промежуточный адресат АМР4 без ввода. Наконец, Прогон4 программы выполняет некую операцию, получая АМР2, АМР3 и АМР4 в качестве вводов для аппаратного обеспечения. Различные АМР используются, обеспечивая возможность нескольким пиксельным программам совместно использовать промежуточные данные более сложным образом. Это демонстрирует тот факт, что срок службы АМР находится всецело под управлением разработчика.
Иными словами, программа начинается с Прогона1. Данные считываются из АМР1 (который был создан некоторое время назад какой-то другой программой). Прогон1 исполняет некий программный алгоритм и вырабатывает АМР2. Прогон2 снова использует АМР1 и выполняет отличающийся алгоритм для выработки АМР3. Прогон3 алгоритмически генерирует АМР4 без ввода. Прогон4 (последний прогон) объединяет данные из АМР2, АМР3 и АМР4, чтобы в конце концов выдать корректные данные цвета в кадровый буфер, т.е. гораздо более сложный эффект затенения, чем тот, который можно реализовать графическим аппаратным обеспечением с ограничениями существующего уровня техники.
Имеется несколько путей реализации настоящего изобретения. Один путь состоит в обеспечении реализации, при которой сопроцессор(ы), например БГО, изготавливаются заранее для реализации функций согласно изобретению и принимают команды, пригодные для множества адресатов промежуточных, как описывается здесь. Другая реализация изобретения включает в себя подходящий ИПП, инструментальный набор, управляющий код, операционную систему, автономный или загружаемый программный объект и т.п., что позволяет приложениям и услугам использовать промежуточные адресаты для достижения более сложных функциональных возможностей. Изобретение подразумевает использование изобретения с точки зрения ИПП (или иного программного объекта), микросхемы графики и видеопамяти. Таким образом, различные реализации изобретения, описанные здесь, имеют аспекты, которые являются полностью аппаратными, частично аппаратными, а частично программными, а также программными.
Как упомянуто выше, хотя примерные варианты осуществления настоящего изобретения описаны в связи с различными вычислительными устройствами и сетевыми архитектурами, основополагающие принципы могут применяться к любым вычислительным устройству или системе, в которых желательно программировать процедурные средства затенения нетривиальными путями. Таким образом, методы обеспечения улучшенной программируемости процедурных средств затенения в соответствии с настоящим изобретением могут применяться ко множеству приложений и устройств. Например, алгоритм(ы) по изобретению могут применяться к операционной системе вычислительного устройства, предусмотренной в качестве отдельного объекта в устройстве, в качестве другого объекта, в качестве загружаемого с сервера объекта, в качестве "посредника" между устройством или объектом и сетью, в качестве распределенного объекта и т.д. Хотя примерные языки программирования, названия и примеры выбраны здесь как репрезентативные для различных вариантов выбора, эти языки, названия и примеры не предназначены для ограничения. Специалисту понятно, что имеется множество путей обеспечения объектного кода, который достигает тех же самых, подобных или эквивалентных функциональных возможностей, достигнутых посредством ИПП согласно изобретению.
Различные методы, описанные здесь, могут быть реализованы в связи с аппаратным или программным обеспечением или, если удобно, с комбинацией их обоих. Таким образом, способы и устройства по настоящему изобретению либо их определенные аспекты или части могут иметь вид программного кода (т.е. команд), воплощенных в материальных средах, таких как гибкие дискеты, ПЗУ-КД, дисководы на жестких дисках или любой иной машиночитаемый носитель, при этом, когда программный код загружается в машину, такую как компьютер, и исполняется ею, эта машина становится устройством для осуществления изобретения. В случае исполнения программного кода в программируемых компьютерах вычислительное устройство будет в общем случае включать в себя процессор, считываемую процессором запоминающую среду (в том числе энергозависимые и энергонезависимые элементы памяти и/или хранения), по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Одна или более программ, которые могут использовать услуги промежуточных адресатов по настоящему изобретению, например, через использование ИПП обработки данных или тому подобное, предпочтительно реализуются в высокоуровневом процедурно или объектно ориентированном языке программирования, чтобы осуществлять связь с компьютерной системой. Однако программа(ы) может быть реализована и в ассемблере или машинном языке, если это желательно. В любом случае язык может быть компилированным или интерпретированным языком и комбинироваться с аппаратными вариантами реализации.
Способы и устройства по настоящему изобретению могут также осуществляться с помощью связей, реализованных в виде программного кода, который передается по некоторой среде передачи, такой как электрическая проводка или кабели, через волоконную оптику или посредством любого иного вида передачи, при этом когда программный код принимается и загружается или исполняется в машине, такой как СППЗУ, вентильная матрица, устройство программируемой логики (УПЛ) (PLD), клиентский компьютер, видеомагнитофон или тому подобное, либо в приемной машине, имеющей возможности обработки сигналов, как описано в примерных вариантах осуществления, приведенных выше, эта машина становится устройством для осуществления изобретения. При реализации в универсальном компьютере программный код объединяется с процессором для получения уникального устройства, которое работает для создания функциональных возможностей настоящего изобретения. В дополнение к этому, любые методы хранения, используемые в связи с настоящим изобретением, могут в неизменном виде быть комбинацией аппаратного и программного обеспечения.
Хотя настоящее изобретение описано в связи с предпочтительными вариантами осуществления, иллюстрируемыми различными чертежами, следует иметь в виду, что могут использоваться и другие подобные варианты осуществления либо в описанном варианте осуществления могут быть сделаны модификации и добавления для выполнения той же самой функции по настоящему изобретению без отклонения от него. К примеру, хотя примерные сетевые среды по изобретению описываются в контексте сетевой среды, такой как одноранговая сетевая среда, специалисту должно быть понятно, что настоящее изобретение не ограничивается им и что способы, как описано в настоящей заявке, могут применяться к любому вычислительному устройству или среде, такому как игровая консоль, ручной компьютер, портативный компьютер и т.д., проводному или беспроводному, и может применяться к любому числу таких вычислительных устройств, соединенных сетью связи и взаимодействующих по этой сети. Далее следует подчеркнуть, что подразумеваются множество компьютерных платформ, в том числе операционные системы портативных устройств и другие специфичные для приложений операционные системы, в особенности по мере того, как число беспроводных сетевых устройств продолжает увеличиваться. Кроме того, настоящее изобретение может быть воплощено во множестве микросхем или устройств обработки, а хранение может аналогично выполняться на множестве устройств. Поэтому настоящее изобретение не должно ограничиваться любым единственным вариантом осуществления, а должно толковаться в соответствии с сущностью и объемом согласно формуле изобретения.
Класс G06T1/60 управление памятью