Выбрать главу

Развлекуха началась вместе с выспуском фирмой 3Dfx первого графического ускорителя для домашнего пользования. Вешшь по тем временам была гениальная. Она пристегивалась к обычной писиайной видяхе и была чем-то вроде шаббес гоя, выполняя вместо камня всю грязную работу по малеванию как бы объемных картинок. К тому же графика там была уже не растровая, а векторная. Вместо тупого закрашивания плоских картинок все зверки, стены и прочая шняга представлялись толпой мелких треугольничков, связанных в каркасную модель. Каждая вершина имела свои координаты. У такого метода есть свои недостатки, допустим, можно воочию увидеть пятиугольный hui, описанный у классиков. Ебсессно, треугольнички рисовать – это вам не фанерку раскрашивать. Идея воще-то не новая. Еще чуть ли не на синклере я самостоятельно видел гамезу с векторной графикой. По экрану бегали какие-то черти, сильно смахивающие на проволочный каркас. Полный отстой. А все оттого, что по-хорошему на шкилеты из проволоки должна натягиваться текстура. По сути, это обычная растровая картинка, тока для единообразия каждая точка в ней закошена под вектор – три цветовых координаты и одна для прозрачности. Так ускорителю проще. А поскольку этих самых точек – хоть жопой ешь, основную часть времени ускоритель проводит, натягаючи их на треугольники. Это называется рендеринг. Рендерить трудно. Это парит. Неудивительно, что по количеству транзюков нонешние ускорители обскакали СРУ вдвое, а то и втрое. А для хранения всей бодяги они юзают немереное количество помяти.

Каку же вся эта ботва происходит? У-у. Для начала камень посылает видяху на три буквы – АГП. И, как ни странно, ускоритель ведется. Для затравки он прикидывает на глазок сцену, выясняет, какие треугольники ему нафиг не нужны, поскоку не видны из-за других, а остальные расставляет по местам. Из них складывает шкилеты зверков. Попутно определяется с освещением. Вся эта шняга называется геометрической стадией графического конвейера. На старье такой фигней страдал камень, но это было ему не в жилу, отчего он резко тормозил. Ну а затем геометрия плавно переехала в ускоритель, специяльно заточенный под такое. Помогло, как ведерная клизма слону.

Дальше идет собссно рендеринг. При этом видяха пытается намазать текстуры на положенные им места. Легко сказать – намазать. Это вам не гандон на голову натянуть. Точек в каждой текстуре – до той самой матери, да еще одна текстура может натягиваться поверх другой, для вящей красоты. Чтобы ускоритель лишний раз не заморачивался, в ем присутствуют одновременно несколько девайсов, рендерящих текстуры. Их называют пиксельными конвейерами. А та часть этих хреновин, что составляет их мозговые извилины, зовется текстурным блоком, или просто текстурником. Чем нефиговее в ускорителе конвейеров, а в них – текстурников, тем машинка умнее. В самых крутых видяхах их может быть до восьми. Текстурная инфа раскидывается по ним, и они окучивают ее одновременно. Именно по этой причине ускорители фунциклируют быстрее обыченных камней. Если камень может все, но помаленьку, то ГПУ (GPU) заточен исключительно под графические данные, которые можно распараллелить. Поэтому, допустим, один кадр «Конченой фантазии» восемь компотов, завязанных в кластер, окучивали полтора часа, а какой нибудь FX5900 делает то же самое (ну, почти) в реальном времени.

А ведь просто натянуть текстуры – это лоховская тема. Что будет, ежели ты на экране подойдешь вплотную к стене, на которую намалевана картинка? Правильно, ты увидишь толпу разноцветных квадратиков. А все потому, что точка текстуры (тексель) отнюдь не обязана совпадать по размеру с точкой экрана (пикселем). И вот, когда смотришь сблюзи, тексель растягивается на много-много пикселей одного цвета. Это палево. Вдали замес другой. Там на адын пиксель попадает то одна, то другая точка текстуры, и все мелко-мелко рябит. Как же избежать этого гемора? Есть один вазелин. И называется он фильтрацией. Словечко то еще, но лучшего, видать, не нашлось. Самая простая метода – билинейная фильтрация. Для этого берется за задницу не одна текстура, а несколько похожих с разным уровнем детализации (LOD). На ближние треугольнички натягивается самая красивая, из множества точек, чтобы можно было смотреть сблюзи. Вдальняке – текстуры попроще, называемые МИП-картами. И, в оконцове, самые отсталые могут состоять из одного текселя серо-буро-малинового цвета, но не состоят – было бы шибко жирно. В чем вилы? На глазок ясно видно, что, допустим, стены – полосатые там, где идет смена МИП-карт. Да и при смене перспективы все ж таки заметно, как пиксели корявятся. А чтобы не корявились, есть такая анизотропная фильтрация. Она уже смекает насчет наклона плоскостей вместе с их текстурами и плющит те, что стоят подальше, сильнее ближних. Самое для нее сложное – это углы под 45 градусов. Ладно, хоть не 40. Но ведь полосатость никуда не девается, хотя и не так заметна. И тут-то заявляется трехлинейка, то бишь трилинейная фильтрация. Она берет соседние МИП-уровни и начинает смешивать друг промеж другом их границы. Времени на это уходит – караул, поэтому трехлинейка хором с анизотропией способна приплющить даже самый крутой ускоритель.