CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Тайваньская компания MSI осуществила сегодня анонс фирменной модели графического ускорителя GeForce ...
Компания Manli опубликовала официальный пресс-релиз, посвященный своей новой видеокарте. Энтузиастам ...
Компания Sony накануне раскрыла некоторые подробности доступности своего нового флагманского смартфона ...
В списке новинок формата фаблет японская компания Sony готовит нового флагмана, который в настоящее ...
Компания Acer сделала наконец официально доступным свой новый ноутбук, рассчитанный на профессиональных ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Трехмерный ликбез

Валерий АКСАК aksak@mycomp.com.ua

В статьях нашего еженедельника, посвященных обзору видеокарт или новинок среди видеочипов, довольно часто мелькают разные загадочные термины вроде «антиалиасинг», «анизотропная фильтрация» и т.д. Сейчас мы попытаемся как можно более понятным и доступным языком объяснить, что все это значит и зачем все это выдумали.

Заранее очерчивая круг охватываемых сегодня вопросов, хочу сказать, что в этой статье мы расскажем только о тех 3D-технологиях, применение которых влияет непосредственно на улучшение качества конечного 3D-изображения, воспринимаемого человеческим глазом, смотрящим на монитор ПК. В данном контексте нас интересуют пути решения двух проблем: устранение неприятного «эффекта лестницы» на границах полигонов и достижение качественной прорисовки глубины трехмерной сцены. Собственно говоря, именно умелое преодоление перечисленных «трудностей» является одной из главных задач современного видеоускорителя. Давайте теперь рассмотрим каждую из упомянутых проблем качества 3D-графики более подробно.

В качестве иллюстраций нами будут использованы скриншоты из игры «Мафия» (рис. 1), детализированные изображения увеличены относительно оригинала в 5 раз.

«Эффект лестницы», или Алиасинг

Проблема. Если вы хоть изредка играете в трехмерные компьютерные игры, то, наверняка, встречались с таким досадным явлением, как ступенчатость наклонных линий. Наиболее сильно недостаток бросается в глаза на огромных открытых поверхностях, где элементы окружающего мира (дома, автомобили, дорожная разметка) вроде как «щетинятся» при изменении угла обзора или замирают со статичными кривыми контурами (рис. 2). Данный недостаток формирования 3D-сцены является следствием применения полигональной технологии — именно стык границ полигонов вызывает столь неприятный результат, именуемый также алиасингом (aliasing). Стоит заметить, что трехмерный алиасинг и двухмерная дискретность изображения при его увеличении —Рис. 1это разные вещи.

Суть. Как вы, возможно, знаете, изображение на экране монитора состоит из огромного числа пикселей — маленьких прямоугольников, на которые равномерно разбивается все изображение. Число данных элементов зависит от разрешения экрана — чем последнее выше, тем больше пикселей содержит изображение. Логично, что при увеличении разрешения каждый отдельный пиксель становится меньшим, более незаметным для человеческого глаза. Например, экран с разрешением 1024х768 состоит из 786 432 пикселей, причем каждый из них имеет свой цвет, и его окрас «по умолчанию» не зависит от цвета соседних пикселей.

В трехмерных сценах каждому полигону (или его фрагменту) при любом изменении его положения относительно точки обзора выделяется определенный фиксированный процент экранного пространства. Как вы уже догадались, этому проценту экранного пространства характерно число пикселей, определенное разрешением экрана, которое и будет представлять данный полигон (или его фрагмент) при общем формировании трехмерной сцены. Следовательно, чем больше пикселей попадет на этот процент экрана, тем большая детализация будет присуща имеющемуся там изображению. При большей детализации полигон (или его фрагмент) выглядит естественнее, и как результат, частично (или даже полностью) исчезнет (а точнее, станет менее заметной) шероховатость (алиасинг) на его границах. Ведь алиасинг — это скопление больших одноцветных пикселей на краях полигонов. А если нет больших пикселей — значит, нет и алиасинга? Казалось бы, вот оно — решение всех трехмерных проблем! Надо просто увеличить Рис. 2разрешение экрана, и дело в шляпе! Но не тут-то было. Во-первых, даже самые современные мониторы имеют свой физический предел по установке разрешений. Во-вторых, как уже говорилось ранее, при таком подходе алиасинг как таковой не убирается, а детализируется, поэтому для достижения эффекта полного отсутствия алиасинга нужен не только монитор, поддерживающий заоблачное для своей диагонали разрешение :-), но и соответствующая сверхмощная видеокарта.

