WWDC 2014: Згадуючи QuickDraw 3D

Може здатися, що спроби розробити власний процесор у 80-ті і створити свою технологію 3D-графіки в 90-ті - явища одного порядку. А в новому столітті Apple наступила на ті ж граблі, але з зовсім іншим результатом. Чи так це? На прес-конференції з нагоди відкриття WWDC 2014 Apple представила Metal, скромно і майже виправдовуючись: OpenGL заважає розробникам ігор для iOS реалізовувати політ їх фантазії, і ось - Metal. У ряді випадків він виявляється в 10 разів ефективніше ніж OpenGL, він менш вимогливий до ресурсів, в iOS він і справді доречніший ніж OpenGL ES. І ні слова про 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 90, розробка компанії SicilGL)

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

Крім того, Apple Computer із захопленням витрачала гроші. 3-мірний інтерфейс - це дуже вражаюче. А нестандартно мислячі і талановиті (що не одне і те ж) інженери вставали в чергу біля дверей відділу кадрів компанії, і їм було з кого вибирати. Так чи інакше, на MacWorld 1995 року компанія представила першу версію 3D-графіки своєї власної розробки.


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

Чи заслуговував цей проект того, що сталося з ним?

Оглядова екскурсія

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 цілком могла бути іншою.

Продовження слід

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

COM_SPPAGEBUILDER_NO_ITEMS_FOUND