Знаете это чувство, когда вы покупаете новую навороченную видеокарту, запускаете свежий хит, и всё просто… работает? Без необходимости вручную прописывать прерывания звуковой платы в DOS или надеяться, что игра подружится с конкретной ревизией вашего процессора. Так вот, за этот тотальный комфорт и за то, что игровая индустрия вообще не застряла в текстурном средневековье, стоит сказать спасибо одному невидимому переводчику.
Его зовут DirectX. И это, пожалуй, самый важный и одновременно недооцененный слой цифрового пирога на вашем ПК.
Представьте, что вы решили написать игру. Перед вами сидит геймер, у которого в компьютере может стоять видеокарта от Nvidia или AMD, процессор от Intel, материнская плата от стороннего бренда и мышка вообще неизвестного происхождения. Каждое из этих железных устройств разговаривает на своем собственном, уникальном «языке» микрокоманд.
И как прикажете разработчику писать код? Создавать тридцать разных версий игры под каждую комбинацию железа? В начале 90-х примерно так и было. Игры писались под DOS, и программистам приходилось вручную копаться в регистрах видеокарт, чтобы просто заставить пиксель на экране загореться нужным цветом. Это был адский, монотонный труд.
Но тут пришла Microsoft и создала DirectX. По сути, это набор программных интерфейсов (API), который выполняет роль универсального дипломата. Он встал ровно посередине между игрой и железом.
Теперь разработчику не нужно знать, как устроена конкретная плата внутри вашего системника. Он просто говорит DirectX: «Сделай мне взрыв вот в этой точке экрана». А DirectX уже сам переводит эту команду на язык, понятный конкретно вашей видеокарте. Игры стали независимы от капризов железа, а железные бренды получили свободу улучшать свои чипы, не боясь, что старые игры на них сломаются.
Давайте развернем этот таймлайн и посмотрим, сквозь какие тернии Microsoft пробивала дорогу к нашему игровому настоящему. Это не была история гладкого успеха — скорее, череда отчаянных попыток обуздать хаос.
Как ковался DirectX.
1. Зарождение в подвалах: DirectX 1.0 – 3.0 (1995–1996).
В середине девяностых Windows 95 козыряла перед пользователями удобным рабочим столом и кнопкой «Пуск», но для хардкорных геймеров она оставалась бесполезной надстройкой. Игры безраздельно правили в суровой империи DOS. Там разработчики могли крутить железом ПК как хотели, выжимая из него последние соки без посредников. Windows же с её жесткой системой безопасности просто не подпускала программы напрямую к видеокартам и звуковым платам. Игры безбожно тормозили.
И тогда трое инженеров-бунтарей из Microsoft — Крейг Эйслер, Алекс Сент-Джон и Эрик Энгстром — решили спасти репутацию новой ОС. Проект создавался в режиме строжайшей секретности под кодовым именем Manhattan Project (дерзкий намек на ядерную бомбу, которая должна была выжечь старые стандарты). На выходе в сентябре 1995 года получился набор библиотек Windows Games SDK, позже переименованный в DirectX 1.0.
Но индустрия встретила новинку глухим скепсисом. Первая и вторая версии были сырыми, неповоротливыми и мало что умели. Ситуация качнулась лишь к 1996 году с выходом DirectX 3.0, куда завезли Direct3D. И хотя программисты всё еще плевались от монструозного кода, лед тронулся: Windows доказала, что способна запускать 3D-графику без DOS.
2. Становление и война титанов: DirectX 5.0 – 7.0 (1997–1999) (Инженеры решили пропустить «несчастливую» четвертую версию, так что сразу к делу).
К 1997 году на рынке 3D-ускорителей вспыхнула настоящая война. Карты 3dfx Voodoo рвали конкурентов на части благодаря собственному API Glide, а профессионалы молились на открытый стандарт OpenGL. DirectX на их фоне выглядел гадким утенком.
Но Microsoft включила режим катка. Вышедший в DirectX 5.0 интерфейс Direct3D наконец-то перестал быть кошмаром для программистов. А в 1999 году DirectX 7.0 нанес конкурентам сокрушительный удар. Именно в этой версии появилась аппаратная поддержка трансформации и освещения (T&L). Microsoft перенесла расчет геометрии с центрального процессора на плечи нарождающихся GPU (вроде первой GeForce 256). Glide этого не пережил, а OpenGL остался в загоне профессионального софта. DirectX стал безоговорочным королем домашних ПК.
3. Шейдерный взрыв: DirectX 8.0 – 9.0 (2000–2004).
Но настоящий тектонический сдвиг случился на стыке тысячелетий. В DirectX 8.0 (2000 год) инженеры сотворили чудо: они расплавили фиксированный конвейер видеокарт и сделали его программируемым. Появились первые вершинные и пиксельные шейдеры. Игры мгновенно потеряли свою пластмассовую стерильность.
И все же пиком этой эпохи стал легендарный DirectX 9.0c (2004) с его шейдерами третьей версии (Shader Model 3.0). Это был золотой век ПК-гейминга. Именно этот API подарил нам правильное преломление света в воде Half-Life 2, густые динамические тени в F.E.A.R. и невероятную атмосферу S.T.A.L.K.E.R. Девятая версия оказалась настолько удачной и живучей, что разработчики неохотно слезали с неё еще добрых десять лет.
4. Смена парадигмы и унификация: DirectX 10 – 11 (2006–2009).
В 2006 году вместе с Windows Vista вышла DirectX 10. Геймеры её возненавидели за то, что она намертво привязывалась к непопулярной операционке, но технологически это был шедевр. Появилась унифицированная шейдерная архитектура (яркий привет культовой видеокарте GeForce 8800 GTX). Больше не было деления на пиксельные и вершинные блоки — кремниевые чипы стали универсальными солдатами, способными переваривать любые типы графических задач на лету.
А в 2009 году Microsoft исправила маркетинговые ошибки, выпустив DirectX 11 вместе с народной Windows 7. Главным козырем этой эпохи стала тесселяция. Эта технология научила видеокарты брать плоскую текстуру (например, каменную кладку стены) и прямо в процессе рендеринга дробить её на миллионы реальных трехмерных полигонов. Мир внутри монитора обрел честную, осязаемую фактуру.
5. Ближе к кремнию: DirectX 12 и 12 Ultimate (2015 – наши дни).
К середине десятых годов старая схема работы DirectX начала буксовать. API вел себя как бюрократизированный посредник: тщательно проверял каждую команду от игры, бережно упаковывал её и только потом отдавал видеокарте. Из-за этого процессоры задыхались, а многопоточность работала из рук вон плохо — всю работу обычно тащило одно главное ядро CPU.
И тогда в 2015 году родился DirectX 12. Microsoft полностью переписала правила игры, убрав «няньку» из цепочки. Это низкоуровневый API, который сорвал с разработчиков ограничители и дал им прямой доступ к железу — почти как во времена DOS, но на космических скоростях. Теперь игра может загружать командами все ядра процессора одновременно.
А свежий апдейт DirectX 12 Ultimate окончательно закрепил статус диктатора графики, объединив ПК и консоли Xbox общими технологиями. Сюда намертво вшили аппаратную трассировку лучей (Ray Tracing) для честных отражений и Mesh Shaders, которые позволяют видеокартам обрабатывать миллиарды геометрических деталей в кадре без просадки кадров.
И если оглянуться назад, на этот тернистый тридцатилетний путь, становится понятно: DirectX эволюционировал из робкого костыля для Windows 95 в могущественного архитектора виртуальных миров, без которого современная индустрия развлечений просто рассыпалась бы на пиксели.