Поэтому прогрессивное человечество пошло другим путем. Оно заметило, что чем больше цветов задействовано в формировании изображения, тем качественнее и естественнее оно выглядит. Что оказалось самым интересным, меньшее разрешение при использовании большего количества цветов дает результаты в разы лучшие, чем большее разрешение с маленькой цветовой насыщенностью. «Ага!» — подумало человечество и выдумало пресловутый антиалиасинг, который и стал идеей де-факто в современной компьютерной индустрии.

Antialiasing

Идея антиалиасинга состоит в сглаживании «пиксельных ступенек». Каким образом это достигается? Каждый пиксель может разбиваться на некоторое число субпикселей (сэмплов), которые в зависимости от конкретного метода антиалиасинга как-то смешиваются с соседними сэмплами или с субпикселями соседних пикселей. Полученные в результате такого смешения цвета по специальным законам присваиваются этим же пикселям.

На сегодняшний день существует два основополагающих принципа экранного сглаживания: суперсэмплинг и мультисэмплинг. Суперсэмплинг, по большому счету, не далеко ушел от самого примитивного способа устранения алиасинга, описанного в начале статьи. Его суть состоит в просчете изображения в высоком виртуальном разрешении, которое в несколько раз превосходит физическое разрешение, после чего происходит масштабирование виртуального разрешения до рамок физического. Таким образом, один физический пиксель просчитывается на основе нескольких виртуальных, которые являются его субпикселями. Несмотря на действительно заметное увеличение качества изображения, этот метод нельзя назвать слишком удачным из-за высокой вычислительной нагрузки (возрастающей в несколько раз по сравнению с режимом без сглаживания).

Мультисэмплинг является намного более удачным вариантом антиалиасинга: при несопоставимо более значительном быстродействии мультисэмплинг к тому же дает очень качественную и красивую картинку. Такой, казалось бы, удивительный результат возможен благодаря некой «интеллектуальности» мультисэмплинга. В его основе лежит не примитивный метод равномерной детальной проработки всех пикселей изображения, а персональный подход к каждому пикселю. К примеру, если какой-то участок изображения состоит из одинаковых пикселей и не требуется их разбития на субпиксели с дальнейшим усреднением их значений, то мультисэмплинг просто пропустит данный участок, рассчитав каждый такой пиксель на основе лишь одного сэмпла, который и будет выступать в роли результирующего пикселя. Или вот еще один вариант ускорения: рассчитанные единожды субпиксели в случае повтора на этом же изображении не рассчитываются снова, а заменяются уже обработанными ранее заготовками.

Очевидно, что более перспективным и рациональным является метод мультисэмплинга. В связи с его широкими возможностями именно ему отдали предпочтение основные игроки индустрии видеочипов —nVidia и ATI. Обе компании разработали свои персональные модификации мультисэмплинга, доступные только архитектуре их чипов. Рассмотрим их более подробно.

Сглаживание от nVidia

Одним из первых концептуальных методов антиалиасинга, предложенным этой компанией, был метод полноэкранного сглаживания HRAA (High Resolution AntiAliasing), который фактически стал прорывом в данной технологии. Его уникальность состояла в том, что функция сглаживания применялась исключительно на краях треугольников, составляющих полигоны, игнорируя все пространство внутри треугольников и снаружи. Такой прием позволил использовать антиалиасинг практически без критических потерь в производительности. С одной стороны, получается, что общее качество изображения не улучшается, сглаживаются только границы полигонов, что после тяжеловесного суперсэмплинга, равномерно улучшающего всю сцену, смотрелось немного дико. Но ведь, с другой стороны, главная задача (борьба с алиасингом) была выполнена более чем успешно, поэтому HRAA можно по праву назвать одним из первых «честных» методов сглаживания.

