Rulez - John Doe
Шрифт:
Интервал:
Закладка:
Самое смешное, что нынешние видяхи по своей моще приближаются уже к самому процу, т.е. СРУ. И на борту у них торчит стока памяти, что самому компоту хватило бы. Тут надобно сразу выяснить, кто есть ху. Компутерная графика ваще делится на 2Д и 3Д, то бишь плоскую и объемную. Первая имеет место во всяких шняжных картинках, а вторую юзают исключительно гамульки. Поэтому для дважды графики никаких таких прибамбасов не треба, да и мощи особой то же. Тут главное – красота картинки. Зато с трижды графикой другой замес. Для таких продуманных картинок видяха должна иметь крутые мозги и толпу памяти, где живут части этих самых картинок. Иначе весь этот отстой должен будет обрабатывать камень, а он и так обычно в запаре. Те карточки, которые сами вантуют картинками, называют 3Д ускорителями. С этими девайсами система общается, употребляя ДРОВА. Это не полено, как хотелось бы, а хитрая порнограмма – драйвер, в переводе - рулила. Дрова секут за спестфическими особенностями своей карточки и докладают ей, чего хочет система. А система хочет при помощи языков прикладного программирования, короче API. Они-то и переводят пожелания гамез по понятиям ускорителя. В Винде есть 2 основных Блюбляотеки для подобных загонов. Это OpenGL и DirectX, а точнее, его часть – Direct3D. Первая перекочевала на компоты с профессиональных машин. Соответственно, девайсы пашут под ней быстро и красиво, но все же под игры она не совсем заточена. А вот Директ изначально под них и задумывался. Наворочено там оптом, так что иногда сами изготовители всякой шняги загоняются и впадают в непонятки. Картинки на Директе получаются красочными, но дэцл противоестественными. Смысл тот, что у ОпенЖЛя круче работа с геометрией, а в Директе сурово поставлено закрашивание. Для этих целей есть особые прибамбасы, которые не всегда качественно порцуют. Тем не менее, основная часть гамез юзает Директ. Он для Виндов роднее, так как сделан Микрософтом, со всеми вытекающими оттуда последствиями.
Когда ты шпилишь Квака, тебе даже и на ум не приходит, скока всякой фигни тасуется между камнем и тем, что ты видишь глазами. Офигеть можно! Отсюда вывод – чтобы твои гамесы ворочались резко, нужен крутой девайс. Из всех типов тачек (офисные, учебные и тю дю) игровые – почти что самые навороченные. А ты думал! Это тебе не в тетрис шпилить. Так что коли хочешь гамить серьезно, запасись мешком капусты и силами морально-физическими. Они тебе понадобятся, чтобы каждые два месяца бегать и апгрейдить свой отстой на свежий и рулезный.
Видяха
Великая гамезная опупея началась ишшо в те времена, когда компутеры были совсем детскими. А именно с 286-х машин. Скока мы колбасились в знаменитую гамезу «Вольф3Д»! Хотя насчет 3Д авторы сильно борщанули. Выглядело это как беготня по фанерным лабиринтам с сопутствующей стрельбой по не менее фанерным уродам. И все равно это было офигительное достижение по сравнению с прежними дендиобразными гамезами вроде «Принца оф Персия». Ничего лучше тогда и не могло получиться. Во-первых, вся фигня окучивалась процом, по тем временам – совсем нищим, а кроме того, графика была растровая. При этом камень тупо выкладывал на экран плоские картинки – спрайты, закрашивая их по точечкам. И это было медленно и печально. К примеру, тогдашние программы 3Д графики, рисовавшие мультики и прочую бодягу, тратили по нескольку часов на один вшивый кадр. Кто смотрел «Газонокосильшика» - помнит, какие это были картинки.
Развлекуха началась вместе с выспуском фирмой 3Dfx первого графического ускорителя для домашнего пользования. Вешшь по тем временам была гениальная. Она пристегивалась к обычной писиайной видяхе и была чем-то вроде шаббес гоя, выполняя вместо камня всю грязную работу по малеванию как бы объемных картинок. К тому же графика там была уже не растровая, а векторная. Вместо тупого закрашивания плоских картинок все зверки, стены и прочая шняга представлялись толпой мелких треугольничков, связанных в каркасную модель. Каждая вершина имела свои координаты. У такого метода есть свои недостатки, допустим, можно воочию увидеть пятиугольный hui, описанный у классиков. Ебсессно, треугольнички рисовать – это вам не фанерку раскрашивать. Идея воще-то не новая. Еще чуть ли не на синклере я самостоятельно видел гамезу с векторной графикой. По экрану бегали какие-то черти, сильно смахивающие на проволочный каркас. Полный отстой. А все оттого, что по-хорошему на шкилеты из проволоки должна натягиваться текстура. По сути, это обычная растровая картинка, тока для единообразия каждая точка в ней закошена под вектор – три цветовых координаты и одна для прозрачности. Так ускорителю проще. А поскольку этих самых точек – хоть жопой ешь, основную часть времени ускоритель проводит, натягаючи их на треугольники. Это называется рендеринг. Рендерить трудно. Это парит. Неудивительно, что по количеству транзюков нонешние ускорители обскакали СРУ вдвое, а то и втрое. А для хранения всей бодяги они юзают немереное количество помяти.
Каку же вся эта ботва происходит? У-у. Для начала камень посылает видяху на три буквы – АГП. И, как ни странно, ускоритель ведется. Для затравки он прикидывает на глазок сцену, выясняет, какие треугольники ему нафиг не нужны, поскоку не видны из-за других, а остальные расставляет по местам. Из них складывает шкилеты зверков. Попутно определяется с освещением. Вся эта шняга называется геометрической стадией графического конвейера. На старье такой фигней страдал камень, но это было ему не в жилу, отчего он резко тормозил. Ну а затем геометрия плавно переехала в ускоритель, специяльно заточенный под такое. Помогло, как ведерная клизма слону.
Дальше идет собссно рендеринг. При этом видяха пытается намазать текстуры на положенные им места. Легко сказать – намазать. Это вам не гандон на голову натянуть. Точек в каждой текстуре – до той самой матери, да еще одна текстура может натягиваться поверх другой, для вящей красоты. Чтобы ускоритель лишний раз не заморачивался, в ем присутствуют одновременно несколько девайсов, рендерящих текстуры. Их называют пиксельными конвейерами. А та часть этих хреновин, что составляет их мозговые извилины, зовется текстурным блоком, или просто текстурником. Чем нефиговее в ускорителе конвейеров, а в них – текстурников, тем машинка умнее. В самых крутых видяхах их может быть до восьми. Текстурная инфа раскидывается по ним, и они окучивают ее одновременно. Именно по этой причине ускорители фунциклируют быстрее обыченных камней. Если камень может все, но помаленьку, то ГПУ (GPU) заточен исключительно под графические данные, которые можно распараллелить. Поэтому, допустим, один кадр «Конченой фантазии» восемь компотов, завязанных в кластер, окучивали полтора часа, а какой нибудь FX5900 делает то же самое (ну, почти) в реальном времени.
А ведь просто натянуть текстуры – это лоховская тема. Что будет, ежели ты на экране подойдешь вплотную к стене, на которую намалевана картинка? Правильно, ты увидишь толпу разноцветных квадратиков. А все потому, что точка текстуры (тексель) отнюдь не обязана совпадать по размеру с точкой экрана (пикселем). И вот, когда смотришь сблюзи, тексель растягивается на много-много пикселей одного цвета. Это палево. Вдали замес другой. Там на адын пиксель попадает то одна, то другая точка текстуры, и все мелко-мелко рябит. Как же избежать этого гемора? Есть один вазелин. И называется он фильтрацией. Словечко то еще, но лучшего, видать, не нашлось. Самая простая метода – билинейная фильтрация. Для этого берется за задницу не одна текстура, а несколько похожих с разным уровнем детализации (LOD). На ближние треугольнички натягивается самая красивая, из множества точек, чтобы можно было смотреть сблюзи. Вдальняке – текстуры попроще, называемые МИП-картами. И, в оконцове, самые отсталые могут состоять из одного текселя серо-буро-малинового цвета, но не состоят – было бы шибко жирно. В чем вилы? На глазок ясно видно, что, допустим, стены – полосатые там, где идет смена МИП-карт. Да и при смене перспективы все ж таки заметно, как пиксели корявятся. А чтобы не корявились, есть такая анизотропная фильтрация. Она уже смекает насчет наклона плоскостей вместе с их текстурами и плющит те, что стоят подальше, сильнее ближних. Самое для нее сложное – это углы под 45 градусов. Ладно, хоть не 40. Но ведь полосатость никуда не девается, хотя и не так заметна. И тут-то заявляется трехлинейка, то бишь трилинейная фильтрация. Она берет соседние МИП-уровни и начинает смешивать друг промеж другом их границы. Времени на это уходит – караул, поэтому трехлинейка хором с анизотропией способна приплющить даже самый крутой ускоритель.
И еще одна фишка, не прибиваемая ни одной фильтрацией, будь она хоть трижды нежной. И образуется она на границах крайних треугольничков. Невооруженным глазом заметно, что они не прямые, а стоят «лесенкой». И это о-о-очень достает. Портится вся мазута. Чтобы откосить от этих дел, было придумано сглаживание, иначе – антиалиясинг. Оно сильно напоминает размазывание соплей по экрану. Чтобы укоцать ступеньки, вся картинка берется, увеличивается в размерах, а затем каждый пиксель чуть-чуть подрихтовывается в цвета соседних. Можно также подрисовать между соседними пикселями ешо один, среднего цвета. Затем картинка съеживается, и что мы видим? Ступеньки исчезли! Ускоритель размазал их по соседним клеточкам, как Клинтон Саддама по стенке! Ура! Скажешь ты. Рулез! А в чем засада? А засада в том, что видяхе приходится делать двойную, а то и тройную работу. Это уже не тормоз, это полный пц. Дабы избавиться от такого гемора, изобретатели навыдумывали всяких злоехидных методов. Например, они размазывают сопли не по всей картинке, а тока на краях объектов и в местах резких перегибов. А дальние хреновины воще оставляют в покое. Это называется всякими умными словами – адаптивное сглаживание, краевое сглаживание, мультисемплинг (в отличие от самого тупого метода, описанного выше – суперсемплинга).