3D в играх
Предисловие
Когда я начал продумывать структуру повествования про 3D в компьютерных играх, то понял, что без краткого экскурса в историю рассказ будет неполным. И появилась вот такая вступительная часть общего назначения с историческим уклоном.
Часть 1
Мониторы с разрешением 4К, 32-х дюймовые плоские матрицы с поддержкой 120 Гц – это современность, но без взгляда в прошлое сложно понять настоящее, или
Когда пиксели были большими
В далекие-далекие времена компьютеры вообще не имели привычных нам дисплеев и клавиатур, но это совсем не означало, что на них не было возможности играть. Взять, к примеру, шахматы. Вводить ходы можно и механическими переключателями, а ответ от машины получать в виде распечатки на бумажной ленте или считывать со светового табло. То же справедливо и для текстовых игр. Да, существуют и такие. Компьютер выдает текстовую строку с описанием игрового окружения, а игрок вводит текстовые команды. Такие игры были популярны и после появления устройств, известных нам как компьютерные мониторы, которые способны не только отображать текст, но и выводить графику. И дело было не столько в моде, сколько в ограниченных возможностях компьютеров тех лет и отсутствию достаточного количества программистов для программирования графики.
Давайте рассмотрим поближе способы хранения и отображения данных в компьютере.
Все-все-все данные предоставлены в виде того или иного набора цифр. Весь секрет кроется в том, как с помощью этих цифр зашифровать, а потом расшифровать эти данные. Взять тот же самый алфавит. Это тоже способ кодирования. Кодирования звуков речи. Латинский алфавит в базовой, так сказать, версии, состоит всего из 26 букв. Но этого (плюс цифры и знаки препинания) достаточно для того, чтобы описать практически все на свете. Так и в компьютере.
Базовая единица информации – бит. Он может принимать всего два значения – 0 или 1, но последовательностью битов можно закодировать все, что угодно. Для удобства биты собираются по 8, что образует байт. Два состояния (0 или 1) необходимо возвести в степень 8 и получим, что одним байтом можно закодировать 256 значений. На заре компьютеров этого оказалось достаточно, чтобы каждой букве и знаку латинского (да и не только) алфавита присвоить свой код. Кодировка алфавита жестко зашивалась в ПЗУ (специальной микросхеме, Постоянной Запоминающей Памяти) компьютера вместе с кодом отображения этих самых символов. Хотя, по правде говоря, для латинского алфавита плюс цифры, знаки препинания, плюс управляющие коды хватало и 127 значений, т.е. половины байта. Остальные коды использовались для так называемой псевдографики или символов национальных алфавитов. Пользовательские программы просто пользовались этим набором символов, таким образом, текстовый файл имел размер в байтах почти такой же, сколько в нем было букв вместе с пробелами.
На лист формата А4 вмещается около 1800 печатных символов, что составляет около 1,7 Кб (1 Кб=1024 байта). Поэтому текст занимает сравнительно мало места, при этом несет в себе много информации. Например, описание красочного рассвета может уместиться в несколько предложений, но вот картинку читателю приходится додумывать (дорисовывать) самому. Для представления изображений текстовая кодировка не подходит (ASCII-арт не в счет).
Изображение на экране монитора строится из точек, которые называют пикселями. Определенное количество по горизонтали, определенное по вертикали. Как мозаика. И правило тут простое – чем больше камушков и чем они меньше, тем более детализированное получается изображение, но и трудозатраты возрастают: завезти, отсортировать, разложить в нужном порядке. Количество пикселей, которое отображается на экране, называется разрешением.
Видеоадаптер CGA для IBM PC начала 1980-х годов мог отображать 640х200 пикселей при глубине цвета 4 бита (2 в степени 4 – получаем 16 цветов). Причем в режиме 640х200 пикселей было доступно всего два цвета из палитры, а в режиме 320х200 пикселей — 4 цвета.
Почему так мало? Все дело в том, что для вывода изображения на экран монитора необходимо хранить данные обо всех камушках/пикселях, а количество их определяется перемножением строк на столбцы, получаем 64 000 для режима 320х200, и 128 000 для режима 640х200 пикселей. Это намного больше 256 кодов для хранения обычного алфавита. А видеоадаптер CGA имел только 16 КБ видеопамяти, столько мы получим, если 128 000 разделим на 8. Таким образом, на хранение информации об одном пикселе остается всего один бит, а это только два значения. Это даже не градации серого, это один цвет или второй, все. Для режима 320х200 доступно уже два бита, соответственно, 4 цвета.
Мало того, что данные о пикселях необходимо хранить, предварительно эти пиксели необходимо подготовить к выводу, т.е. задать значение каждому пикселю. А это процессорное время. А в те далекие времена процессоры были медленные, а оперативная память дорогая. Для хранения данных о 256 цветах необходимо выделять по одному байту на пиксель, и для режима 640х480 при такой глубине цвета уже необходимо 300 КБ. Это сейчас такие цифры нам кажутся смешными, а в конце 80-х, когда появился адаптер стандарта VGA, он имел 256 Кб видеопамяти, а стандартная дискета размером 3,5 дюймов вмещала 720 КБ. Microsoft Word 6.0 для Windows 3.1 в середине 1990-х годов поставлялся, если не ошибаюсь, на 10-ти дискетах формата 1,44 МБ.
Дабы не утомлять цифрами лет давно прошедших, подытожу: долгое время вывод графики на экраны компьютерных мониторов был делом непростым по целому ряду причин, как технических, так и экономических.
Но графические игры были уже тогда. Условно их можно разделить на два типа: с графикой, так сказать, реального времени и со статической картинкой. К первым можно отнести игры, такие как Arkanoid, в которой игрок управляет «ракеткой» от которой отскакивает «шарик», разрушающий «кирпичики». Ко второму типу относятся различного рода бродилки, в которых на экран выводится заранее отрисованные картинка и текст. Иногда в таких играх можно управлять персонажем, но и тут все сводится к подстановке заранее отрисованных положений конечностей персонажа. Такие игры относятся к так называемым двумерным пиксельным играм. Изображение строится попиксельно на этапе программирования или непосредственно перед выводом на экран.
Шло время, процессоры становились быстрее, а оперативная память дешевела. Появились специализированные видеопроцессоры, берущие не себя часть функций центрального процессора. Теперь видеокарта не просто отображала данные на экране, а уже могла выполнять некоторые специализированные вычисления над пикселями или геометрическими фигурами (или над тем и другим). Двигателем прогресса, конечно, тут были не видеоигры, ведь игровая индустрия для ПК и домашних консолей тогда только зарождалась, а различного рода прикладные задачи, как то компьютерное проектирование машин и механизмов, визуализация научных вычислений (медицина, космос, энергетика, тренажеры пилотов, военные симуляции, зарождающийся Film VFX и т.д.) и т.п.
Для этих целей использовались большие и дорогущие специализированные компьютеры, которые назывались графическими рабочими станциями. Однако, со временем рабочие станции становились все больше похожи на персональные компьютеры и стали доступны не только большим организациям.
Например, легендарная игра Doom 2 была почти полностью разработана на компьютере NeXT. Хотя NeXT не являлся графической рабочей станцией, но обладал 17-дюймовым чёрно-белым монитором MegaPixel с разрешением экрана 1120 на 832 пикселей в 1989 году, тогда как обычные ПК того времени далеко не все могли похвастаться разрешением 640х480, не говоря уже о размере экрана в 17 дюймов. Кстати, именно поэтому Doom 2 можно запустить почти на чем угодно, ведь архитектура игры не привязана к DOS и IBM PC. А вот для работы над серией Quake Джон Кармак и команда уже привлекали графические станции SGI от Silicon Graphics.
Вот что вспоминал Джон Кармак про NeXT и SGI.
… Забавно оглядываться назад; Я помню, как искренне удивлялся, какие преимущества у реальной многопроцессорной среды разработки были над DOS и более старыми средами Apple, которые мы использовали. На самом деле, использование NeXT было откровением, и мне быстро стало ясно, что у нас есть немало ощутимых преимуществ, поэтому мы переместили все, кроме пиксельной графики (она еще делалось в Deluxe Paint на DOS). Использование Interface Builder для наших игровых редакторов было уникальным преимуществом NeXT, но большинство систем Unix имели бы аналогичные преимущества при разработке программного обеспечения общего назначения (хотя отладчик был не так хорош, как Turbo Debugger 386!). Кевин Клауд (Kevin Cloud) даже делал наши игровые руководства, начиная с Wolfenstein 3D, в Framemaker на NeXT.
… За весь период разработки Doom и Quake 1 мы, вероятно, потратили 100 000 долларов на компьютеры NeXT…
… Позже мы потратили больше на Unix SMP server systems (сначала на четырехъядерный Alpha, а затем на 16-way SGI-систему), чтобы выполнить трудоемкие расчеты освещения и визуализации для серии Quake.
Приблизительно в конце 90-х годов прошлого столетия компьютерные игры из двухмерных пиксельных (и так называемых 2,5D) начинают превращаться в трехмерные полигональные. Не все, конечно, но внушительная часть. Нет, мониторы по-прежнему остались пиксельными, тут все по-старому. Но поменялась идеология подготовки изображения к выводу и форма хранения данных. В алгоритмах расчета пиксели уступили место векторам и плоскостям, трехмерным матрицам. Если ранее принимались в расчет только две координаты: X и Y, то теперь добавилась третья – Z, или глубина. В полноценной 3D игре компьютер рассчитывает положение объектов в честном трехмерном пространстве, а затем с помощью специальных алгоритмов преобразует расчеты в плоскую картинку с имитацией глубины пространства. Заметьте: в предыдущем предложении я упомянул объекты, а не пиксели. К пикселям все сводится на этапе создания картинки для монитора.
Зачем это нужно и что это нам дает? Почему не перейти к пикселям в трехмерном пространстве? Причин много, но основные – это быстродействие, масштабируемость, свобода действия и освещение.
Выше я приводил расчет необходимой видеопамяти для простых графических режимов. Но это были совсем простые случаи. Со временем видеоадаптеры становились только сложнее. Например, для каждого пикселя, кроме, собственно, глубины цвета (т.е. количества возможных цветов отображения) хранится еще информация о прозрачности, или, по-другому, альфа-канал. Если на экране отображается 1920 на 1080 пикселей, то общее количество их равно 2 073 600. Для приемлемой цветопередачи и хранения альфа-канала необходимо по крайней мере 3, а еще лучше 4 байта на пиксель.
Почему именно так? Монитор основан на аддитивной модели построения цвета, т.е. берутся три базовых цвета: красный, зеленый, синий и смешиваются. Если каждый цвет закодировать одним байтом, то получим 256 возможных значений от 0 до 255. И обозначается как RGB, затем следуют через запятую значения каждого из цветов. Например:
RGB 0,0,0 — черный
RGB 127,127,127 — серый
RGB 255,255,255 — белый
RGB 255,0,0 – красный и т.д.
Если 256 возвести в степень 3, то получим около 16 миллионов возможных значений цветов, вернее 7 цветов, плюс черный и белый, а остальное – оттенки. Итого, необходимо 3 байта, а это 24 бита, плюс один байт на альфа-канал, итого – 4 байта или 32 бита.
Так вот, при таком раскладе, памяти необходимо около 8 мегабайт. Но и этого мало, так как для нормальной работы в современных видеорежимах видеокарта должна поддерживать буферизацию, т.е. иметь возможность хранить несколько экранов одновременно. Эта возможность появилась еще в видеокартах VGA, где размер буфера составлял 64 Кб при 256 Кб общей памяти, т.е. 4 буфера или, другими словами, 4 страницы видеопамяти.
Что такое видеобуфер (страница видеопамяти) и зачем он нужен? Для повышения скорости и плавности вывода на экран картинки. Пока на экран выводится одна из страниц, быстрый процессор может заполнять три другие, а в нужный момент видеокарта делает почти мгновенное переключение на следующую страницу и так по кругу. Таким образом, видеокарта для разрешения 1920х1080 пикселей должна иметь как минимум 32 МБ видеопамяти. Что такое 32 МБ скажите вы, если сейчас стандарт 4 гигабайта?! Но не следует забывать, что нынешние видеокарты используют почти всю свою память для расчета 3D графики, т.е. для вычислений. Да и зарождались 3D игры во времена, когда видеокарты и имели эти самые несколько мегабайт видеопамяти, хотя, конечно, разрешение Full HD и 32-х битную глубину цвета они не поддерживали.
Но вернемся к пикселям. Если применять пиксельную технологию к 3D пространству, то вот эти 2 073 600 пикселей на один плоский кадр при Full HD разрешении необходимо умножить на значение глубины. И вот тут точно не хватит никакой процессорной мощности и размеров видеопамяти. Да и это совсем не нужно, ведь на экране мы наблюдаем только переднюю часть поверхности не перекрытых друг-другом объектов. Другими словами, пиксельная технология тут совершенно не подходит из-за своей неподъемности по вычислениям и объему памяти, из которых для создания картинки необходимо всего несколько процентов. Если брать аналогию из реального мира то для того, чтобы узнать вес яблока нет необходимости пересчитывать каждую молекулу в нем и перемножать количество на массу молекулы, надо воспользоваться другим методом – взвешиванием на весах.
А вот расчет над векторами и трехмерными матрицами производится довольно быстро и позволяет применять различного рода алгоритмы, отсекающие еще на этапе подготовки данных к расчету, огромный массив цифр, которые пересчитывать нет необходимости, например невидимых наблюдателю плоскостей куба. Расчет положения трехмерного объекта в кадре сводится к расчету положений некоторого количества ключевых точек в трехмерном пространстве, что можно осуществить довольно быстро. Далее накладывается текстура на плоскости между точками, затем рассчитывается свет и накладываются спецэффекты.
Ниже, по легенде, первое 3D оцифрованное изображение авто. Volkswagen Beetle, Массачусетский технологический институт, оцифровывалось вручную, в прямом смысле: с линейкой в руках.
Ну, и масштабируемость.
Пиксельное изображение очень сильно привязано к разрешению. Конечно, существуют алгоритмы масштабирования и пиксельных изображений, но тут все более-менее хорошо работает только в сторону уменьшения разрешения, т.е. сжатия. К примеру, сжатие фотографии 4096х4096 пикселей до 1024х1024 пройдет гладко. А вот в обратную сторону это уже не работает.
Да, сейчас появились алгоритмы для так называемых нейронных сетей, которые могут с приемлемым качеством увеличить разрешение текстур, но это требует больших затрат машинного времени, да и результат не гарантирован. Да и это не нужно для построения 3D игр.
Расчеты в 3D мире хороши своей универсальностью. Алгоритмы одинаковы, что для разрешения 720Р, что для 4К. Вопрос только в быстродействии системы и наличии видеопамяти. Только с появлением истинных трехмерных игрушек они практически отвязались от разрешения экрана. Большинство игр вы вольны запускать хоть с разрешением 1280х768, хоть 3840х2160 пикселей, лишь бы операционка и железо поддерживали их.
Игра Quake II вышла в 1997 году, когда разрешение 800х600 пикселей считалось нормальным, но игра поддерживает разрешение вплоть до 1600х1200. Практически все современные игры поддерживают как Full HD так и 4К разрешения. Единственная загвоздка в текстурах, ведь они по-прежнему растровые, т.е. пиксельные, и для красивой картинки они тоже должны быть рассчитаны под разрешение 4K, а для более низких разрешений они просто сжимаются.
Теперь про освещение.
Вы заметили, что в последнее время при продвижении игр уже не принято хвастаться детализированными моделями окружения, а упор делается на освещении? Nvidia продвигает свои продукты линейки RTX как последнее слово в мире реалистичной картинки в 3D играх. Почему так? Трехмерные модели достигли своего пика в детализации? Остается подтягивать только освещение? Не совсем так. Да, те трехмерные модели, что считались высокополигональными десять лет назад, сейчас можно смело (после небольшой оптимизации) встраивать в игры как низкополигональные, но предел по полигонах еще не достигнут. (Имеется в виду максимально обоснованное количество полигонов при максимальном разрешении и текущем уровне детализации текстур.) Дело в другом.
Фотографы и операторы знают, что освещение, или, как говорят, свет – это даже больше чем половина сцены. Можно создать шикарную композицию и великолепную постановку, но плохим светом можно «убить» все на корню.
Мы почти никогда не задумываемся над этим, но освещение играет огромную роль в нашей жизни. Оно влияет не только на то, сможем ли мы что-то увидеть в принципе, но и на то, как мы это воспринимаем. Освещением можно акцентировать внимание на чем-то конкретном в сцене, задать настроение, скрыть недостатки декораций и т.п. И коль 3D мир стремиться быть как можно более реалистичным, одних высокодетализированных моделей тут мало, нужен правильный свет.
Еще не так давно правильно выставить источники освещения для многих 3D визуализаторов было настоящей головной болью, и успех достигался путем проб и ошибок, путем обретения опыта и интуиции. Сейчас ситуация поменялась. И дело не в том, что раньше ПО было несовершенное, а в том, что именно расчет освещения – это наиболее трудоемкая задача 3D визуализации. И только на современном этапе развития железа появилась возможность в приемлемые временные рамки рассчитывать более-менее реалистичное освещение. Конечно, пока RTX от Nvidia это больше маркетинговый ход, но трассировка лучей в реальном времени для игр только на этапе своего становления, поэтому строго судить еще рано.
А что не так со светом в пиксельной графике? Все так, вот только корректно рассчитать освещение можно исключительно отталкиваясь от реального или виртуального трехмерного окружения, поэтому для классической пиксельной графики это в принципе невозможно, свет там «расставляется» художником на этапе рисования пиксельной картинки. Ситуация похожа на классический рисунок красками или цветными карандашами: необходимо быть талантливым и опытным художником чтобы реалистично передать освещение. Основам этого художников учат в художественных учебных заведениях, но настоящие художники продолжают постигать искусство света и тени всю свою карьеру.
Заметили, не просто «искусство света», но и «искусство тени». Когда практически не бывает теней? Тогда, кода нет света, вернее прямого или достаточно яркого отраженного источника освещения. Т.е. в безлунную ночь, плохо освещенной комнате и т.п. Свет и тень тесно связаны друг с другом, одного без другого не бывает. И правильно рассчитанная тень – тоже очень важно в 3D графике. А тени отбрасывают только трехмерные объекты. Даже лист бумаги – это тоже трехмерный объект, пусть и с очень маленьким значением по одной из координат.
А мы еще не поговорили о преломлении, это когда луч света на границе двух прозрачных сред меняет свое направление. Классический пример: стакан с водой и трубочкой в нем. А мы еще не поговорили про рассеивание в прозрачных средах, например при наличии тумана, дыма, пыли в воздухе или о подповерхностном рассеивании в верхнем слое некоторых предметов/веществ. И т.д. и т.п. Тема освещения и его роли в реалистичной (или стилизованной, не важно) итоговой картинке настолько огромна, что ей посвящают толстые книги и многие десятки часов лекций.
Про свободу действий.
Все перечисленное выше относилось к техническим аспектам, но, как многим известно, не это самое главное, хотя и очень важное в любой игре. Для большинства игроков самое главное – это опыт от игры и эмоции, т.е. то, что принято называть геймплеем. И тут трехмерная природа игры дает практически неограниченную свободу действий. Да, для такой игры как шахматы третье измерение – дело десятое, но возьмем, к примеру, такой популярный в пиксельную эпоху игровой жанр как бродилки, они же квесты. Напомню, как для них создавалась графика.
Рисовали конечное количество картинок – игровых локаций, на которых практически все было фоном. Рисовали несколько позиций игрового персонажа для имитации действий. Также отдельно рисовали предметы, с которыми игрок мог взаимодействовать. Все это сводилось в итоговую картинку во время игры, и зачастую игровой персонаж мог двигаться только влево или вправо, вверх или вниз. Ни о какой интерактивности в современном представлении и речи не могло идти. Большую часть игрового окружения игрок додумывал сам. Конечно, в этом есть свое очарование, но это очень ограничивает, как сейчас принято говорить, выбор игровых механик.
При переходе на 3D ситуация кардинальным образом меняется. Моделируется полностью, предположим, комната в здании с реальными пропорциями, трехмерным окружением, окном, за которым может быть как плоский фон, так и 3D окружение, дверьми, которые персонаж может открывать и т.п. Куда идти, с какими и как предметами взаимодействовать, куда перевести взгляд – у игрока появляется значительно больше возможностей (в пределах, конечно, дозволенного разработчиками и игровым движком), а значит и глубина погружения в игровой процесс, так сказать, увеличивается. А какие возможности 3D предоставляет для так называемых открытых миров?!
Да, иллюзию 3D окружения пытались создать и на основе пиксельной графики в так называемых 2,5D играх на подобии DOOM или Duke Nukem 3D. Но сравнивать эти игры с современным DOOM все равно, что авто 30-х годов прошлого века и современную легковушку: и то и то едет, но разница в ощущениях от езды, особенно долгой, огромна, да и возможности существенно отличаются.
Ну, а для тех, кто осилил данный текст до этого момента, у меня есть немного воспоминаний о моем первом знакомстве с железом, аппаратно поддерживающим 3D в видеоиграх. Кому интересно – прошу под спойлер.
В те далекие времена доступ в Интернет был только у правительственных организаций, ВУЗов и тех немногих счастливчиков, которые могли себе позволить приобрести модем и оплачивать доступ в Сеть. Компьютерные клубы с таким доступом только-только появлялись, а расценки в них были не по карману обычным студентам. Поэтому те, кто интересовался ИТ в целом и играми в частности, но не был связан напрямую с миром компьютеров, информацию черпали из рассказов друзей и знакомых, походов на радиорынок, но в основном из печатных изданий. Благо, на тот момент уже существовали довольно полезные издания, материал в которых был качественным и, в отличии от сегодняшнего массового IT-News, почти не был «попсовым», а предлагал довольно серьезный и познавательный материал. Навскидку вспомню про «Chip» и «Игроманию». Конечно, цены на журналы кусались как для покупки каждым интересующимся, поэтому большинство номеров доставалось у знакомых через знакомых и зачитывались они основательно.
Эх! Я жалею о тех временах именно в плане качественного контента в красивых журналах. До сих пор помню, какое впечатление на меня произвела статья в одном из изданий про стандарт на компакт диски. Статья была на несколько страниц, с качественными иллюстрациями и раскрывала такое подробности, как алгоритм контроля ошибок при записи/чтении данных с диска и т.п.
Ну, да, я отвлекся. Но, надеюсь, это немного позволит погрузиться в ту эпоху. Рассказать я хочу немного о другом.
Из печатных изданий я был в курсе про то, что где-то там, в «прекрасно и далеко», существуют ускорители трехмерной графики Voodoo для обычного ПК. Но наблюдать их в естественной среде обитания не приходилось.
Для справки. В те далекие времена видеокарты с аппаратной поддержкой 3D графики в обиходе называли ускорителями, возможно потому, что эти самые первые Voodoo были дополнением к обычной 2D видеокарте. Необходимо было наличие двух видеокарт: обычной 2D и Voodoo. Выход 2D видеокарты подсоединялся к видео входу Voodoo кабелем, а монитор к видео выходу Voodoo. Эти ускорители основывались на чипе от компании 3Dfx. Поэтому еще такие карточки называли просто 3Dfx, и на некоторое время данное название стало нарицательным и так называли любые видеокарты тех годов с поддержкой 3D графики для ПК.
Изначально 3Dfx занималась почти исключительно поставкой чипов для сторонних производителей, но затем вышла на пользовательский рынок с карточкой Voodoo Graphics PCI и это оказался успешный продукт. Затем были Voodoo Rush, Voodoo2, Banshee, Voodoo3, Voodoo4 и Voodoo5. Из них ускорителем была лишь Voodoo2, остальные были полноценными видеокартами 2D+3D. Продукты Voodoo2, Banshee и Voodoo3 были вполне успешными, но они не смогли создать для 3Dfx задел на будущее в свете возрастающей конкуренции на рынке в лице Nvidia и ATI. В конце-концов, в 2000 году, через 6 лет после основания, 3Dfx выпустила свой последний пресс-релиз со словами извинения перед своими потребителями, в 2002 году признала себя банкротом, большая часть сотрудников и наработок перешли в компанию Nvidia (теперь вы в курсе откуда растут ноги у Nvidia в плане высокой доли на рынке видеокарт). Хотя, некоторые сотрудники перешли в ATI, что помогло последней создать технологию CrossFire, и, наверно, много чего еще.
Так, вот. Уже существовали на рынке экземпляры Voodoo3, когда один из моих одногруппников купил подержанную Voodoo Graphics PCI. Весть о наличии чуда инженерной мысли вот тут, рядом! быстро разлетелась по округе и не один только я пришел посмотреть на приобретение. С помощью данного ускорителя можно было запустить игру Turok, которая на имевшемся тогда у большинства пользователей железе просто не запускалась! Можно было включить в Quake 2 аппаратное ускорение! А две видеокарты (2D+3D) в одном системном блоке, да еще в связке, придавали всему этому внушительный вид. В общем, сплошные ВАУ!
Прошло много лет, сменилось огромное количество поколений видеокарт; ATI была приобретена компанией AMD, была поглощена S3 Graphics компанией VIA; Matrox больше не выпускает обычные видеокарты, но вот это ВАУ! при личном знакомстве с ускорителем трехмерной графики помниться до сих пор.
Можно еще много чего рассказать о технической стороне и привести больше воспоминаний из тех времен, когда пиксели были большими, но пора двигаться дальше. А дальше будет в следующей части.
Лучшие комментарии
Очень Занимательное чтиво)