Ниже представлены доступные на сегодняшний день методы антиалиасинга основанные на технологии мультисэмплинга, которые реализованы в чипах nVidia.

(он же 1Х2). Каждый пиксель разбивается на два сэмпла, строго расположенных рядом по горизонтали (рис. 3). Если через пиксель проходит граница между двумя полигонами, то данный пиксель делится на два сэмпла, смешивание которых и дает результирующий пиксель. Если же через пиксель граница между двумя полигонами не проходит, то его цвет рассчитывается на основе одного сэмпла, который в итоге и соответствует цвету результирующего пикселя.

(2Х2). Как вы уже, вероятно, догадались из названия данного метода, каждый пиксель разбивается на четыре сэмпла, расположенных по углам этого пикселя (рис. 4). Если через пиксель проходит граница двух полигонов, то, как и в режиме 2Х, происходит формирование 2 разграниченных областей с субпикселями. В зависимости от распределения четырех сэмплов одного пикселя на этих двух полигонах, результирующий пиксель формируется с учетом соответствующей пропорции X:Y, где — количество сэмплов, попавших на первый полигон, а Y — количество сэмплов на втором полигоне. Если же пиксель находится на стыке четырех полигонов, что теоретически вполне возможно, то происходит простое смешивание всех сэмплов на подобие суперсэмплинга.

Quincunx. Этот метод основан на том же принципе, что и 2Х, — каждый пиксель делится на два сэмпла, расположенных по горизонтали (рис. 5). Если через пиксель проходит граница двух полигонов, то результирующий пиксель формируется не только на основе двух «родных» сэмплов, но также задействуются еще три сэмпла из соседних пикселей. Казалось бы, что такое «набухание» пикселя должно непременно привести к его сильной размытости и искаженности, но этого не случилось. Инженеры nVidia обошли эту неприятность, установив приоритет важности среди всех пяти пикселей в пользу двух «родных», что в итоге обеспечивает довольно качественный как для такого подхода antialiasing без дополнительных потерь производительности видеокарты.

Рис. 3   Рис. 4   Рис. 5

4X (2X2+5 или 9-tap). Данный метод можно назвать Quincunx для 4Х. Как и 2Х2, он основан на том же делении на 4 сэмпла, но способ формирования результирующего пикселя аналогичен Quincunx с одной поправкой — при четырех «родных» используются не три, а сразу пять соседних сэмплов (рис. 6). Этот режим демонстрирует более качественную картинку, нежели предыдущие, но, к сожалению, наносит значительный ущерб производительности.

4ХS (Accuview). Каждый пиксель состоит из четырех сэмплов. При этом по горизонтали два соседних сэмпла одного пикселя объединяются в одну общую конструкцию, разделяя таким образом один пиксель на два блока (рис. 7). Каждый такой горизонтальный блок сглаживается с помощью метода 2Х, после чего оба полученных горизонтальных блока смешиваются между собой в один общий результирующий пиксель. Если присмотреться к нему поподробнее, можно заметить, что он включает органично переплетенные мультисэмплинг и суперсэмплинг, улучшая все изображение со скоростью, равной режиму мультисэмплинга 2Х2 (см. диаграмму 1)! Чудеса? Отнюдь. Выигрыш в скорости четко прослеживается на финальной стадии создания результирующего пикселя: если режиму 4Х для этого необходимо пройти до четырех стадий, то Accuview в любом эпизоде справляется с данной задачей всего за три шага.

Рис. 6   Рис. 7

ATIшное сглаживание

Уникальной разработкой фирмы ATI является режим полноэкранного сглаживанияSmooth Vision, что в переводе с английского означает «гладкое изображение». Он основан на рожденной в недрах легендарной 3Dfxметодике отступления от четкого размещения субпикселей по осям координат. Реализация этой методики инженерами ATI предполагает практически случайное размещение субпикселей в одном пикселе из восьми возможных позиций (так называемая искаженная решетка —jittered sample pattern). Такой неординарный подход к вопросу просчета сэмплов позволил создать особый вариант сглаживания. По большому счету, ATI отбросила даже само понятие стабильного пикселя при использовании антиалиасинга. Так, Smooth Vision всегда обрабатывает только блоки по 16 сэмплов, лишь в зависимости от режима сглаживания (к примеру, 2Х или 6Х) количественно сортируя их по пикселям, Диаграмма 1аналогично технологии от nVidia.

