Fahrenheit был попыткой создать унифицированный высокоуровневый API для 3D компьютерной графики , чтобы объединить Direct3D и OpenGL . Он был разработан в первую очередь Microsoft и SGI , а также включал в себя совместные разработки HP -Microsoft.
Direct3D и OpenGL — это низкоуровневые API, которые в первую очередь концентрируются на этапах рендеринга конвейера 3D- рендеринга . Программы, использующие эти API, должны предоставлять значительный объем кода для обработки остальной части конвейера. Fahrenheit надеялся предоставить единый API, который будет выполнять большую часть этой работы, а затем вызывать либо Direct3D, либо OpenGL для последних этапов.
Большая часть оригинального проекта Fahrenheit была заброшена, и Microsoft и SGI в конечном итоге отказались от попыток работать вместе. В конце концов, только часть графа сцены системы Fahrenheit, известная как XSG , увидела релиз и была вскоре прекращена.
В 1990-х годах OpenGL от SGI был фактическим стандартом для 3D-графики. До середины 90-х годов разные платформы использовали различные индивидуальные решения, но мощь SGI на графическом рынке в сочетании с усилиями Совета по обзору архитектуры OpenGL (ARB) привела к быстрой стандартизации OpenGL на большинстве графических рабочих станций . В середине 1990-х годов Microsoft лицензировала OpenGL для своей операционной системы Windows NT в качестве своей основной 3D-системы; Microsoft позиционировала NT как систему класса рабочих станций, и OpenGL требовался для того, чтобы быть реальным конкурентом в этой области. Первоначальная поддержка была выпущена в Windows NT Workstation версии 3.5 в 1994 году. [1]
Запутанным делом стало приобретение Microsoft RenderMorphics в феврале 1995 года . [2] Их продукт Reality Lab представлял собой 3D-библиотеку, написанную специально для игровых целей, нацеленную в первую очередь на рынок «низкого уровня». После переименования в Direct3D 3.0 , Microsoft выпустила его в качестве основного 3D API для Windows 95 и программирования игр. Это вызвало массовые дебаты как внутри Microsoft, так и за ее пределами о достоинствах двух API и о том, следует ли продвигать Direct3D. [3] [4] [5]
В середине 90-х годов SGI работала над серией усилий по предоставлению API более высокого уровня поверх OpenGL, чтобы сделать программирование проще. К 1997 году это превратилось в их систему OpenGL++ , API C++ с сохраненным режимом поверх OpenGL. Они предложили использовать модифицированную версию как единый API поверх OpenGL или нового высокопроизводительного API низкого уровня, над которым, как было известно, работала Microsoft (не на основе Reality Lab). Это не только скрыло бы детали реализации и сделало бы войну OpenGL/DirectX излишней, но и в то же время предложило бы значительно лучшие интерфейсы высокого уровня для более надежной объектно-ориентированной среды разработки.
Работа над OpenGL++ тянулась в ARB до 1997 года. Хотя SGI выделила ресурсы на проект, чтобы предоставить пример реализации, похоже, они были недовольны общим прогрессом и жаловались: «Было много работы, но относительно мало общения». [6] В частности, Microsoft недвусмысленно заявила, что не будет поддерживать эти усилия, и SGI посчитала, что их поддержка будет иметь важное значение для любых дальнейших усилий.
Совместный пресс-релиз в декабре 1997 года [7] и последовавшее за ним объявление на встрече ARB в начале 1998 года от SGI [8] объявили, что работа над OpenGL++ прекращена, и SGI объединилась с Microsoft для создания новой системы под кодовым названием «Fahrenheit». SGI должна была предоставить основной API «среднего размера», используемый в большинстве приложений, Fahrenheit Scene Graph , [9] а также модифицированную версию для обработки очень больших моделей из приложений CAD , Fahrenheit Large Model . Microsoft должна была предоставить новый низкоуровневый движок рендеринга для Windows, известный как Fahrenheit Low Level , по сути, замену версии Direct3D на основе Reality Lab. [10] Проект был официально анонсирован на SIGGRAPH 1998 для выпуска в конце 1999 или начале 2000 года. [11]
Fahrenheit стал основным направлением разработки в SGI. Их рабочие станции на базе MIPS быстро теряли лидерство по производительности, которое у них было в начале 1990-х, и компания столкнулась с серьезными проблемами, поскольку средний ПК медленно, но верно вторгался на рынок высокопроизводительной графики. SGI рассматривала Fahrenheit как стратегию выхода; после завершения они могли бы перейти на линейку на базе ПК, по-прежнему предлагая лучшие инструменты разработки для теперь универсального API. Хотя работа по портированию не началась, такие наборы инструментов, как Open Inventor и OpenGL Performer, в будущем должны были быть наложены на Fahrenheit, что означало, что они могли бы предоставить единую полностью функциональную систему разработки для Fahrenheit, когда она будет выпущена, поддерживая как своих существующих клиентов, так и новых. [10]
К 1999 году стало ясно, что Microsoft не намерена выпускать Low Level; хотя официально над ним и работали, на фактическое создание кода почти не было выделено ресурсов. [11] В то же время Microsoft была в процессе массированных инвестиций в DirectX 7.0 (похожий на 3.0 в основном только по названию). Без Low Level Fahrenheit не мог быть выпущен на Windows, и проект заглох. В конце концов SGI прекратила работу над Fahrenheit [12] и начала планировать другие продукты Scene Graph, которые стали последними в серии таких проектов.
К 2000 году DirectX 7.0 появился на рынке и оказался довольно популярным. DirectX стал основным API во время подъема 3D-игр в конце 1990-х годов. Microsoft выпустила Fahrenheit Scene Graph как XSG в том же году, но сделала это с примечанием о том, что он не будет поддерживаться. Новые версии XSG так и не были выпущены, и все страницы, связанные с Fahrenheit или XSG на веб-страницах Microsoft и SGI, с тех пор исчезли. Поддержка аппаратного ускорения OpenGL была исключена из включенных видеодрайверов в Windows XP , хотя большинство производителей видеокарт поставляют свои собственные реализации.
По сравнению с Open Inventor или Iris Performer , дизайн XSG включал некоторые новые идеи. Примитивы композиции и методы обхода позволяли приложениям конструировать сцены способом, наилучшим образом подходящим для структуры визуализируемых данных, а затем применять оптимизатор графа сцены для реструктуризации сцены для более эффективного рендеринга без изменения внешнего вида сцены. Разработчик просто делал то, что казалось естественным, и система быстро заставляла это работать.
Конвейерный рендеринг позволил многопоточному приложению построить сцену, отсеять ее примитивы и отрисовать ее в разных потоках (заимствовав из конвейера Performer app-cull-draw). Представление примитивных данных сцены было оптимизировано для минимизации объема хранимых данных, чтобы избежать их полного дублирования на поточной основе.
Одной из уникальных особенностей XSG была возможность заменить большинство встроенных методов обхода графа собственными версиями. Разработчики могли писать новые функции для быстрого обхода известных им методов хранения данных внутри XSG, а затем объединять их в существующие пути рендеринга.
Дэвид Блайт, главный архитектор Fahrenheit в SGI, до 2010 года работал в Microsoft над DirectX. Он также был главным архитектором графического программного обеспечения в Intel.