WWDC 2014: Вспоминая QuickDraw 3D

Может показаться что попытки разработать собственный процессор в 80-е и создать свою технологию 3D-графики в 90-е – явления одного порядка. А в новом веке Apple наступила на те же грабли, но с совершенно другим результатом. Так ли это? На пресс-конференции по случаю открытия WWDC 2014 Apple представила Metal, скромно и почти оправдываясь: OpenGL мешает разработчикам игр для iOS реализовывать полет их фантазии, и вот – Metal. В ряде случаев он оказывается в 10 раз эффективнее чем OpenGL, он менее требователен к ресурсам, в iOS он и в самом деле уместнее чем OpenGL ES. И ни слова про QuickDraw 3D.

WWDC 2014: Вспоминая QuickDraw 3D. Фото.

Я ни разу не эксперт по 3D-графике, но в начале нулевых в нескольких “эпизодах” одного из проектов живая трехмерная графика просто напрашивалась. Того же эффекта можно было добиться с помощью заранее нарисованных картинок – но их требовалось слишком много. И я попробовал.

В предисловии одного из учебников по регулярным выражениям (Regular Expressions, они же RegExp, а не то что некоторые могли бы подумать) было замечательное утверждение: “если вы не владеете RegExp и у вас проблема которую нужно решать с их помощью, то у вас уже две проблемы”.

Про OpenGL можно сказать то же самое. Как и про многие другие “палочки-выручалочки”. Проект завершился преждевременно, по независящем от разработчиков причинам, весь мой опыт в OpenGL – месяца полтора ученичества, в свободное от основной работы время. Что-то стало получаться, но экспертом я не стал.

Тогда же я обнаружил и “третью проблему” – Quesa. Проект с открытым исходным кодом, почти полностью повторяющий QD3D (это сокращение от QuickDraw 3D, если кто не понял), написанный той же командой что создавала его в Apple. “Доморощенная 3D-графика”, как ни странно, на фоне OpenGL смотрелась как Mac на фоне PC.

Quesa (как и QD3D) во многом уступала OpenGL, но не фатально – все это было устранимо и решаемо. А её достоинства были уникальны. Про QD3D обязательно надо вспомнить.

Это продолжение серии про WWDC 2014, предыдущие части здесь:

Первая часть: WWDC 2014: по версии Apple, 25-я WWDC.

1999

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

На январском MacWorld 1999 года Apple официально и окончательно поставила крест на QuickDraw 3D и его низкоуровневой составляющей RAVE (это Renderer Acceleration Virtual Engine, что-то вроде OpenGL): в Mac OS X эти технологии не войдут.

“Используйте OpenGL” – сказал Стив.

Решение было встречено аплодисментами: программисты, особенно те кто писал игры, от QuickDraw 3D были не в восторге. OpenGL уже считался стандартом 3D-графики на всех заслуживающих внимания платформах, доля рынка у Apple Computer была ничтожной, и даже если бы возможности QD3D на игровом поле были сопоставимы с возможностями OpenGL, желающих изучать еще одну нетривиальную технологию было бы немного.

Для написания игр QD3D не подходил. Его техническое задание преследовало иные цели, необходимая для игр скорость отрисовки оказалась в самом конце списка приоритетов.

Разработчики QD3D были уволены, а их детище, в которое они вложили душу и лучшие годы жизни, остались собственностью Apple. Исходный код в том числе. Столько всего осталось нереализованным! Обычная история, увы.

Летом 1999 года на свет появился проект с открытым исходным кодом Quesa (есть такой город в Валенсии), организованный бывшими разработчиками QuickDraw 3D. В проекте не было ни единой строчки из запретного для них QuickDraw 3D, но оригиналу он ни в чем не уступал. Такое тоже случается, но очень нечасто. Значит, что-то во всем этом было.

Проект Quesa тихо скончался в 2008 году. Если у вас другие сведения – пишите.

1995

Разработку QuickDraw 3D (тогда еще не имевшего названия) поручили подразделению QuickTime. Целью проекта было создание 3D-технологии, позволяющей промышленным программистам включать в программы для обычных компьютеров (не для рабочих станций) трехмерные интерфейсные элементы.

В группе продвинутых технологий (ATG) работали над концепцией 3-мерного интерфейса. О чем-то похожем писал в своих работах Джеф Раскин, идея носилась в воздухе – в ATG её попытались воплотить, и обнаружили что ни PHIGS (Programmer’s Hierarchical Interactive Graphics Standard), ни OpenGL (возможно, в то время еще Iris GL, разработка компании Silicon Graphics), с массовыми компьютерами начала 90-х несовместимы в принципе.

Когда-нибудь (например, с 4-ядерным RISC-процессором от Apple внутри) и у компьютеров для обычных Mac’овских пользователей появятся такие возможности, но мир нужно было поразить здесь и сейчас.

Кроме того, Apple Computer с восторгом тратила деньги. 3-мерный интерфейс – это очень впечатляюще. А нестандартно мыслящие и талантливые (что не одно и то же) инженеры вставали в очередь у дверей отдела кадров компании, и им было из кого выбирать. Так или иначе, на MacWorld 1995 года компания представила первую версию 3D-графики своей собственной разработки.

Как и убийству QuickDraw 3D в 1999 году, в 1995 его рождению устроили овацию.

Заслуживал ли этот проект случившегося с ним?

Обзорная экскурсия

WWDC 2014: Вспоминая QuickDraw 3D. Обзорная экскурсия. Фото.

QuickDraw 3D состоял из двух частей, верхнего (собственно QD3D) и нижнего уровня (RAVE). QD3D – это объектно-ориентированные API, организованные эргономично и даже элегантно, написанные на “чистом” C. Вы считаете что на C это невозможно? Вы не совсем правы, но спорить не буду. Пусть API будут объектно-ориентированными “псевдо”.

Уступая по тактико-техническим данным главному конкуренту (в 1995 OpenGL уже стал этим “главным конкурентом”), QD3D на голову превосходил его по простоте и легкости использования. Хороший программист, без ущерба для сроков, мог использовать QD3D и добиваться впечатляющих результатов.

Забавно: OpenGL, хулиганский и бунтарский проект Silicon Graphics, уступал прежнему лидеру в области 3D-графики PHIGS именно в этом. В 1995 с победы OpenGL над PHIGS прошло всего года три, и об этом еще очень хорошо помнили.

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

Гордо – но глупо. Гордость и глупость гораздо чаще идут рука об руку, чем считается. Но не будем отвлекаться.

О том что QD3D – кросс-платформенный продукт, почти никто не знал. О том что несмотря на простую для понимания и достаточно удобную для применения внешность QD3D еще и бесконечно изменяем – тоже.

Кто-то что-то писал, в каких-то СМИ – но вот маркетинговая машина Apple участия в этом не принимала.

Между тем это было абсолютной правдой. Собственно QuickDraw 3D был интерфейсом к низкоуровневому движку RAVE. При переносе на другие платформы перерабатывать надо было только движок.

Все, чем прославился OpenGL (загадочность, сложность, отсутствие ограничений) в RAVE было. Расширения добавленные в RAVE становились доступны на “верхнем этаже”, легко и просто. Достаточно большие компании с повышенными 3-мерными требованиями запросто могли найти персонал способный работать с RAVE, но об этом мало кто догадывался.

Если бы на развитие RAVE был реальный спрос, даже больная на всю голову Apple (в 1995-96 компания была опасно больна, это факт) не могла не отреагировать на это.

Судьба QuickDraw 3D вполне могла быть иной.

Продолжение следует

Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.

История AppleКонференция Apple