По степени совершенства Smooth Vision можно условно разделить на два режима: Quality и Performance. Для формирования результирующего пикселя Quality использует определенное количество сэмплов (от двух до шести), тогда как Performance задействует и случайное количество соседних субпикселей, что приводит к появлению тех же недостатков, что и при Quincunx у nVidia.

Улучшение качества прорисовки трехмерных сцен

Как говорил коту Матроскину дядя Федор, чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное. Поэтому прежде чем узнать, как избавляться от артефактов (иными словами, дефектов изображения) при прорисовке трехмерных сцен, давайте для начала разберемся, что, собственно, мы хотим избежать. Общеизвестно, что современная 3D-графика базируется на основе полигональной технологии. О том, что такое «полигоны» и с чем их едят, уже неоднократно рассказывалось на страницах «Моего компьютера», посему особо повторяться на этот счет я не буду. Скажу только, что полигоны, по большому счету, являют собой обыкновенные, знакомые многим из вас еще со школы треугольники. Так вот, для того чтобы мы с вами, играя в компьютерную игру, смотрели не на абстрактные кучки этих самых треугольников, на полигоны накладываются текстуры. Текстура — это обыкновенное плоское изображение-картинка, которое по своей природе мало чем отличается от тех же обоев на вашем рабочем столе и состоит из тысяч таких же пикселей. Текстура как бы приклеивается к определенному полигону или его фрагменту, изменяя свое положение в трехмерной сцене вместе со своим «каркасом»-полигоном, в зависимости от смещения точки обзора. Иными словами, это изображение удаляется, приближается, опускается вниз или отражается на другой поверхности в соответствии с перемещением игрока. В такой ситуации неизбежен очевидный конфликт пикселей: ведь как мы заметили в начале статьи, все они имеют совершенно одинаковые размеры, но при изменении точки обзора некоторым из них приходится приближаться к обозревателю ценой отдаления от него других :-). А куда отдаляться-то, если соседнее пространство занято такими же «ругающимися» пикселями? Вот и получается, что пиксели прыгают туда-сюда или сливаются со своими соседями, представляя нашему взору типичное черте что. Сейчас я попытаюсь рассказать вам, как же с такой гадостью борются (рис. 8).

Одним из способов решения вышеупомянутых проблем является применение билинейной фильтрации. Ее методика основывается на схожих с антиалиасингом технологиях: для определения цвета одного пикселя происходит смешивание четырех соседних текселей (пикселей накладываемой текстуры) по системе 2*(1+1). Данным способом просчитываются цвета всех результирующих пикселей текстуры. Таким образом, билинейная фильтрация практически решает проблему «прыгающих» пикселей. Рис. 8На большее она, к сожалению, не способна.

Для устранения дефекта сливания соседних элементов текстур применяется технология под названием mip-mapping. Она состоит в предварительном расчете всех возможных положений текстуры в 3D-сцене и использовании, в зависимости от ситуации, нужного макета. Каким именно макетом из просчитанных следует воспользоваться, определяется уровнем требуемой детализации, указанным в виде параметра переменной LOD (Level Of Detail). Чем выше его значение, тем более детализированный объект нужно использовать. Значение LOD «0» свидетельствует о том, что следует использовать текстуру в натуральную величину. В то время как параметр «1» указывает на то, что при формировании одного пикселя использовалось несколько текселей, а это является сигналом к применению элемента с меньшим разрешением. Как видите, mip-mapping является действительно очень полезной функцией, так как работающий в данном случае прием действительно предотвращает сливание и растягивание элементов текстур. Но, к сожалению, он влечет за собой другую проблему: стыки применяемых в mip-mapping’е макетов более чем сильно бросаются в глаза и довольно существенно портят всю картину. Для исправления этого побочного эффекта mip-mapping’а используется трилинейная фильтрация.

О ней мы поговорим немного позже, а сейчас мне хотелось бы сказать пару слов относительно еще одной разновидности mip-mapping’а. Как вы понимаете, расчет каждого пикселя на текстуре — довольно трудоемкое, с точки зрения видеокарты, дело. Поэтому разработчики создали более легкий метод mip-mapping’а —полигонный. То есть один полигон соответствует одному mip-map-макету. Довольно умно, не так ли? Нет, не так. Дело в том, что такая попытка избежать нагрузки на ускоритель дало просто ужасные побочные эффекты. Размытые текстуры, скачкообразное и совершенно несвязное чередование LOD и тому подобные «прелести» фактически расписались в несостоятельности per polygon mip-mapping.

Трилинейная фильтрация при корректировке качества трехмерных сцен соотносится с билинейной примерно так же, как HRAA и суперсэмплинг в борьбе с алиасингом. Если билинейная фильтрация фильтрует всю текстуру, то трилинейная занимается только стыками этих самых текстур, «зашпаклевывая» их семишаговым смешиванием восьми текселей (по четыре пикселя с каждой текстуры). Вдобавок к этому в процессе трилинейной фильтрации происходит вычисление усредненного LOD-уровня для Рис. 9соседних mip-map-макетов, что обеспечивает еще более убедительный результат.

Ну и, наконец, поговорим о самой «продвинутой» технологии фильтрации —анизотропной (рис. 9). По сути, она представляет собой уже знакомый нам суперсэмплинг, но с одним существенным отличием. Если суперсэмплинг «насыщает» только пиксели «плоского» изображения в момент статического обозрения, то анизотропная фильтрация обрабатывает схожим образом текстуры 3D-сцен. Анизотропная фильтрация имеет несколько уровней — от  до 16Х, причем коэффициент возле икса равен количеству используемых в данном случае сэмплов текстуры — текселей. Следует заметить, что из всех рассмотренных в нашем кратком обзоре технологий именно анизотропия является самым мощным средством для устранения артефактов в трехмерных сценах.

Тестирование

Все вышеописанные функции видеокарт, бесспорно, хороши. Но их использование вполне естественным образом сопряжено с некой потерей производительности акселератора, ведь на его плечи ложится дополнительная работа. Поэтому давайте сейчас выясним, какой именно процент ресурсов видеоадаптера требуют антиалиасинг и приемы фильтрации — ведь для многих устройств он может быть критически большим и отбросит количество FPS за предел играбельности.

Тестовая платформа:

CPU — Intel Celeron Tualatin 1100 МГц BOX;

Motherboard — Soltek 65EP-T (815EP-B0);

RAM — Micron 256 Мб PC-133;

HDD — WD 30 Гб (5400 об/мин);

Video — Club3D GeForce4 Ti4600 128 Мб.

Окинув взглядом данную конфигурацию, многие компьютерные гуру могут с ухмылкой заявить, мол, система просто не сбалансирована, поэтому результаты тестов окажутся заведомо неправильными. Да, имеющаяся у нас машина просто не в состоянии полностью загрузить GeForce4 Ti4600. Но, скажите мне на милость, какая система способна удовлетворить столь прожорливый девайс? Pentium 4 2.5 ГГц/512 Мб DDR 333? Согласен. Но где, кроме тестовых лабораторий компьютерных журналов, вы сможете встретить такого монстра? Нашим читателям всяко ближе процессор в один гигагерц и объем памяти 256 Мб. Так сказать, «народная» платформа. Поэтому наше тестирование носит скорее практический характер, пригодный для массового пользователя, а не гонится за призрачной истиной в последней инстанции. В завершение этого небольшого отступления хочется уточнить, что данная видеокарта выбрана отнюдь не из-за высокоскоростных показателей. Дело в том, что только полноценные GeForce4 поддерживают весь набор описанных в нашей статье опций манипулирования качеством графики.

Тестом для проверки скорости в Direct3D будет выступать эпизод Game 1 Low из пакета 3DMark2001 SE. Для OpenGL в качестве привычного подопытного кролика задействуется демка demo001 из Quake 3: Arena. Во всех случаях установлено разрешение 1024Х768@32 бита.

В данной статье мы приведем результаты измерений только для видеокарты на чипе от nVidia. Если кого-то заинтересуют аналогичные данные для Radeon’а, можете заглянуть в недавнюю статью Владимира Сироты «ATI — новый чемпион!» (МК, № 40 (211)), там все это есть. Итак, все внимание на GeForce4 Titanium 4600 от Club3D.

Результаты, полученные при использовании разных режимов сглаживания, можно увидеть на диаграмме 1. Предугадывая все читательские вопросы, отмечу, что OpenGL не поддерживает режим 4XS, поэтому в таблице вы не найдете соответствующий показатель для Quake 3. Как видите, современному ускорителю использование уровней сглаживания 2X и Quincunx далось практически «бесплатно» — один кадр вполне укладывается в рамки измерительных погрешностей — поэтому над тем, включать их в опциях драйвера современной видяхи или нет, особо задумываться не следует (рис. 10). С остальными режимами все не так радужно. 4Х потянул за собой 14%-ое падение производительности в Direct3D и 13%-ое в OpenGL, 4Х по девяти сэмплам затормозил карточку на 25% в Direct3D и на 22% в OpenGL, что, согласитесь, уже немало. 4ХS на практике доказал, что является наиболее удачным по соотношению качество/производительность режимом — потери производительности при его Рис. 10использовании равны 18%.

Билинейная и трилинейная фильтрации в OpenGL обошлись почти на шару :-), не дав в графе «потери FPS» ни единого пункта. Анизотропная фильтрация даже восьмого уровня также оказалась легкой добычей для такого мощного чипа, как GF4 Ti4600, — количество FPS упало всего лишь на три, что при значениях выше сотни (в данном случае со 109 FPS до 106 FPS) как минимум не критично. В Direct3D ситуация практически аналогичная: билинейная фильтрация досталась «на халяву», и лишь anisotropy 8X скушала пять кадров (вместо 92 стало 87).

Ну и в завершение нашего практического занятия рассмотрим, как ведет себя «гремучая смесь» из самых прогрессивных приемов фильтрации текстур и антиалиасинга. Простая математика: Anisotropy 8X + 4XS = 45 FPS в Direct3D (при 92 FPS без оных) и Anisotropy 8X + Tri-linear filtering + 4X (9-tap) = 78 (без них 109) FPS в OpenGL. К сожалению, пока что приходится констатировать только одно: кошмар! Более чем 50-процентная (!) потеря производительности в Direct3D, причем следует учесть, что это приводит к снижению частоты кадров до порога играбельности в 60 FPS. А это говорит о том, что современные видеокарты, несмотря на их кажущуюся заоблачной производительность и такую же вознесенную цену, не справляются с подобными жесткими условиями. В OpenGL ситуация не намного краше — производительность видяхи упала на 28.5%. Будем надеяться, что в последующих разработках результаты изменятся к лучшему.

Выводы

На сегодняшний день существует масса разнообразных методов борьбы с противным явлением — алиасингом. Наиболее перспективными из всех описанных в этой статье технологий лично мне видятся Accuview (4ХS) у nVidia и (а что, собственно говоря, есть выбор :-)?) Smooth Vision 2X или 4X у ATI.

Для решения проблемы качественной прорисовки глубины трехмерных сцен также существует довольно много разнообразных способов. Самым перспективным и развиваемым можно с уверенностью назвать вариант с анизотропной фильтрацией — именно на более удачную поддержку этой технологии направлены усилия разработчиков 3D-чипов. Но и прочие приемы из этой области также не следует сбрасывать со счетов — они до сих пор вполне успешно оправдывают оказанное им высокое доверие :-).

И самый главный вопрос: стоит ли использовать описанные здесь методы улучшения трехмерных сцен в повседневной практике? Ответ: стоит. Второй вопрос: стоит ли использовать их в повседневной практике в ущерб производительности и играбельности? Нет. Впрочем, если для вас основополагающим является правило «больше красивостей любой ценой», то вы вряд ли учтете мои рекомендации. И, возможно, правильно поступите :-). В любом случае, решать только вам. Мы же свою функцию по этому вопросу (в плане подачи информации) выполнили. Засим разрешите откланяться.

Выражаем благодарность компании «Навигатор» за предоставленную видеокарту Club3D GeForce4 Ti4600 128 Мб.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov