Site Loader

Содержание

Блоки операций растеризации (ROP). Поломка и ремонт видеокарты

Похожие главы из других работ:

Автоматизация учета банковских операций и ее реализация в программе «1С Бухгалтерия»

2.2 Характеристика бизнес-процессов по учету банковских операций. Декомпозиция бизнес процесса банковских операций

Если всю деятельность компании можно разделить на бизнес процессы, то и процессы можно разделить на более мелкие составляющие. В методологии построения бизнес процессов это называется декомпозицией…

Внутренние и периферийные устройства ПК

1.7. Блоки расширения

Блоки (платы) расширения или карты (Card), как их иногда называют, могут использоваться для обслуживания устройств, подключаемых к IBM PC. Они могут использоваться для подключения дополнительных устройств (адаптеров дисплея, контроллера дисков и т.п.)…

Изучение дискретной модели популяции при помощи программы Model Vision Studium

1.
4 Блоки и связи

Основным « строительным элементом » описания в MVS является блок. Блок — это некоторый активный объект, функционирующий параллельно и независимо от других объектов непрерывном времени. Блок является ориентированным блоком…

Использование LMS Moodle в учебном процессе

3.2 Блоки в курсе

Для любого курса обязательно наличие центральной области. Левой и правой колонки с блоками может не быть. Но различные блоки, входящие в состав системы управления обучением Moodle, увеличивают функциональность…

Исследование возможностей преподавателя в системе дистанционного обучения Moodle

2.2 Блоки курса

Для добавления новых ресурсов, элементов, блоков или редактирования имеющихся в вашем курсе нажмите кнопку Редактировать, расположенную в блоке управления. Общий вид окна курса в режиме редактирования представлен на рисунке 2.5: Рисунок 2…

Моделирование при разработке программного обеспечения

5.
Строительные блоки UML

Словарь языка UML включает три вида строительных блоков: сущности; отношения; диаграммы. Сущности — это абстракции, являющиеся основными элементами модели…

Моделирование работы в библиотеке

1.1 Операторы — блоки

Операторы — блоки формируют логику модели. В GPSS/PC имеется около 50 различных видов блоков, каждый из которых выполняет свою конкретную функцию. За каждым из таких блоков стоит соответствующая подпрограмма транслятора…

Основные возможности CSS3

5. Разговорные блоки

Можно оригинально оформить текст с помощью разнообразных разговорных блоков, которые, опять таки, сделаны на основе CSS3 технологий. (Рис 5.) Рис 5…

Основные возможности CSS3

9. Полупрозрачные блоки

Эффект полупрозрачности элемента хорошо заметен на фоновом рисунке и получил распространении в разных операционных системах, потому что смотрится стильно и красиво…

Подготовка текстового документа в соответствии с СТП 01-01

2.
7. Блоки расширения

Блоки (платы) расширения или карты (Card), как их иногда называют, могут использоваться для обслуживания устройств, подключаемых к IBM PC. Они могут использоваться для подключения дополнительных устройств (адаптеров дисплея, контроллера дисков и т.п.)…

Поломка и ремонт видеокарты

Блоки текстурирования (TMU)

Эти блоки работают совместно с шейдерными процессорами всех указанных типов, ими осуществляется выборка и фильтрация текстурных данных, необходимых для построения сцены…

Программа регистрации процесса производства для автоматизированной системы управления предприятием электронной промышленности

1.2.2 Блоки MES-систем

Различают 11 типов блоков, из которых может быть изготовлена конкретная MES система для того или иного производства…

Разработка программного комплекса расчета компенсаций по капитальному ремонту

4.2 Блоки данных

На самом низшем уровне гранулярности данные базы данных Oracle хранятся в блоках данных.

Один блок данных соответствует определенному числу байтов физического пространства на диске…

Розробка апаратно-програмного забезпечення системи управління транспортними платформами в Simatic Step-7

1.3.2 Системні блоки

Системні блоки є компонентами операційної системи. Вони можуть містити програми (системні функції, SFC) або дані (системні блоки даних, SDB). Системні блоки надають доступ до важливих системних функцій…

Устройства, входящие в состав ЭВМ

7. Блоки расширения

Блоки (платы) расширения или карты (Card), как их иногда называют, могут использоваться для обслуживания устройств, подключаемых к IBM PC. Они могут использоваться для подключения дополнительных устройств (адаптеров дисплея, контроллера дисков и т.п.)…

Обзор видеокарты GIGABYTE GeForce RTX 3060 GAMING OC 12G

В условиях нынешних тотального дефицита видеокарт анонс любой новинки является нерядовым событием, привлекающим внимание как любителей поиграть, не оставляющих надежд обзавестись подходящим решением для комфортного времяпровождения, так и добытчиков виртуальных валют, которые ожидают пополнения для своих майнерских ферм. Сегодня у нас на обзоре новинка из линейки графических решений с архитектурой Ampere – GeForce RTX 3060 12 ГБ. Очень перспективная модель среднего класса с большим объемом памяти и привлекательным рекомендуемым ценником в $329. Оцениваем возможности видеокарты с чипом GA106, используя оригинальную модель GIGABYTE GeForce RTX 3060 GAMING OC 12G.

от 40 787 грн

Предложений: 1

NVIDIA GeForce RTX 3060

Для GeForce RTX 3060 используется процессор GA106 с графической архитектурой Ampere. Как и другие GPU серии, чип производится компанией Samsung по 8-нанометровой технологии. Кристалл имеет площадь 276 мм² и включает 13,3 млрд. транзисторов. Отметим, что кремниевая пластинка здесь заметно компактнее таковой у старшего чипа GA104, который используется для GeForce RTX 3060 Ti/3070 (392 мм², 17,4 млрд.). Меньшие габариты кристалла косвенно позволяют говорить о снижении себестоимости изготовления видеокарт.

Любопытно, что для десктопной версии GeForce RTX 3060 используется конфигурация GPU с несколько меньшим количеством функциональных блоков, чем у мобильной модификации видеокарты. У последней заметно снижены рабочие частоты, однако число активных вычислителей выше. Предположим, что в случае с десктопной GeForce RTX 3060 определенный задел оставлен для возможного появления в будущем ускоренных SUPER-модификаций.

GeForce RTX 3060 Ti GeForce RTX 3060 GeForce RTX 2060
Наименование кристалла GA104-200 GA106-300 TU106-200A
Графическая архитектура Ampere Ampere Turing
Техпроцесс производства 8 нм 8 нм 12 нм
Площадь кристалла 392 мм² 276 мм² 445 мм²
Количество транзисторов, млрд 17,4 млрд.
13,25 млрд. 10,8 млрд.
Тактовая частота GPU 1410/1665 МГц 1320/1777 МГц 1365/1680 МГц
Потоковые процессоры 4864 3584 1920
Текстурные блоки 152 112 120
Блоки растеризации 80 48 48
RT-ядра 38 (2-е поколение) 28 (2-е поколение) 30 (1-е поколение)
Тензорные ядра 152 (3-е поколение) 112 (3-е поколение) 240 (2-е поколение)
Память (тип, объем) GDDR6, 8 ГБ GDDR6, 12 ГБ GDDR6, 6 ГБ
Шина памяти 256 бит 192 бита 192 бита
Эффективная тактовая частота памяти 14 000 МГц 15 000 МГц 14 000 МГц
Пропускная способность памяти 448 ГБ/c 360 ГБ/c 336 ГБ/c
Энергопотребление, Вт 200 Вт 170 Вт 160 Вт

Возвращаясь к представленной версии GeForce RTX 3060 для ПК, отметим, что GA106-300 включает 3584 вычислителя, 112 текстурный модулей и 48 блоков растеризации. Кроме того GPU также содержит 112 тензорных ядер третьего поколения и 28 RT-ядер второй генерации для аппаратного ускорения трассировки лучей. Базовая частота графического процессора определена на уровне 1320 МГц, а среднее значение ускорения составляет 1777 МГц. В подобной конфигурации пиковая производительность при операциях одинарной точности (FP32) составляет 12,74 TFLOPS. Для сравнения это же значение у GeForce GTX 1060 6 ГБ – 4,38 ТFLOPS.

Для GeForce RTX 3060 используется 192-битовая шина памяти, при этом видеокарты линейки оснащаются 12 ГБ локальной ОЗУ. В данном случае объем памяти больше даже, чем у GeForce RTX 3080, которая имеет на борту 10 ГБ. Адаптеры оснащаются чипами GDDR6 с эффективной рабочей частотой 15 000 МГц. Учитывая разрядность магистрали передачи данных, пиковая пропускная способность памяти составляет 360 ГБ/c. Номинально хороший показатель для графических режимов Full HD и 1440p, а уж объема памяти так и вовсе с избытком для игр с таким разрешением. Есть предпосылки к тому, что со временем могут появиться версии с 6 ГБ памяти на борту, но официально никакой информации на этот счет нет – в штатном варианте GeForce RTX 3060 оснащаются 12 ГБ памяти.

Тепловой пакет новинки чуть выше, чем у предшественницы – заявленный параметр Graphics Card Power видеокарты GeForce RTX 3060 12 ГБ составляет 170 Вт, вместо 160 Вт у GeForce RTX 2060 6 ГБ. Разработчик рекомендует использовать для системы с GeForce RTX 3060 блоки питания мощностью от 550 Вт.

NVIDIA не предлагает референсную версию GeForce RTX 3060, целиком полагаясь в этом вопросе на своих партнеров. Производители видеокарт представили широкий ассортимент оригинальных моделей на базе GA106, которые традиционно отличаются дизайнами печатных плат, компонентным оснащением и конфигурациями систем охлаждения. Одну из таких моделей мы и будем использовать для более предметного знакомства с возможностями GeForce RTX 3060 12 ГБ.

Несмотря на то, что эталонная версия GeForce RTX 3060 не представлена, компания NVIDIA конечно обозначила рекомендованную стоимость для моделей этой серии. Для американского рынка это $329 (без учета налогов), тогда как для Украины – 12 990 грн. Насколько полезной будет эта информация в нынешних условиях – вопрос риторический, но формальности соблюдены.

GIGABYTE GeForce RTX 3060 GAMING OC 12G

Компания GIGABYTE на старте предлагает пять моделей серии GeForce RTX 3060, причем речь идет сразу о четырех различных линейках. Это пара стартовых двухвентиляторных EAGLE, «криэйторская» версия VISION, схожая с ней по компоновке, но более привычная по оформлению классическая GAMING с трехвентилятрным кулером, а также топовая модель AORUS ELITE.

К нам на тестирование попала GIGABYTE GeForce RTX 3060 GAMING OC 12G. Как несложно догадаться по названию, модель принадлежит серии GAMING и предлагается с заводским разгоном.

В данном случае для графического процессора предлагается частотная формула 1320/1837 МГц, вместо рекомендованной для базовых версий 1320/1777 МГц.

Видеокарта поставляется в картонной коробке средних габаритов с узнаваемым оформлением. В комплекте только краткое бумажное руководство.

Дизайн и компоновка

Внешнее оформление модели можно назвать типичным для последних моделей серии GAMING. Для защитного пластикового кожуха используется комбинация ассиметричной панели с черным основанием и парой графитовых вставок.

Для GIGABYTE GeForce RTX 3060 GAMING OC 12G используется одна из вариаций трехвентиляторной системы охлаждения WINDFORCE 3X. В конструкции применяется три наборные кассеты алюминиевых пластин, которые связаны между собой тремя тепловыми трубками диаметром 6 мм.

Общая конструкция радиатора предполагает прямой контакт тепловых трубок с кристаллом графического процессора. Таким способом максимально ускоряется передача тепла от GPU на удаленные участки радиаторного блока, однако для исключения зон перегрева на стыках трубок необходима хорошая обработка и подгонка элементов.

Силовые элементы подсистемы стабилизации питания размещены вдоль интерфейсной панели. Для сборок предусмотрено дополнительно охлаждение – элементы VRM через термопрокладки контактируют с одной из радиаторных кассет.

Дополнительный отвод тепла предусмотрен и для микросхем памяти, которые прикрывает алюминиевая пластинка, связанная с основанием радиаторного блока.

Несмотря на значительные общие габариты устройства по длине (282 мм), адаптер имеет достаточно компактную печатную плату (173 мм), а также двухслотовый общий дизайн.

Для обдува радиаторного блока используется три 80-миллиметровых вентилятора осевого типа со специфической формой крыльчатки и незначительным оребрением на лопастях. По заявлению разработчиков, такие конструктивные особенности позволяют увеличить воздушный поток. Справиться же с возникновением зон турбулентности должно помочь разнонаправленное вращение центрального и боковых вентиляторов.

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

Для подключения дополнительного питания на верхней кромке видеокарты предусмотрен один 8-контактный разъем. Учитывая заявленный уровень энергопотребления GeForce RTX 3060 в 170 Вт, этого должно быть вполне достаточно. Подобный коннектор позволяет подвести до 150 Вт энергии, еще 75 Вт можно получить от слота PCI Express x16. Несмотря на заводской разгон GPU, рекомендации инженеров GIGABYTE по части мощности используемого блока питания неизменны – 550 Вт.

Производитель оснастил видеокарту дополнительной системой индикации подключения силовой линии. Рядом с коннектором питания расположен яркий белый светодиод, который загорается в случае, если вы пытаетесь запустить систему, предварительно не подключив к видеокарты силовой кабель.

В серии видеокарт GAMING разработчики очень сдержанно подходят к дополнительной RGB-подсветке. В данном случае подсвечивается лишь логотип на верхней кромке адаптера, а также расположенная рядом полоска световода на скошенной фаске.

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

Технический прием, получивший название Screen Cooling в последнее время довольно часто используется для трехвентиляторных моделей видеокарт с укороченной базой печатной платы. Если габариты PCB действительно позволяют сквозной продув радиатора, это стоит использовать

Можно также отметить попытку разработчиков акцентировать генерируемый вентилятором поток – защитный кожух в этой зоне достаточно плотно прилегает к пластине, формируя требуемый воздуховод.

На интерфейсную панель видеокарты выведено четыре видеовыхода – по паре полноформатных DisplayPort 1. 4a и HDMI 2.1. Значительную часть крепежной пластины занимают отверстия для дополнительной вентиляции.

В работе

Система охлаждения GIGABYTE GeForce RTX 3060 GAMING OC 12G поддерживает гибридный режим, предполагая остановку вентиляторов при минимальной нагрузке.

В режиме покоя на открытом стенде (+22С) температура графического процессора удерживалась на уровне 35–36С.

Под нагрузкой температура GPU повышалась до ~63C. Любопытно, что версия сервисной утилиты GPU-Z 2.37 теперь может считывать показатели в наиболее горячей точке (Hot Spot), а не только усредненное значение. В данном случае температурная дельта под нагрузкой составляет порядка 12С.

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

В играх графический процессор автоматически ускорялся почти до 2000 МГц. Утилита GPU-Z фиксирует энергопотребление видеокарты на уровне 176 Вт.

Конфигурация тестового стенда

Процессор Intel Core i7-9700K (8/8; 3,6/4,9 ГГц) Intel, www.intel.com
Материнская плата ASUS ROG Maximus X HERO (Intel Z370) ASUS, www.asus.ua
Оперативная память G.Skill Trident Z Royal Gold 2×8 ГБ (F4-3600C16D-16GTRG) G.Skill, www.gskill.com
Накопитель Kingston KC2500 1 ТБ (SKC2500/1000G) Kingston Technology, www.kingston.com
Блок питания ASUS ROG Strix 1000W, 1000 Вт ASUS, www.asus.ua
Монитор Acer Predator XB271HK (27″, 3840×2160) Acer, www. acer.ua

Производительность 4К

Для оценки производительности GeForce RTX 3060 12 ГБ мы использовали GeForce GTX 1060 6 ГБ. Без преувеличение культовая модель, которая до сих пор остается самой популярной видеокартой среди пользователей сервиса Steam. Устройствами на базе GP106 все еще пользуется порядка 10% активных любителей поиграть. Посмотрим, насколько достойным апдейтом может стать GeForce RTX 3060 для хита пятилетней давности.

Для сравнения на диаграммы также добавлены результаты GeForce GTX 1660 SUPER 6 ГБ. Также удачной модели, которая была особо популярна у RT-скептиков, которые не особенно верили в успех гибридной модели рендеринга с трассировкой лучей, ну, или не были готовы платить за то, чтобы оказаться в ряду первооткрывателей.

GeForce RTX 3060 Ti GeForce RTX 3060 GeForce RTX 2080 GeForce GTX 1660 SUPER GeForce GTX 1060
Наименование кристалла GA104-200 GA106-300 TU104-400A TU116-300 GP106-400
Графическая архитектура Ampere Ampere Turing Turing Pascal
Техпроцесс производства 8 нм 8 нм 12 нм 12 нм 16 нм
Площадь кристалла 392 мм² 276 мм² 545 мм² 284 мм² 200 мм²
Количество транзисторов, млрд 17,4 млрд. 13,25 млрд. 13,6 млрд. 6,6 млрд. 4,4 млрд.
Тактовая частота GPU 1410/1665 МГц 1320/1777 МГц 1515/1710 МГц 1530/1785 МГц 1506/1709 МГц
Потоковые процессоры 4864 3584 2944 1408 1280
Текстурные блоки 152 112 184 88 80
Блоки растеризации 80 48 64 48 48
RT-ядра 38 (2-е поколение) 28 (2-е поколение) 46 (1-е поколение)
Тензорные ядра 152 (3-е поколение) 112 (3-е поколение) 368 (2-е поколение)
Память (тип, объем) GDDR6, 8 ГБ GDDR6, 12 ГБ GDDR6, 8 ГБ GDDR6, 6 ГБ GDDR5, 6 ГБ
Шина памяти 256 бит 192 бита 256 бит 192 бита 192 бита
Эффективная тактовая частота памяти 14 000 МГц 15 000 МГц 14 000 МГц 14 000 МГц 8000 МГц
Пропускная способность памяти 448 ГБ/c 360 ГБ/c 448 ГБ/c 336 ГБ/c 192 ГБ/c
Энергопотребление, Вт 200 Вт 170 Вт 215 Вт 125 Вт 120 Вт

К сожалению у нас не было возможности включить в тестирование непосредственных предшественников – GeForce RTX 2060 и GeForce RTX 2060 SUPER. Несмотря на информацию о том, что NVIDIA планирует возобновить поставки чипов для этих моделей, видеокарты этих серий по-прежнему в большом дефиците. Впрочем, но только этих. Потому серию моделей с RTX первого поколения поддержит GeForce RTX 2080 Founders Edition 8 ГБ. Слегка ускоренная модификация станет опорной точкой, отталкиваясь от которой не сложно интерполировать результаты в рамках серии.

Ну, а верхним ограничителем будет старшая модель линейки – GeForce RTX 3060 Ti 8 ГБ. Новинке наверняка не удастся дотянуться до показателей устройства на GA104, однако фактическое отличие в производительности также будет информативно.

Первые замеры в 3DMark определяют стартовые позиции всех участников. Несколько непривычно видеть GeForce GTX 1060 6 ГБ в качестве стартовой точки отсчета, тем более, когда столь заслуженная модель так сильно уступает более совершенным устройствам. GIGABYTE GeForce RTX 3060 GAMING OC 12G более, чем вдвое опережает титулованного «предка» в подтестах Time Spy c классическим рендерингом в DirectX 12. Ну, а десятикратное отличие в Port Royal – лишь очередное подтверждение тому, насколько важна аппаратная поддержка для просчета трассировки. Силами транслятора API лучи можно “двигать лучи” и с помощью универсальных шейдерных вычислителей, но… не надо так.

Хотя GeForce RTX 3060 номинально не позиционируется производителем, как решение для игр в режиме 4К, мы будем продвигаться по нисходящей. Высокое разрешение позволяет выявить сильные и слабые сторона адаптеров, потому не хотелось бы упустить из вида какие-то особенности.

В целом здесь обходится без каких-то сюрпризов. GeForce RTX 3060 12 ГБ в том числе и в реальных играх имеет как минимум двукратное преимущество над GeForce GTX 1060 6 ГБ. В то же время новинка на 15–22% уступает GeForce RTX 2080 8 ГБ. Если двигаться по линейке Turing, то примерно схожие показатели демонстрирует классическая GeForce RTX 2070 8 ГБ, которая в свою очередь на 5–7% опережает GeForce RTX 2060 SUPER 8 ГБ и на 20% быстрее стартовой GeForce RTX 2060 6 ГБ.

Модели с тензорными ядрами ожидаемо получают хорошую прибавку производительности при использовании интеллектуального масштабирования DLSS (Deep Learning Super Sampling). Технология второго поколения способна вытягивать картинку при меньшем исходном разрешении рендеринга с последующим восстановлением без потери детализации.

Особенно полезной DLSS может оказаться в проектах с активированной трассировкой лучей, когда нагрузка на GPU повышается, а на счету оказывается буквально каждый дополнительный fps. Младшая модель в серии Ampere вполне умело использует доступный ассортимент технологий, но, опять же, как видим, для режима 4К с максимальным качеством графики нужны в принципе более производительные решения, потому как даже GeForce RTX 3060 Ti в подобных условиях уже не всегда справляется.

Производительность 2560×1440

Режим 1440p уже значительно более комфортен для GeForce RTX 3060. Соотношение сил участников теста в целом сохраняется. Отметим существенное отличие в производительности GeForce RTX 3060 Ti и RTX 3060.

Даже в режимах с разрешением 2560х1440 старшая “титановая” версия зачастую имеет заметное преимущество – 20–25%. Предположим, что подобный зазор производительно оставил намеренно для SUPER-модификации RTX 3060, которая возможно появится в будущем. Технологический задел для этого имеется. Например, такая модель могла бы использовать полновесную модификацию чипа GA106 со всеми активированными вычислителями и повышенной рабочей частотой.

Впрочем, даже в представленном варианте GeForce RTX 3060 12 ГБ отлично себя показывается в 1440p. Да, в самых тяжелых проектах все же придется поиграться с ползунками, подбирая настройки для стабильных 60 кадров/c. Но слишком уж значительные  коррекции не понадобятся, а зачастую модель предлагает хорошую производительность даже на максималках.

Производительность 1920×1080

Снижаем разрешение до Full HD, и заставить копаться в настройках владельца GeForce RTX 3060 здесь cможет разве что прожорливая Cyberpunk 2077, да и то, это уже скорее для подстраховки.

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

Здесь также хочется отметить возможности GeForce GTX 1060 6 ГБ. Тестовые результаты показывают, что время этого адаптера уже уходит. Все чаще видеокарта не может обеспечить комфортной производительности при высоких настройках качества графики даже без дополнительных эффектов с трассировкой. Любопытно, что двукратное преимущество GIGABYTE GeForce RTX 3060 GAMING OC 12G над возрастной моделью сохранятся и в режиме Full HD. Это хорошая опция для апгрейда, который будет хорошо ощущаться даже без дополнительных замеров производительности. Ну, а если вспомнить о «плюшках» с поддержкой RT и DLSS, то это просто уже вопрос решенный. Но, цена вопроса сейчас еще более актуальна.

Рабочие приложения на GPU

GeForce RTX 3060 имеет огромный локальный буфер по меркам устройств среднего класса. Имеющиеся 12 ГБ позволяют не только закрыть вопрос с недостатком памяти в играх во всех актуальных для этой модели режимах, но, возможно эффективнее использовать видеокарту в рабочих задачах.

Мы провели ряд экспресс замеров в различных приложениях, использующих ресурсы GPU для рендеринга, визуализации и вычислений. Любопытно, что в большинстве случаев GeForce RTX 3060 оказалась производительнее GeForce RTX 2080 FE, несмотря на то, что в играх последняя имела стабильное преимущество. Все же архитектурные улучшения и огромный буфер в ряде задач могут играть на руку новинке Ampere, позволяя ей опережать предшественников классом повыше.

Разгон

Перед экспериментами с разгоном GIGABYTE GeForce RTX 3060 GAMING OC 12G сразу отмечаем, что видеокарта позволяет значительно увеличить параметр Power Limit – на 24%. Хороший знак.

Действительно, адаптер позволил увеличить базовое значение частоты GPU на 170 МГц – с 1320 до 1490 МГц. При этом среднее значение динамического ускорения чипа повысилось пропорционально – с 1837 до 2037 МГц. С учетом того, что номинальной для GeForce RTX 3060 является 1777 МГц, то имеем итоговый частотный прирост на уровне 14,6%.

Весьма неплохо удалось ускорить и микросхемы памяти. Чипы от Samsung стабильно работали на эффективных 17 600 (2200) МГц, вместо штатных 15 000 МГц. Пропускная способность подсистемы памяти возросла с 360 ГБ/c до 422 ГБ/c. Прирост ПСП на ~17% будет не лишним и наверняка скажется на результатах.

Практические замеры показали, что дополнительный разгон в данном случае вполне имеет практический смысл. Таким доступным способом вполне можно увеличить количество кадров/c на ~10%. Конечно, рост производительности не пропорционален увеличению частоты, но и полученное ускорение уже вовсе не “погрешность измерений”.

После дополнительного ускорения пиковая частота GPU повышалась до 2160 МГц. При этом в играх типичными были значения 2100–2140 МГц. Нагрев графического процессора повысился на 2 градуса – до 65С в среднем и до 77С в наиболее горячей точке. Скорость вращения также повышалась на 150 об/мин. Несмотря на то, что предел мощности был изначально увеличен на доступные 24%, параметр Board Power Draw увеличивался примерно на 12% – до 197 Вт.

Энергопотребление

Мы также замерили общее энергопотребление систем, оснащенных видеокартами, участвующими в сравнительном тестировании.

Показатели платформы с GeForce RTX 3060 12 ГБ вполне прогнозируемы. Очевидно, что видеокарта потребляет несколько больше моделей предыдущих поколений без возможностей RTX. Вместе с тем, фактическая разница в производительности этих решений говорит о лучшей энергоэффективности новинки на базе Ampere. Но если оценивать заявленные значения TDP с таковыми для близких по производительности моделями на базе Turung, то каких-то прорывов здесь тоже нет. Напомним, что для GeForce RTX 2060 SUPER и GeForce RTX 2070 заявлен тепловой пакет в 175 Вт. Впрочем, последние оснащены 8 ГБ памяти, тогда как у GeForce RTX 3060 – 12 ГБ.

Итоги

GeForce RTX 3060 12 ГБ – прекрасный кандидат на позицию в оптимальной игровой платформе. Видеокарта предлагает хорошую производительность в режимах 1080p/1440p, поддерживает все последние разработки NVIDIA, а просто таки огромный буфер в 12 ГБ будет не только подстраховкой для ресурсоемких игр, но может пригодиться для рабочих задач. Если экстраполировать результаты, то младшая модель Ampere предлагает производительность уровня GeForce RTX 2070. Здесь можно было бы продолжить фразу, указав на то, что она стоит заметно дешевле предшественницы. Однако стоимость видеокарт сейчас настолько же непостоянная величина, как и цена криптовалют. И если последняя значительно колеблется в обе стороны, то графические адаптеры пока только дорожают. Нужно ли говорить, что успех не только этой модели, но и любой другой на рынке, будет зависеть от розничных цен. Вы только представьте, насколько мир стал бы добрее, если бы GeForce RTX 3060 12 ГБ можно было купить за 13 000 грн. Увы, но нет. В лучшем случае указанный ценник придется умножить на два, а это уже принципиально влияет на интерес игровой аудитории, которой видеокарта нужна для души, а не бесконечных пересчетов ее окупаемости.

Плюсы: Хорошая игровая производительность в режимах 1080p/1440p; 12 ГБ памяти; модель от GIGABYTE предлагает хороший частотный потенциал для разгона GPU/памяти; гибридный режим работы СО с остановкой вентиляторов в покое; настраиваемая RGB-подсветка; двухслотовый дизайн; конструкция кулера со сквозным продувом радиатора; два порта HDMI 2.1

Минусы: Стартовая розничная цена; нет второго BIOS с «тихим» профилем

Вывод: GIGABYTE GeForce RTX 3060 GAMING OC 12G – тюнингованная версия GeForce RTX 3060 с форсированным GPU, гибридной и достаточно эффективной системой охлаждения, а также настраиваемой RGB-подсветкой умеренной интенсивности. Видеокарта предлагает производительность уровня GeForce RTX 2070, удваивая показатели очень популярной, но уже не всегда вытягивающей GeForce GTX 1060 6 ГБ. Объем памяти в 12 ГБ позволяет не задумываться о ее недостатке в любом подъемном для RTX 3060 режиме, к тому же это хорошее подспорье для задач с неигровыми вычислениями. Здесь можно было бы написать, что успех видеокарты определит ее цена, но сейчас это слишком уж переменная величина.

Технические характеристики

Ampere — новейшая игровая архитектура NVIDIA. Самое важное из вайт пейпера / Хабр

С момента изобретения своего первого графического процессора в 1999 году NVIDIA находится в авангарде трехмерной графики и вычислений с ускорением на графическом процессоре. Каждая архитектура NVIDIA тщательно разработана для обеспечения революционного уровня производительности и эффективности.

A100, первый графический процессор с архитектурой NVIDIA Ampere, был выпущен в мае 2020 года. Он обеспечивает колоссальное ускорение для обучения ИИ, высокопроизводительных вычислений и анализа данных. В основе A100 лежит чип GA100 — чисто вычислительный и, в отличие от GA102, еще не игровой.

Графические процессоры GA10x основаны на архитектуре графических процессоров NVIDIA Turing. Turing — первая архитектура в мире, предлагающая высокопроизводительную трассировку лучей в реальном времени, графику с ИИ-ускорением и профессиональный рендеринг графики — все в одном устройстве.

В этой статье мы разберем основные изменения в архитектуре новых видеокарт NVIDIA по сравнению с предшественницей.


Рисунок 1. Архитектура Ampere GA10x

Основные характеристики GA102

GA102 изготовлен по собственной технологии NVIDIA на базе 8 нм — 8N NVIDIA Custom. Чип содержит 28,3 миллиарда транзисторов на кристалле размером 628,4 мм2. Как и во всех GeForce RTX, в основе GA102 лежит процессор, содержащий три различных типа вычислительных ресурсов:

  • CUDA-ядра для программируемого шейдинга;
  • RT-ядра, ускоряющие расчет пересечений геометрии сцены с ограничивающими объемами (BVH) во время трассировки лучей;
  • Тензорные ядра, значительно ускоряющие вывод и обучение нейронной сети.

Описание архитектуры Ampere


Высокоуровневая архитектура GPC, TPC и SM

Как и предшественники, GA102 состоит из графических кластеров Graphics Processing Cluster (GPC), кластеров обработки текстур Texture Processing Cluster (TPC), потоковых мультипроцессоров (SM), блоков растеризации Raster Operator (ROP) и контроллеров памяти. Полный чип имеет семь блоков GPC, 42 TPC и 84 SM.

GPC — это доминирующий высокоуровневый блок, включающий все ключевые графические составляющие. Каждый GPC имеет выделенный движок Raster Engine, а теперь еще и по два раздела ROP из восьми блоков каждый, что является новшеством архитектуры Ampere. Кроме того, GPC содержит шесть TPC, в каждом из которых расположено по два мультипроцессора и по одному PolyMorph Engine.


Рисунок 2. Полный GPU GA102 с 84 блоками SM

В свою очередь, каждый SM в GA10x содержит 128 CUDA-ядра, четыре тензорных ядра третьего поколения, регистровый файл 256 КБ, четыре текстурных блока, одно ядро трассировки лучей второго поколения и 128 КБ L1/общей памяти, которые могут быть настроены для различных мощностей в зависимости от потребностей вычислительных или графических задач.

Оптимизация блоков растеризации (ROP)

В предыдущих графических процессорах NVIDIA ROP были привязаны к контроллеру памяти и кэшу L2. Начиная с GA10x, они являются частью GPC, что повышает производительность растровых операций за счет увеличения общего числа ROP.

Итого, имея по семь кластеров GPC и 16 блоков ROP в каждом GPC, графический процессор GA102 состоит из 112 ROP вместо 96, например, в TU102. Все это оказывает положительное влияние на мультисэмпловое сглаживание, скорость заполнения пикселей и блендинг.

NVLink третьего поколения

Графические процессоры GA102 поддерживают интерфейс NVIDIA NVLink третьего поколения, включающий в себя четыре канала x4, каждый из которых обеспечивает пропускную способность 14,0625 ГБ/с между двумя графическими процессорами в любом направлении. Четыре канала вместе дают пропускную способность 56,25 ГБ/с в каждом направлении и в целом 112,5 ГБ/с между двумя графическими процессорами. Так, с помощью NVLink можно соединить два графических процессора RTX 3090.

PCIe четвертого поколения

Графические процессоры GA10x оснащены интерфейсом PCI Express 4.0, который обеспечивает вдвое большую пропускную способность по сравнению с PCIe 3.0, скорость передачи данных до 16 гигатрансферов в секунду, а благодаря слоту x16 PCIe 4.0 пиковая пропускная способность достигает 64 ГБ/с.

Архитектура мультипроцессоров GA10x

Архитектура мультипроцессоров Turing стала первой в NVIDIA, у которой имелись отдельные ядра для ускорения операций трассировки лучей. Затем в Volta появились первые тензорные ядра, а в Turing — усовершенствованные тензорные ядра второго поколения. Еще одним нововведением в Turing и Volta стала возможность одновременного выполнения операций FP32 и INT32. Мультипроцессор в GA10x поддерживает все вышеперечисленные возможности, а также имеет ряд собственных улучшений.

В отличие от TU102, состоящего из восьми тензорных ядер второго поколения, мультипроцессор GA10x имеет четыре тензорных ядра третьего поколения, причем каждое тензорное ядро GA10x в два раза мощнее, чем у Turing.


Рисунок 3. Потоковый мультипроцессор GA10x

Удвоенная скорость вычислений FP32

Большинство графических вычислений приходится на 32-битные операции с плавающей запятой (FP32). Потоковый мультипроцессор в архитектуре Ampere GA10x обеспечивает в два раза более быструю обработку операций FP32 в обоих каналах данных. В результате в разрезе FP32 GeForce RTX 3090 обеспечивает более 35 терафлопс, что более чем в 2 раза превышает возможности Turing.

GA10X может выполнять 128 FP32-операций или 64 операции FP32 и 64 INT32 за такт, что вдвое превышает скорость вычислений Turing.

Задачи современного гейминга имеют широкий спектр потребностей в обработке. Многие вычисления требуют связки операций FP32 (таких как FFMA, сложение с плавающей запятой (FADD) или умножение с плавающей запятой (FMUL)), а также выполнения множества более простых целочисленных вычислений.

Мультипроцессоры GA10x продолжают поддерживать двухскоростные операции FP16 (HFMA), которые поддерживались и в Turing. И, аналогично графическим процессорам TU102, TU104 и TU106, в GA10x стандартные операции FP16 тоже обрабатываются тензорными ядрами.

Разделяемая память и кэш данных L1

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

Чип GA102 содержит 10752 КБ кэша L1 (по сравнению с 6912 КБ в TU102). Помимо этого, GA10x также имеет удвоенную пропускную способность разделяемой памяти по сравнению с Turing (128 байт/такт против 64 байт/такт). Общая пропускная способность L1 для GeForce RTX 3080 составляет 219 ГБ/с против 116 ГБ/с у GeForce RTX 2080 Super.

Производительность на ватт

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


Рисунок 4. Эффективность энергопотребления RTX 3080 по сравнению с архитектурой GeForce RTX 2080 Super

RT-ядра второго поколения

Новые RT-ядра имеют ряд улучшений, которые в совокупности с обновленными системами кэширования эффективно удваивают производительность процессоров Ampere по сравнению с Turing в вопросах трассировки лучей. Кроме того, GA10x позволяет запускать одновременно с RT-вычислениями и другие процессы, тем самым значительно ускоряя многие задачи.

Трассировка лучей второго поколения в GA10x

GeForce RTX на основе архитектуры Turing стали первыми графическими процессорами, с которыми кинематографическая трассировка лучей стала реальностью в компьютерных играх. GA10x оснащены технологией трассировки лучей уже второго поколения. Как и у Turing, мультипроцессоры в GA10x имеют специализированные аппаратные блоки для проверки на пересечения лучей с BVH и треугольниками. При этом ядра мультипроцессоров Ampere имеют вдвое большую скорость тестирования пересечения лучей и треугольников по сравнению с Turing.


Рисунок 5. Сравнение производительности RT-ядер GeForce RTX 3080 и GeForce RTX 2080 Super

Мультипроцессор GA10x может выполнять операции одновременно и при этом не ограничивается только вычислениями и графикой, как это было в предыдущих поколениях графических процессоров. Так, например, в GA10x алгоритм шумоподавления может выполняться одновременно с трассировкой лучей.


Рисунок 6. Ядро RT второго поколения в графических процессорах GA10x

Обратите внимание, что рабочие нагрузки с интенсивным использованием RT-ядер не вызывают значительного повышения нагрузки на ядра мультипроцессора, тем самым позволяя использовать мультипроцессорную вычислительную мощность для других задач. Это большое преимущество перед другими конкурирующими архитектурами, которые не имеют выделенных RT -ядер, отчего вынуждены использовать свои стандартные блоки для выполнения как графических операций, так и трассировки лучей.

Процессоры RTX с архитектурой Ampere в действии

Трассировка лучей и работа шейдеров требуют больших вычислительных ресурсов. Но было бы намного дороже запускать все с помощью одних только CUDA-ядер, так что включение в работу тензорных и RT-ядер помогает значительно ускорить обработку. На рисунке 7 для примера показана игра Wolfenstein: Youngblood с включенной трассировкой лучей при различных сценариях работы.


Рисунок 7. Рендеринг одного кадра Wolfenstein: Youngblood на RTX 2080 Super GPU с использованием а) шейдерных ядер (CUDA), б) шейдерных ядер и RT-ядер, в) шейдерных ядер, тензорных и RT-ядер. Обратите внимание на постепенно сокращающееся время кадра при добавлении мощностей различных процессорных ядер RTX.

В первом случае для запуска одного кадра требуется 51 мс (~ 20 fps). При включении в работу RT-ядер рендеринг кадра происходит намного быстрее — за 20 мс (50 fps). Использование же DLSS на тензорных ядрах сокращает время кадра до 12 мс (~ 83 fps).


Рисунок 8. Рендеринг одного кадра Wolfenstein: Youngblood на RTX 3080 с использованием а) шейдерных ядер (CUDA), б) шейдерных ядер и RT-ядер, в) шейдерных ядер, тензорных и RT-ядер.

Итак, технология RTX с архитектурой Ampere еще эффективнее справляется с задачами рендеринга: в RTX 3080 рендеринг кадра происходит за 6,7 мс (150 fps), что является огромным улучшением по сравнению с RTX 2080.

Аппаратное ускорение трассировки лучей с использованием размытия движения

Размытие движения (motion blur) — часто используемый в компьютерной графике ход. Фотографическое изображение создается не мгновенно, а путем воздействия света на пленку в течение ограниченного периода времени. Объекты, движущиеся достаточно быстро по сравнению с продолжительностью выдержки камеры, будут отображаться на фотографии в виде полос или пятен. Чтобы графический процессор создавал реалистично выглядящее размытие движения в случае, когда объекты в сцене быстро перемещаются перед статической камерой, он должен уметь имитировать то, как камера и пленка работают с такими сценами. Размытие движения особенно важно в кинопроизводстве, поскольку фильмы воспроизводятся со скоростью 24 кадра в секунду, и сцена без размытия движения будет выглядеть резкой и прерывистой.

Графические процессоры Turing довольно хорошо справляются с ускорением размытия движения в целом. Однако в случае движущейся геометрии задача может оказаться более сложной, поскольку информация о BVH изменяется вместе с положением объектов в пространстве.

Как видно на рисунке 9, RT-ядро Turing производит аппаратный обход иерархии BVH, проверку пересечения лучей с BBox и треугольниками. GA10x умеет все то же самое, но вдобавок имеет новый блок Interpolate Triangle Position, ускоряющий размытие движения при трассировке лучей.

Оба RT-ядра Turing и GA10x реализуют архитектуру MIMD (Multiple Instruction Multiple Data — множественные команды, множественные данные), благодаря которой можно обрабатывать множество лучей одновременно.


Рисунок 9. Сравнение аппаратного ускорения размытия движения в случае Turing и Ampere

Основная проблема с размытием движения заключается в том, что треугольники в сцене не фиксированы во времени. В базовой трассировке лучей выполняются статичные тесты на пересечение, и при попадании луча в треугольник производится возврат информации об этом попадании. Как показано на рисунке 10, при размытии движения ни у одного треугольника нет фиксированных координат. Каждому лучу присваивается временная метка, указывающая время его отслеживания, и уже из уравнения BVH определяется положение треугольника и пересечения с ним луча.

Если этот процесс не ускорить аппаратно, он может доставить действительно много проблем, в том числе за счет своей нелинейности.


Рисунок. 10. Базовая трассировка лучей и трассировка лучей с размытием движения

В левой части рисунка 11 лучи, отправленные в статичную сцену, попадают в один и тот же треугольник одновременно. Белые точки показывают место попадания, этот результат и возвращается обратно. В случае размытия движения каждый луч существует в свой момент времени. Каждому лучу случайным образом назначается различная временная метка. Например, оранжевые лучи пытаются пересечь оранжевые треугольники в один момент времени, а затем зеленые и синие лучи производят те же самые действия. В конце сэмплы смешиваются, образовывая более математически правильный размытый результат.


Рисунок 11. Рендеринг без размытия движения и с размытием в GA10x

Блок Interpolate Triangle Position интерполирует треугольники в BVH между уже существующими треугольниками на основе движения объекта, так что лучи будут пересекать их в ожидаемых местах в моменты, определяемые временными метками луча. Такой подход позволяет выполнять точный рендеринг размытия движения с трассировкой лучей до восьми раз быстрее по сравнению с Turing.

Размытие движения с аппаратным ускорением GA10x поддерживается Blender 2.90, Chaos V-Ray 5.0, Autodesk Arnold и Redshift Renderer 3.0.X с использованием NVIDIA OptiX 7.0 API.

Скорость рендеринга размытия движения до 5 раз выше в случае RTX 3080 по сравнению с RTX 2080 Super.

Тензорные ядра третьего поколения в графических процессорах GA10x

GA10x содержит в себе новые тензорные ядра NVIDIA третьего поколения, отличающиеся поддержкой новых типов данных, улучшенной производительностью, эффективностью и гибкостью программирования. Новая функция разреженности позволяет удвоить производительность тензорных ядер по сравнению с Turing предыдущего поколения. Быстрее происходит и выполнение функций ИИ, таких как NVIDIA DLSS для сверхразрешения ИИ (теперь и с поддержкой 8K), NVIDIA Broadcast для обработки голоса и видео и NVIDIA Canvas для рисования.

Тензорные ядра — это специализированные исполнительные блоки, разработанные для выполнения тензорных/матричных операций — основной вычислительной функции в глубоком обучении. Они необходимы для улучшения качества графики с помощью DLSS (Deep Learning Super Sampling), шумоподавления на основе ИИ, удаления фонового шума внутри игровых голосовых чатов с помощью RTX Voice и еще множества применений.

Внедрение тензорных ядер в игровые графические процессоры GeForce впервые позволило реализовать глубокое обучение в реальном времени в игровых приложениях. Конструкция тензорного ядра третьего поколения в графических процессорах GA10x дополнительно увеличивает чистую производительность и задействует новые режимы вычислительной точности, такие как TF32 и BFloat16. Это играет большую роль для основанных на ИИ приложений нейронных служб NVIDIA NGX, направленных на улучшение графики, рендеринга и другие функции.

Сравнение тензорных ядер Turing и Ampere

Тензорные ядра Ampere были реорганизованы в сравнении с Turing для повышения эффективности и снижения энергопотребления. Архитектура SM-ядер Ampere имеет меньшее количество тензорных ядер, но каждое из них оказывается более мощным.


Рисунок 12. Тензорные ядра с архитектурой Turing и Ampere. GeForce RTX 3080 обеспечивает в 2,7 раза более высокую пиковую пропускную способность тензорного ядра в FP16-операциях по сравнению с GeForce RTX 2080 Super

Мелкозернистая структурированная разреженность

С графическим процессором A100 NVIDIA представила Fine-Grained Structured Sparsity — новый подход, способствующий удвоению вычислительной пропускной способности для глубоких нейронных сетей. Эта функция также поддерживается графическими процессорами GA10x и помогает ускорить некоторые операции вывода графики на основе ИИ.

Поскольку сети глубокого обучения могут адаптировать веса в процессе обучения на основе обратной связи, в целом структурные ограничения не влияют на точность обучаемых моделей.


Рисунок 13. Мелкозернистая структурированная разреженность

NVIDIA разработала простой и универсальный алгоритм разреживания глубоких нейронных сетей с использованием структурированного шаблона разреженности 2:4. Сеть сначала обучается при помощи плотных весов, затем происходит мелкозернистая структурированная обрезка, после чего нулевые значения можно отбросить, а оставшаяся математика сжимается с целью повышения пропускной способности. Алгоритм не влияет на точность обученной сети для вывода, только ускоряет ее.

NVIDIA DLSS 8K

Рендеринг изображения с трассировкой лучей и высокой частотой кадров — чрезвычайно затратный с вычислительной точки зрения процесс. До появления NVIDIA Turing считалось, что его реализацию стоит ждать годы. Чтобы помочь с решением этой проблемы, NVIDIA создала суперсэмплинг при помощи глубокого обучения (DLSS).


Рисунок 14. Watch Dogs: Legion с DLSS с разрешением 1080p, 4К и 8К. Обратите внимание на более четкий текст и детализацию, обеспечиваемую DLSS в 8K

DLSS стал только лучше в случае NVIDIA Ampere за счет использования тензорных ядер третьего поколения и девятикратного коэффициента масштабирования сверхразрешения, который впервые делает возможными запуск игры с трассировкой лучей в разрешении 8K с 60 fps.


Рисунок 15. GeForce RTX 3090 может обеспечить частоту кадров 60 fps во многих играх с разрешением 8K с DLSS и без него. В перечисленных играх использовались высокие настройки графики и включена трассировка лучей, где это возможно. Протестировано на процессоре Core i9-10900K

Память GDDR6X

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

GDDR6X — первая графическая память, пропускная способность которой превышает 900 ГБ/с. Чтобы этого достичь, была задействована инновационная технология передачи сигналов и четырехуровневая амплитудно-импульсная модуляция (PAM4), в совокупности полностью меняющие способ перемещения данных в памяти. При помощи алгоритма PAM4 GDDR6X передает большее количество данных с гораздо более высокой скоростью, перемещая по два бита данных за раз, что удваивает скорость передачи данных ввода/вывода по сравнению с предыдущей схемой PAM2/NRZ.

В настоящее время GDDR6X поддерживает скорость 19,5 Гбит/с для GeForce RTX 3090 и 19 Гбит/с для GeForce RTX 3080. Благодаря этому GeForce RTX 3080 обеспечивает в 1,5 раза большую производительность в операциях с памятью, чем предшественник — RTX 2080 Super.

На рисунке 16 показано сравнение структуры GDDR6 (слева) и GDDR6X (справа). GDDR6X передает те же данные на частоте вдвое меньшей, чем у GDDR6. Или, в качестве альтернативы, GDDR6X может удвоить эффективную полосу пропускания, сохранив той же частоту.


Рисунок 16. GDDR6X с использованием сигналов PAM4 показывает большую производительность и эффективность, чем GDDR6

Для решения проблем с отношением сигнал/шум (SNR), возникающих при передаче сигналов PAM4, была разработана новая схема кодирования MTA (максимальное предотвращение перехода). MTA предотвращает переход высокоскоростных сигналов с самого высокого уровня на самый низкий и наоборот.


Рисунок 17. Новое кодирование в GDDR6X

Поддерживая скорость передачи данных до 19,5 Гбит/с на чипах GA10x, GDDR6X обеспечивает пиковую пропускную способность памяти до 936 ГБ/с, что на 52% больше по сравнению с графическим процессором TU102, используемым в GeForce RTX 2080 Ti. GDDR6X имеет самый большой скачок пропускной способности за 10 лет после графических процессоров серии GeForce 200.

RTX IO

Современные игры содержат в себе огромные миры. С развитием таких технологий, как фотограмметрия, они все лучше имитируют реальность и, как следствие, содержатся в файлах с все большим объемом. Крупнейшие игровые проекты занимают более 200 ГБ, что в 3 раза больше, чем четыре года назад, и со временем их это число будет только расти.

Геймеры все чаще обращаются к твердотельным накопителям, чтобы сократить время загрузки игр: в то время, как жесткие диски ограничены пропускной способностью 50–100 МБ/с, новейшие твердотельные накопители M.2 PCIe Gen4 считывают данные на скорости до 7 ГБ/с.


Рисунок 18. Игры, ограниченные традиционными системами ввода-вывода


Рисунок 19. При использовании традиционной модели хранения распаковка игры может занять все 24 ядра процессора. Современные игровые движки превзошли возможности традиционных API-хранилищ. Вот почему необходимо новое поколение архитектуры ввода-вывода. Здесь серые полосы обозначают скорость передачи данных, черно-синие блоки — необходимые на это ядра ЦП.

NVIDIA RTX IO — это набор технологий, обеспечивающих быструю загрузку и распаковку ресурсов на базе ГП и повышающих производительность ввода-вывода до 100 раз по сравнению с жесткими дисками и традиционными API-хранилищами.

NVIDIA RTX IO работает в связке Microsoft DirectStorage API — хранилищем следующего поколения, разработанным специально для современных игровых ПК с NVMe SSD. NVIDIA RTX IO обеспечивает декомпрессию без потерь, позволяя считывать данные через DirectStorage в сжатом виде и доставлять их на графический процессор. Это снимает нагрузку с ЦП, перемещая данные из хранилища в графический процессор в более эффективной сжатой форме и улучшая производительность ввода-вывода в два раза.


Рисунок 20. RTX IO обеспечивает в 100 раз большую пропускную способность и 20-кратное снижение загрузки ЦП. Серые и зеленые полосы обозначают скорость передачи данных, черно-синие блоки — необходимые для этого ядра ЦП.

Дисплей и видеодвижок


DisplayPort 1.4a с DSC 1.2a

Марш в сторону все более высоких разрешений с более высокой частотой обновления кадров продолжается, и графические процессоры на архитектуре NVIDIA Ampere стараются оставаться в числе передовых компаний, готовых обеспечить и то, и другое. Геймеры теперь могут играть на дисплеях с разрешением 4K (3820 x 2160) с частотой 120 Гц и в 8K (7680 x 4320) с частотой 60 Гц — с четырехкратным увеличением числа пикселей по сравнению с 4K.

Движок архитектуры Ampere разработан для поддержки многих новых технологий, включенных в самые быстрые на сегодняшний день интерфейсы отображения данных. Сюда входит и DisplayPort 1.4a, обеспечивающий разрешение 8K при 60 Гц с технологией сжатия без визуальных потерь VESA Display Stream Compression (DSC) 1.2a. К новым видеокартам с архитектурой Ampere можно подключить по два дисплеями с 8K и частотой 60 Гц — для этого понадобится всего лишь один кабель на дисплей.

HDMI 2.1 с DSC 1.2a

В архитектуре NVIDIA Ampere впервые для дискретных графических процессоров добавлена поддержка HDMI 2.1 — новейшего обновления спецификации HDMI. В HDMI максимальная пропускная способность увеличена до 48 Гбит/с, что также позволяет использовать динамические форматы HDR. Для поддержки 8K при 60 Гц с HDR необходимо сжатие DSC 1. 2a или пиксельный формат 4:2:0.

NVDEC пятого поколения — декодирование видео с аппаратным ускорением

Графические процессоры NVIDIA содержат аппаратный декодер пятого поколения Hardware-Accelerated Video Decoding (NVDEC), обеспечивающий полностью аппаратное декодирование видео для множества популярных кодеков.


Рисунок 21. Форматы кодирования и декодирования видео, поддерживаемые графическими процессорами GA10x

Декодер NVIDIA пятого поколения в GA10x поддерживает декодирование с аппаратным ускорением следующих видеокодеков на платформах Windows и Linux: MPEG-2, VC-1, H.264 (AVCHD), H.265 (HEVC), VP8, VP9, и AV1.

NVIDIA — первый производитель графических процессоров, обеспечивающий аппаратную поддержку декодирования AV1.

Аппаратное декодирование AV1

Хотя AV1 очень эффективен при сжатии видео, его декодирование требует значительных вычислительных ресурсов. Современные программные декодеры вызывают высокую загрузку ЦП и затрудняют воспроизведение видео в сверхвысоком разрешении. В тестах NVIDIA процессор Intel i9 9900K в среднем воспроизводил на YouTube 28 кадров в секунду в 8K60 HDR, загрузка процессора при этом была выше 85%. Графические процессоры GA10x могут воспроизводить AV1, передавая декодирование на NVDEC, который способен воспроизводить до 8K60 HDR-контента с очень низкой загрузкой ЦП (~ 4% на том же ЦП, что и в предыдущем тесте).

NVENC седьмого поколения — кодирование видео с аппаратным ускорением

Кодирование видео может быть сложной вычислительной задачей, но, если выгрузить его в NVENC, графический движок и ЦП освободятся для других операций. Например, при потоковой передачи игр на Twitch.tv с использованием Open Broadcaster Software (OBS), выгрузка кодирования видео в NVENC позволит выделить графический движок графического процессора для рендеринга игры, а ЦП — для других задач пользователя.

NVENC позволяет:

  • кодирование и потоковую передачу игр и приложений с высоким качеством и сверхнизкой задержкой без использования ЦП;
  • кодирование с очень высоким качеством для архивирования, потоковой передачи OTT, веб-видео;
  • кодирование со сверхнизким энергопотреблением на поток (Вт/поток).

При общих настройках потоковой передачи Twitch и YouTube аппаратное кодирование на основе NVENC в графических процессорах GA10x превосходит качество кодирования программных кодировщиков x264 с использованием предустановки Fast и находится на одном уровне с x264 Medium — предустановкой, которая обычно требует мощности двух компьютеров. Это резко снимает загрузку ЦП. Кодирование 4K — слишком большая рабочая нагрузка для типичной конфигурации ЦП, но кодировщик GA10x NVENC обеспечивает бесшовное кодирование с высоким разрешением до 4K в H.264 и даже 8K в HEVC.

Заключение

С каждой новой процессорной архитектурой NVIDIA стремится обеспечить революционную производительность для следующего поколения, одновременно вводя новые функции, улучшающие качество изображения. Turing был первым графическим процессором, который представил трассировку лучей с аппаратным ускорением — функцию, некогда считавшуюся святым Граалем компьютерной графики. Сегодня невероятно реалистичные и физически точные эффекты трассировки лучей добавляются во многие новые компьютерные игры класса AAA, а трассировка лучей с ускорением на ГП считается обязательной функцией для большинства компьютерных геймеров. Новые графические процессоры с архитектурой NVIDIA GA10x Ampere обеспечивают необходимые функции и производительность, чтобы наслаждаться этими новыми играми с трассировкой лучей и частотой кадров до 2 раз выше, чем можно достичь сейчас. Еще одна особенность Turing — усовершенствованная обработка ИИ с ускорением на ЦП, улучшающая шумоподавление, рендеринг и другие графические приложения, — тоже выходит на новый уровень благодаря архитектуре Ampere.

Напоследок — ссылка на полный документ.

NVIDIA GeForce GTX 1080

Общая информация
РазработчикNVIDIA
Год выхода2016
Категория видеокартыДесктопная
Тип видеокартыДискретная
ИнтерфейсPCIe 3.0
Максимальное разрешение7680 x 4320
Графический процессор
АрхитектураPascal
ЯдроGP104
Количество чипов1
Техпроцесс16 nm
Количество транзисторов7200 млн
Площадь314 мм²
Частота ядра1607-1733 MHz
Универсальных шейдерных блоков2560
Блоков растеризации (ROP)64
Текстурных блоков (TMU)160
Пиксельная скорость заполнения (pixel fillrate)109 GPixel/s
Текстурная скорость заполнения (texel fillrate)271 GTexel/s
Видеопамять
ТипGDDR5X
Объем8192 Mb
Частота10000 MHz
Ширина шины256 bit
Пропускная способность320 GB/s
Питание
Макс. потребляемая энергия (TDP)180 W
Макс. допустимая температура94° C
Мин. требования к блоку питания500 W
Разъемы дополнительного питания8-pin
Поддерживаемые API и технологии
DirectX12 (Feature Level 12_1)
OpenGL4.5
OpenCL1.2
Shader Model5.0
SLI / CrossFireXSLI
Другие технологии• Simultaneous Multi-Projection
• VR
• NVIDIAAnsel
• NVIDIA G-Sync
• NVIDIA GameStream
• NVIDIA GPU Boost
• Vulkan API
• HDCP
• NVIDIA CUDA
• DirectX Raytracing

Как узнать характеристики видеокарты?

Windows, Windows 10, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP, Железо
  • Reboot
  • 28.02.2019
  • 18 120
  • 2
  • 23.04.2020
  • 14
  • 12
  • 2
  • Содержание статьи

Всем привет! Сегодня продолжение предыдущей статьи. Напомню, там шла речь о том, как просто и быстро узнать конфигурацию компьютера. Некоторые не согласятся, почему в названии статьи шла речь о конфигурации всего компьютера, а не процессора. В принципе в CPU-Z дана исчерпывающая информация о характеристиках процессора, но также можно узнать кое-что о памяти, материнской плате и видеокарте. Характеристики жесткого диска можно легко узнать с помощью программы HD Tune Pro, которую мы уже рассматривали. В отличии от параметров остальных комплектующих компьютера они могут несколько отличаться от данных, которые указаны на сайте производителя.


Утилита GPU-Z

В этой статье мы будем рассматривать утилиту, которая предоставляет такие же исчерпывающие характеристики видеокарты, как и CPU-Z – характеристики процессора. Это чудо-программка – GPU-Z. По названию можно предположить, что CPU-Z и GPU-Z разрабатывались одной и той же компанией. Однако это не так. Фирмы не имеют ничего общего, но дизайн интерфейса выполнен в едином ключе.

Скачать GPU-Z с официального сайта

Предупреждение! Эта программа постоянно обновляется для добавления в базу данных нового железа. Т.е. в случае использования старой версии утилиты на новом железе большинство его характеристик вероятнее всего не определится (если комплектующие были выпущены после даты выхода утилиты).

GPU-Z содержит всего две вкладки, несущие максимум полезной информации. Рассматривать программу я буду на примере видеокарты ATI Radeon HD 4650.

Вкладка Graphics Card

Эта вкладка открывается по умолчанию при запуске программы.

Здесь находится куча параметров, которые мы и будем рассматривать по порядку. Приготовьтесь к небольшому мозговому штурму.

  • Name – название серии видеокарты. К примеру, в серию HD 4600 входят две видеокарты – 4650 и 4670.
  • GPU – кодовое имя чипа (RV730). У разных чипов разная компоновка блоков ALU, TMU, ROP и т.п. Соответственно, и производительность видеокарт с одинаковыми характеристиками на разных чипах будет отличаться.
  • Revision – ревизия ядра по аналогии с процессорной
  • Technology – техпроцесс, по которому изготовлен видеочип. Измеряется в нанометрах. Чем меньше он будет, тем больше транзисторов можно будет уместить на единицу площади. Соответственно, видеокарту можно сделать производительнее либо уменьшить энергопотребление.
  • Die Size – площадь ядра видеокарты.
  • Release Date – дата выхода видеокарты.
  • Transistors – количество транзисторов в видеочипе. Исчисляется в миллионах или миллиардах. Буква «М» возле числа 514 обозначает 514 миллионов. В современных видеокартах количество транзисторов может доходить до 4.5 миллиардов. Соответственно, число будет четырехзначным.
  • BIOS Version – версия BIOS видеокарты. При нажатии на чип с зеленой стрелочкой можно сохранить BIOS (Save to file…). Файл сохранится в формате «имя чипа.rom». Открыть его можно, например, с помощью программы TechPowerUp Radeon Bios Editor. Там можно изменить, к примеру, частоты по умолчанию и загрузить обратно. Сам такое не практиковал и вам не советую, если нет опыта. При пропадании питания во время перепрошивки видеокарта может прийти в негодность (то же касается и BIOS материнской платы). В современных топовых видеокартах AMD имеется встроенный BIOS без возможности перепрошивки и еще один с таковой. В случае чего видеокарта всегда сможет заработать с заводскими настройками. Это такой реверанс в сторону оверклокеров.
  • Device ID – идентификатор ядра видеокарты, используемый программистами для обращения к устройству.
  • Subvendor – название фирмы-производителя. Nvidia и AMD создают только референсные видеокарты, которые потом передаются многочисленным производителям (Asus, Gigabyte, MSI, Palit…). Те в свою очередь разрабатывают свою систему питания, охлаждения, устанавливают свои частоты, тип и количество памяти и поставляют на рынки в виде готового продукта.
  • ROPs/TMUs – количество блоков растеризации и текстурирования. ROP – это блоки растеризации, записывающие посчитанные на видеокарте пиксели в буферы. TMU – блоки, выбирающие текстурные данные, необходимые для построения текущей картинки. Чем больше будет этих блоков, тем лучше. Косвенно оценивать производительность видеокарт по количеству этих блоков можно только в пределах одного производителя (AMD или Nvidia). Собственно, как и все остальные параметры.
  • Bus Interface – отображается интерфейс, который поддерживается видеокартой. В моем случае PCI-express 2.0 x16. За знаком «@» указывается, какое подключение используется сейчас. Т.е. видно, что у меня используется только 8 линий PCI-e из 16 доступных. На производительных видеокартах будет х16 подключение. Если материнская карта поддерживает менее 32 линий PCI-e, то в режиме SLI/CrossFire (одновременной работы двух видеокарт) может быть небольшое снижение производительности графической подсистемы. При нажатии на знак «?» рядом с типом интерфейса откроется окно, в котором можно будет нагрузить видеокарту на 100%, что послужит отличным стресс-тестом.
  • Shaders – шейдеры (процессоры) – основные части видеочипа. Именно в этих процессорах производятся все расчеты. Их количество напрямую влияет на графическую производительность и при прочих равных условиях зависимость производительности от количества процессоров будет линейной.
  • DirectX Support – версия DirectX (набора интерфейсов программирования приложений, в частности, компьютерных игр). Чем выше будет версия, тем более реалистичной будет картинка в игре и тем требовательнее будет игра к ресурсам видеокарты. То бишь, если в игре не хватает производительности и в настройках выбирается версия DirectX, то можно убрать красивости (не много), выбрав предыдущую версию.
  • Pixel Fillrate – пиксельная скорость заполнения. С этой скоростью видеочип отрисовывает пиксели. Измеряется в GPixel/s (гигапикселях в секунду). Вычисляется по формуле: Pixel Fillrate = ROPs*GPU Clock.
  • Texture Flillrate – с этой скоростью выбираются текстуры для отрисовки картинки. Измеряется в GTexel/s (гигатекселях в секунду). Соответственно, формула: Texture Fillrate = TMUs*GPU Clock.
  • Memory Type – тип видеопамяти. Определяет быстроту видеопамяти. Самый производительный тип – GDDR5. Огромные вычислительные мощности будут простаивать при медленной видеопамяти. При компромиссном выборе между количеством памяти и ее типом в приоритете должен быть тип.
  • Bus Width – ширина канала передачи данных между графическим процессором и видеопамятью.
  • Memory Size – объем видеопамяти.
  • Bandwidth – максимальная пропускная способность, которая обеспечивается при передаче данных между процессором и памятью и наоборот. Зависит от типа памяти и ширины канала.
  • Driver Version – версия установленного видеодрайвера. Чем новее, тем лучше. Достаточно часто с обновлением драйверов производительность может вырасти на 5-15%.
  • GPU Clock – текущая частота графического процессора.
  • Memory – текущая частота видеопамяти.
  • Default Clock – частота графического процессора, установленная в BIOS по умолчанию.
  • Memory — частота видеопамяти, установленная в BIOS по умолчанию.
  • ATI CrossFire (Nvidia SLI) – включенный или отключенный режим CrossFire/SLI при одновременном подключении 2/3/4 видеокарт.
  • Computing – поддержка различных технологий, используемых для ускорения отдельных игровых эффектов или в общецелевых приложениях. Как пример можно привести программу кодирования видео vReveal, использующая технологию CUDA для ускорения.

Вкладка Sensors

На этой вкладке регистрируются изменения параметров в виде графиков в режиме реального времени.

  • GPU Core Clock – частота ядра (Shader) видеокарты.
  • GPU Memory Clock – частота видеопамяти.
  • GPU Temperature – температура видеочипа.
  • Fan Speed (%) – скорость вращения кулера видеокарты в % от максимального.
  • Fan speed (rpm) — скорость вращения кулера видеокарты в оборотах/минуту.
  • GPU Load – нагрузка на видеокарту (в %). В предыдущей вкладке при нажатии на «?» и запуске теста GPU Load поднимается до 100% и держится постоянно. Это стрессовый (максимальный) режим. Даже в тяжелых играх этот параметр опускается ниже 100%.
  • GPU Temp. #1/2 – температуры в разных частях видеочипа.</li?
  • Memory Usage (Dedicated) – использование памяти, выделяемой из системной для нужд видеокарты.
  • Memory Usage (Dynamic) – использование видеопамяти.
  • VDDC – напряжение графического ядра видеокарты. При повышении этого напряжения можно обеспечить более стабильную работу при повышенных частотах (разгоне) или спалить видеокарту.

Внизу можно поставить галочку напротив «Log to file«. Я, например, запустил простенькую игрушку Fallout 2. После выхода из игры у меня был файл под названием «GPU-Z Sensor Log«, где были записаны все параметры видеокарты с шагом в одну секунду.

Галочку напротив «Continue refreshing this screen while GPU-Z is in the background» также можно поставить. При сворачивании утилиты в трей графики будут продолжать формироваться на основе информации с датчиков.

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

Вывод

GPU-Z наряду с CPU-Z является незаменимым быстрым инструментом системного мониторинга. С помощью этих двух утилит можно посмотреть, что происходит с компьютером при разных условиях.

Блок растеризатора — драйверы Windows

  • Статья
  • 2 минуты на чтение
  • 1 участник

Полезна ли эта страница?

да Нет

Любая дополнительная обратная связь?

Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

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

Средство растеризации всегда определяет, что входные позиции предоставляются в пространстве отсечения, выполняет отсечение и разделение перспективы, а также применяет масштаб и смещение видового экрана.

Среда выполнения Direct3D вызывает следующие функции драйвера для создания, настройки и уничтожения состояния растеризатора:

CalcPrivateRasterizerStateSize

CreateRasterizerState

DestroyRasterizerState

SetRasterizerState

SetScissorRects

Сетвиевпортс

cbloom rants: 22.11.08 — Растеризация

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

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

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

Этот тип блочного барицентрического растеризатора очень похож на то, что делает аппаратное обеспечение. Одна из приятных вещей об этом блоки могут быть легко отправлены в микропотоки для параллельного растеризации, и блоки естественные кванты для проверки грубого Z-буфера.

Старая статья Олано-Грира об однородной растеризации координат теперь онлайн в HTML. Какой-то другой случайный мусор, который я нашел, я думаю, просто мусор: Сокращение делений для картографов полигонов и Настройка треугольника.

Этот блог о Программное отсечение окклюзии — это буквально взрыв из прошлого. Как я часто говорил, если вам небезразличны эти вещи, техническое руководство SurRender Umbra по-прежнему остается божественной библией. по всем вопросам окклюзии. (или вы можете прочитать мой древняя статья о нем). Но я также по-прежнему считаю, что подобная объектно-ориентированная окклюзия — это просто плохая идея.

Однако грубая Z, обновленная растеризатором, — это хорошо. Делайте свои собственные поверх того, что делает карта хотя довольно хромает.Это еще одна потрясающая победа Ларраби. Если мы/они сделаем грубый Z-буфер, это может использовать ЦП для отбраковки целых объектов, или целых треугольников, или макроблоков.

Очевидно, парень, написавший эту топовую статью, — Николя Капенс; он написал «swShader», который был программным обеспечением DX9 с открытым исходным кодом. растеризатор, который был удален и теперь является коммерческим продукт (что было бы глупо, конечно, любой клиент предпочел бы купить Пиксоматик!!). Я узнал это от случайного пламенная война, в которую он попал.Разве ты не любишь Интернет?

Растеризация — Catacomb Wiki

Растеризация векторного треугольника

«Две предыдущие 3D-игры Hovertank и Catacombs 3D были созданы с использованием рендеринга в объектном пространстве, где рисовались ограниченные полигоны. напоминал полигональный растеризатор и полигональный клиппер, и оба они были сделаны за четыре-шесть недель.У меня действительно было довольно много трудностей с этим. Возвращаясь на двадцать лет назад, не было всех существующих справочников, книг и учебных пособий по этой теме. Мне было трудно добиться того, чтобы некоторые из этих вещей были настолько прочными и надежными, насколько это необходимо. В Catacombs 3D можно было получить несколько необычных случаев, и одной из моих настоящих целей было упростить его настолько, чтобы он был по-настоящему крепким и солидным». Растеризация (или растеризация) — это задача получения изображения, описанного в формате векторной графики (фигуры), и преобразования его в растровое изображение (последовательность пикселей, точек или линий, которые, когда они собираются вместе на дисплее, воссоздают Изображение).Затем растеризованное изображение может быть отображено на дисплее компьютера, видеодисплее или принтере или сохранено в формате растрового файла. Растеризация может относиться либо к преобразованию моделей в растровые файлы, либо к преобразованию примитивов 2D-рендеринга, таких как многоугольники или линейные сегменты, в растровый формат. Последний используется для преобразования полигонального векторного мира, созданного для Catacomb 3D , и представления его в виде пиксельного отображения, совпадающего с растровыми спрайтами, используемыми для игровых объектов.

Позже этот подход был заменен рейкастингом в преемнике движка, впервые использованном в Wolfenstein 3D (1992).По сравнению с другими методами рендеринга, такими как трассировка лучей, растеризация выполняется очень быстро. Однако растеризация — это просто процесс вычисления отображения геометрии сцены в пиксели и не предписывает конкретного способа вычисления цвета этих пикселей. Затенение, включая программируемое затенение, может быть основано на переносе физического света или художественном замысле.


«Catacombs 3D была самой первой нашей коммерческой игрой с элементами 3D.Это было ограничено тем, что вся карта была сделана только из тайловых блоков. На блоки можно было накладывать текстуры. Были ограничения, вроде дверей не было. У вас просто были блоки, которые исчезали. На нем были масштабированные существа с растровыми изображениями. Так появился первый 3D-экшн-шутер. Следующим шагом стала Wolfenstein 3D, которая по-прежнему была блочной картой, но в ней было несколько небольших новых функций. У нас были двери, которые скользили из стороны в сторону, стены-толкатели и несколько интерактивных функций; но персонажи и предметы остались в основном такими же.Внутренний рендеринг сильно отличался от Catacombs 3D. Catacombs в основном использовали метод линейной растеризации, в то время как Wolfenstein использовал гораздо более надежный метод raycasting. Но конечным результатом было то, что они воспроизвели одни и те же картинки».

Как работает рендеринг 3D-игр, более глубокое погружение: растеризация и трассировка лучей

Во второй части нашего более глубокого обзора рендеринга 3D-игр мы сосредоточимся на том, что происходит с 3D-миром после завершения обработки всех вершин.Нам нужно снова стряхнуть пыль с наших учебников по математике, разобраться с геометрией усеченных конусов и обдумать загадку перспективы. Мы также быстро погрузимся в физику трассировки лучей, освещения и материалов — отлично!

Основная тема этой статьи посвящена важному этапу рендеринга, когда трехмерный мир точек, линий и треугольников становится двухмерной сеткой цветных блоков. Это во многом то, что просто «происходит», поскольку процессы, связанные с переходом от 3D к 2D, происходят незаметно, в отличие от нашей предыдущей статьи, где мы могли сразу увидеть эффекты вершинных шейдеров и тесселяции.Если вы не готовы ко всему этому, не беспокойтесь — вы можете начать работу с нашим рендерингом 3D-игр 101. Но как только вы настроитесь, прочитайте наш следующий взгляд на мир 3D-графики.

Часть 0. Рендеринг 3D-игр 101
Объяснение создания графики
Часть 1. Рендеринг 3D-игр: обработка вершин
Более глубокое погружение в мир 3D-графики
Часть 2. Рендеринг 3D-игр: растеризация и трассировка лучей
От 3D к плоскому 2D, POV и освещение
Часть 3. Рендеринг в 3D-игре: текстурирование
Билинейная, трилинейная, анизотропная фильтрация, наложение рельефа и др.
Часть 4. Рендеринг в 3D-игре: освещение и тени
Математика освещения, SSR, Ambient Occlusion, Shadow Mapping
Часть 5. Рендеринг 3D-игр: сглаживание
SSAA, MSAA, FXAA, TAA и другие

Подготовка к 2 измерениям

Подавляющее большинство из вас будет просматривать этот веб-сайт на абсолютно плоском мониторе или экране смартфона; даже если вы спокойно относитесь к детям и у вас причудливый изогнутый монитор, изображения, которые он отображает, состоят из плоской сетки цветных пикселей.И все же, когда вы играете в последнюю версию Call of Mario: Deathduty Battleyard, изображения кажутся трехмерными. Объекты перемещаются в окружающую среду и выходят из нее, становясь больше или меньше по мере движения к камере и от нее.

Используя Fallout 4 от Bethesda 2014 года в качестве примера, мы можем легко увидеть, как вершины были обработаны для создания ощущения глубины и расстояния, особенно если запустить его в режиме каркаса (выше).

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

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

.

Конвейер преобразования Direct3D

Мы видели, что было сделано на мировой космической сцене в нашей части 1 статьи: здесь вершины трансформируются и раскрашиваются, используя многочисленные матричные вычисления.Мы пропустим следующий раздел, потому что все, что происходит с пространством камеры, это то, что преобразованные вершины корректируются после того, как они были перемещены, чтобы сделать камеру опорной точкой.

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

Все дело в перспективе

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

Мы можем получить представление об этом из этого изображения, которое показывает поле зрения человека:

Источник: Zyxwv99 | Викисклад

Два угла обзора (для краткости fov) определяют форму усеченной пирамиды — трехмерной пирамиды с квадратным основанием, исходящей из камеры.Первый угол соответствует вертикальному fov, второй — горизонтальному ; мы будем использовать символы α и β для их обозначения. Теперь мы не совсем видим мир таким образом, но в вычислительном отношении гораздо проще разработать усеченную пирамиду, чем пытаться создать реалистичный объемный вид.

Источник: MithrandirMage | Викисклад

Также необходимо определить два других параметра — положение ближней (или передней) и дальней (задней) плоскостей отсечения .Первый срезает вершину пирамиды, но, по сути, определяет, насколько близко к положению камеры что-либо будет нарисовано; последний делает то же самое, но определяет, как далеко от камеры будут отображаться любые примитивы.

Размер и положение ближней плоскости отсечения важны, поскольку она становится так называемым окном просмотра . По сути, это то, что вы видите на мониторе, то есть визуализированный кадр, и в большинстве графических API область просмотра «рисуется» из верхнего левого угла.На изображении ниже точка (a1, b2) будет началом плоскости, и отсюда измеряются ширина и высота плоскости.

Соотношение сторон области просмотра не только имеет решающее значение для того, как будет выглядеть визуализируемый мир, но также должно соответствовать соотношению сторон монитора. В течение многих лет это всегда было 4:3 (или 1,3333… как десятичное значение). Однако сегодня многие из нас играют с такими соотношениями, как 16:9 или 21:9, также известными как широкоэкранные и сверхширокоэкранные.

Координаты каждой вершины в пространстве камеры должны быть преобразованы так, чтобы все они соответствовали ближней плоскости отсечения, как показано ниже:

Усеченный конус сбоку ( слева ) и сверху ( справа )

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

Вектор положения вершины умножается на эту матрицу, что дает новый набор преобразованных координат.

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

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

Однако это может привести к искажению просматриваемой перспективы. Используя игру Skyrim от Bethesda 2011 года, мы можем увидеть, как регулировка горизонтального угла поля зрения β при сохранении того же соотношения сторон области просмотра оказывает значительное влияние на сцену:

На этом первом изображении мы установили β = 75°, и сцена выглядит совершенно нормально.Теперь попробуем с β = 120°:

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

Теперь предположим, что у нашего персонажа глаза как у пришельца, и установим β = 180°!

Это поле зрения действительно дает нам почти панорамную сцену, но ценой серьезного искажения объектов, визуализируемых по краям поля зрения.Опять же, это потому, что дизайнеры игр не планировали и не создавали игровые ресурсы и визуальные эффекты для этого угла обзора (значение по умолчанию составляет около 70 °).

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

Так ты в игре или нет?

После того, как все было правильно преобразовано на этапе проецирования, мы переходим к тому, что называется пространством клипа . Хотя это делается после проекции , легче визуализировать то, что происходит, если мы сделаем это раньше:

На приведенной выше диаграмме мы видим, что резиновый утенок, одна из летучих мышей и некоторые деревья будут иметь треугольники внутри усеченного конуса; однако другая летучая мышь, самое дальнее дерево и панда находятся за пределами усеченного конуса.Хотя вершины, составляющие эти объекты, уже обработаны, они не будут видны в окне просмотра. Это означает, что они получают , отсекая .

В усечении усеченной пирамиды любые примитивы за пределами усеченной пирамиды полностью удаляются, а те, которые лежат на любой из границ, преобразуются в новые примитивы. Отсечение на самом деле не сильно повышает производительность, так как до этого момента все невидимые вершины обрабатывались вершинными шейдерами и т. д. Саму стадию отсечения также можно пропустить, если это необходимо, но это поддерживается не всеми API (например, стандартный OpenGL не позволит вам пропустить его, тогда как это можно сделать с помощью расширения API) .

Стоит отметить, что положение дальней плоскости отсечения не обязательно совпадает с расстоянием прорисовки в играх, так как последнее контролируется самим игровым движком. Что-то еще, что будет делать движок, это отбраковка усеченной пирамиды — здесь запускается код, чтобы определить, будет ли объект находиться внутри усеченной пирамиды и/или влиять на все, что будет видимым; если ответ нет , то этот объект не отправляется на рендеринг.Это не то же самое, что отсечение пирамиды видимости, так как хотя примитивы за пределами пирамиды отбрасываются, они все равно проходят стадию обработки вершин. При отбраковке они вообще не обрабатываются, что значительно экономит производительность.

Теперь, когда мы выполнили все наши преобразования и отсечения, кажется, что вершины, наконец, готовы к следующему этапу всей последовательности рендеринга. Но это не так. Это связано с тем, что все математические операции, выполняемые при обработке вершин и пространственных операциях мирового масштаба, должны выполняться в однородной системе координат (т.е. каждая вершина имеет 4 компонента, а не 3). Тем не менее, окно просмотра является полностью двумерным, и поэтому API ожидает, что информация о вершинах будет иметь только значения для x, y (хотя значение глубины z сохраняется).

Чтобы избавиться от 4-го компонента, выполняется перспективное деление , где каждый компонент делится на значение w . Эта корректировка блокирует диапазон значений x и y , который может принимать до [-1,1], а z до диапазона [0,1]. ).

Если вам нужна дополнительная информация о том, что мы только что рассмотрели, и вы рады углубиться в математику, прочитайте отличный учебник Сон Хо Ана по этому вопросу. Теперь давайте превратим эти вершины в пиксели!

Мастер этого растра

Как и в случае с преобразованиями, мы остановимся на том, как Direct3D устанавливает правила и процессы для преобразования области просмотра в сетку пикселей. Эта сетка похожа на электронную таблицу со строками и столбцами, где каждая ячейка содержит несколько значений данных (таких как цвет, значения глубины, координаты текстуры и т. д.).Обычно эта сетка называется растром , а процесс ее создания известен как растеризация . В нашей статье о 3D-рендеринге 101 мы очень упростили процедуру:

.

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

Примерное представление о том, как это выглядит, можно получить на следующей диаграмме. Куб претерпел различные преобразования, чтобы поместить 3D-модель в 2D-пространство экрана, и с точки зрения камеры некоторые грани куба не видны. Если предположить, что ни одна из поверхностей не является прозрачной, то некоторые из этих примитивов можно игнорировать.

Слева направо: Пространство мира > Пространство камеры > Пространство проекции > Пространство экрана

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

Теперь пора начать применять пиксельную сетку. Опять же, это удивительно сложно, потому что система должна решить, помещается ли пиксель внутри примитива — полностью, частично или вообще не помещается.Для этого выполняется процесс под названием тестирование покрытия . На изображении ниже показано, как треугольники растеризуются в Direct3D 11:

.

Источник: документы Microsoft Direct3D

Правило довольно простое: считается, что пиксель находится внутри треугольника, если центр пикселя соответствует правилу, которое Microsoft называет «верхним левым». «Верхняя» часть — это проверка горизонтальной линии; центр пикселя должен быть на этой линии. «Левая» часть предназначена для негоризонтальных линий, и центр пикселя должен располагаться слева от такой линии.Существуют дополнительные правила для непримитивов, то есть простых линий и точек, и правила получают дополнительные условия, если используется мультивыборка .

Если мы внимательно посмотрим на изображение из документации Microsoft, то увидим, что формы, созданные пикселями, не очень похожи на исходные примитивы. Это связано с тем, что пиксели слишком велики для создания реалистичного треугольника — растр содержит недостаточно данных об исходных объектах, что приводит к проблеме, называемой псевдонимом .

Давайте воспользуемся UL Benchmark 3DMark03, чтобы увидеть алиасинг в действии:

Растр установлен на 720 x 480 пикселей

В первом изображении растр был установлен на очень низкий размер 720 на 480 пикселей. Псевдонимы хорошо видны на перилах, а тень отбрасывает оружие, которое держит главный солдат. Сравните это с тем, что вы получите с растром, имеющим в 24 раза больше пикселей:

.

Растр установлен на 3840 x 2160 пикселей

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

Здесь может помочь мультисэмплинг, и вот как он работает в Direct3D:

Источник: документы Microsoft Direct3D

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

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

.

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

Что-то еще, что можно сделать в процессе растеризации, это тестирование окклюзии . Это необходимо сделать, потому что окно просмотра будет заполнено перекрывающимися примитивами ( occluded ). другой солдат. Помимо проверки того, покрывает ли примитив пиксель, можно также сравнить относительные глубины, и если один отстает от другого, то его можно пропустить из остального процесса рендеринга.

Однако, если ближний примитив прозрачен, то дальний по-прежнему будет виден, даже если он не прошел проверку окклюзии. Вот почему почти все 3D-движки выполняют проверку окклюзии до того, как отправят что-либо в графический процессор, и вместо этого создают нечто, называемое z-буфером , как часть процесса рендеринга. Здесь кадр создается как обычно, но вместо того, чтобы сохранять в памяти окончательные цвета пикселей, графический процессор сохраняет только значения глубины. Затем это можно использовать в шейдерах для проверки видимости с большим контролем и точностью над аспектами, связанными с перекрытием объектов.

Источник: -Зевс- | Викисклад

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

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

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

Итак, вот так — вот так трехмерный мир вершин становится двухмерной сеткой цветных блоков. Мы еще не совсем закончили.

Все задом наперед (за исключением случаев, когда это не так)

Прежде чем мы закончим рассмотрение растеризации, нам нужно сказать кое-что о порядке последовательности рендеринга.Мы не говорим о том, где, например, тесселяция появляется в последовательности; вместо этого мы имеем в виду порядок обработки примитивов. Объекты обычно обрабатываются в том порядке, в котором они появляются в индексном буфере (блоке памяти, который сообщает системе, как вершины сгруппированы вместе), и это может иметь значительное влияние на то, как обрабатываются прозрачные объекты и эффекты.

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

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

Слева направо: порядок сцен, рендеринг спереди назад, рендеринг сзади наперед

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

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

Если бы только был другой путь…

Там

есть по-другому: Трассировка лучей

Почти пять десятилетий назад ученый-компьютерщик по имени Артур Аппель разработал систему рендеринга изображений на компьютере, при которой один луч света направлялся по прямой линии от камеры до тех пор, пока не попадал на объект. Оттуда свойства материала (его цвет, отражательная способность и т. д.) будут затем изменять интенсивность светового луча. Каждый пиксель в визуализируемом изображении будет иметь один луч, и будет выполняться алгоритм, выполняющий последовательность математических операций для определения цвета пикселя.Процесс Аппеля стал известен как raycasting.

Примерно 10 лет спустя другой ученый по имени Джон Уиттед разработал математический алгоритм, который делал то же самое, что и подход Аппеля, но когда луч попадал на объект, он затем генерировал дополнительные лучи, которые расходились в разных направлениях в зависимости от материала объекта. Поскольку эта система генерировала новые лучи для каждого взаимодействия с объектом, алгоритм был рекурсивным по своей природе и поэтому был намного сложнее в вычислительном отношении; однако у него было значительное преимущество перед методом Аппеля, поскольку он мог правильно учитывать отражения, преломление и затенение.Эта процедура называлась , трассировка лучей (строго говоря, это , обратная трассировка лучей , поскольку мы следим за лучом от камеры, а не от объектов), и с тех пор она стала святым Граалем для компьютерной графики и кино.

Эта процедура называлась трассировкой лучей (строго говоря, обратной трассировкой лучей, поскольку мы следуем за лучом от камеры, а не от объектов), и с тех пор она стала святым Граалем для компьютерной графики и кино.

На изображении выше мы можем получить представление о работе алгоритма Уиттеда. Один луч испускается камерой для каждого пикселя в кадре и движется, пока не достигнет поверхности. Эта конкретная поверхность полупрозрачна, поэтому свет будет отражаться и преломляться через нее. В обоих случаях генерируются вторичные лучи, которые проходят до тех пор, пока не взаимодействуют с поверхностью. Также генерируются дополнительные вторичные, учитывающие цвет источников света и создаваемые ими тени.

Рекурсивная часть процесса заключается в том, что вторичные лучи могут генерироваться каждый раз, когда новый луч пересекает поверхность. Это может легко выйти из-под контроля, поэтому количество генерируемых вторичных лучей всегда ограничено. После завершения пути луча вычисляется его цвет в каждой конечной точке на основе свойств материала этой поверхности. Затем это значение передается вниз по лучу к предыдущему, корректируя цвет этой поверхности и так далее, пока мы не достигнем эффективной начальной точки первичного луча: пикселя в кадре.

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

Источник: трассировка лучей в реальном времени с Nvidia RTX

.

Вместо того, чтобы проверять каждый отдельный треугольник, в каждом отдельном объекте перед трассировкой лучей создается список ограничивающих объемов (BV) — это не что иное, как кубоиды, окружающие рассматриваемый объект, с последовательно генерируемыми меньшими объемами для различных структур. внутри объекта.

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

Хотя использование BVH технически не ускоряет реальную трассировку лучей, генерация иерархии и необходимый последующий алгоритм поиска, как правило, намного быстрее, чем проверка того, пересекается ли один луч с одним из миллионов треугольники в трехмерном мире.

Сегодня такие программы, как Blender и POV-ray, используют трассировку лучей с дополнительными алгоритмами (такими как трассировка фотонов и излучение) для создания высокореалистичных изображений:

Источник: Жиль Тран | Викисклад

Возникает очевидный вопрос: если трассировка лучей так хороша, почему мы не используем ее повсеместно? Ответы лежат в двух областях: во-первых, даже простая трассировка лучей генерирует миллионы лучей, которые приходится вычислять снова и снова. Система начинает с одного луча на пиксель экрана, поэтому при разрешении всего 800 x 600 генерируется 480 000 первичных лучей, а затем каждый из них генерирует несколько вторичных лучей.Это очень тяжелая работа даже для современных настольных ПК. Вторая проблема заключается в том, что базовая трассировка лучей на самом деле не очень реалистична и что для правильной реализации необходимо включить целый ряд дополнительных, очень сложных уравнений.

Даже с современным аппаратным обеспечением ПК требуемый объем работы выходит за рамки возможного, чтобы сделать это в режиме реального времени для текущей 3D-игры. В нашей статье о 3D-рендеринге 101 мы увидели в тесте трассировки лучей, что на создание одного изображения с низким разрешением уходят десятки секунд.

Так как же оригинальный Wolfenstein 3D выполнял трассировку лучей еще в 1992 году, и почему такие игры, как Battlefield V и Metro Exodus, выпущенные в 2019 году, предлагают возможности трассировки лучей? Они занимаются растеризацией или трассировкой лучей? Ответ: немного того и другого.

Гибридный подход для настоящего и будущего

В марте 2018 года Microsoft анонсировала новое расширение API для Direct3D 12 под названием DXR (DirectX Raytracing). Это был новый графический конвейер, дополняющий стандартные конвейеры растеризации и вычислений.Дополнительные функциональные возможности были предоставлены за счет введения шейдеров, структур данных и т. д., но не требовали какой-либо конкретной аппаратной поддержки, кроме той, которая уже требовалась для Direct3D 12.

На той же конференции разработчиков игр, где Microsoft говорила о DXR, Electronic Arts рассказала о своем проекте Pica Pica — эксперименте с 3D-движком, в котором использовался DXR. Они показали, что трассировку лучей можно использовать, но не для полного кадра рендеринга. Вместо этого для большей части работы будут использоваться традиционные методы растеризации и вычислительных шейдеров, а DXR будет использоваться для определенных областей — это означает, что количество генерируемых лучей намного меньше, чем для всей сцены.

Этот гибридный подход использовался в прошлом, хотя и в меньшей степени. Например, в Wolfenstein 3D для определения того, как будет выглядеть визуализированный кадр, использовалось литье лучей, хотя это делалось с одним лучом на столбец пикселей, а не на пиксель. Это все еще может показаться очень впечатляющим, пока вы не поймете, что игра изначально работала с разрешением 640 x 480, поэтому одновременно работало не более 640 лучей.

Видеокарта начала 2018 года — например, AMD Radeon RX 580 или Nvidia GeForce 1080 Ti — определенно соответствовала аппаратным требованиям для DXR, но даже с их вычислительными возможностями были некоторые опасения, что они будут достаточно мощными, чтобы их можно было использовать. DXR любым осмысленным способом.

Ситуация несколько изменилась в августе 2018 года, когда Nvidia представила свою новейшую архитектуру GPU под кодовым названием Turing. Важнейшей особенностью этого чипа было введение так называемых ядер RT: выделенных логических блоков для ускорения вычислений пересечения лучей и треугольников и обхода иерархии ограничивающих объемов (BVH). Эти два процесса требуют много времени для определения того, где свет взаимодействует с треугольниками, из которых состоят различные объекты в сцене. Учитывая, что ядра RT были уникальными для процессора Turing, доступ к ним можно было осуществить только через проприетарный API Nvidia.

Первой игрой, поддерживающей эту функцию, была Battlefield V от EA, и когда мы тестировали использование DXR, нас впечатлило улучшение отражений от воды, стекла и металла в игре, но гораздо меньшее впечатление произвел последующий скачок производительности:

Справедливости ради следует отметить, что более поздние патчи несколько улучшили ситуацию, но было (и остается) значительное падение скорости рендеринга кадров. К 2019 году появились некоторые другие игры, которые поддерживали этот API, выполняя трассировку лучей для определенных частей внутри кадра.Мы протестировали Metro Exodus и Shadow of the Tomb Raider и обнаружили похожую историю — там, где он использовался интенсивно, DXR заметно влиял на частоту кадров.

Примерно в то же время UL Benchmarks анонсировала тест функций DXR для 3DMark:

DXR при использовании на графической карте Nvidia Titan X (Pascal) — да, на протяжении

действительно было 8 кадров в секунду.

Тем не менее, наше изучение игр с поддержкой DXR и тест функций 3DMark доказали, что трассировка лучей не вызывает сомнений: в 2019 году это все еще серьезная тяжелая работа для графического процессора, даже для моделей стоимостью более 1000 долларов.Значит ли это, что у нас нет реальной альтернативы растеризации?

Передовые функции потребительской технологии 3D-графики часто очень дороги, а первоначальная поддержка новых возможностей API может быть довольно неоднородной или медленной (как мы обнаружили, тестируя Max Payne 3 в различных версиях Direct3D примерно в 2012 году). последнее обычно связано с тем, что разработчики игр пытаются включить как можно больше расширенных функций, иногда с ограниченным опытом их использования.

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

Несколько заключительных мыслей

Итак, мы подошли к концу нашего второго глубокого погружения, в ходе которого мы глубже заглянули в мир 3D-графики. Мы рассмотрели, как вершины моделей и миров смещаются из 3-х измерений и трансформируются в плоское 2D-изображение. Мы увидели, как нужно учитывать настройки поля зрения и какой эффект они производят.Мы исследовали процесс превращения этих вершин в пиксели и закончили кратким рассмотрением процесса, альтернативного растеризации.

Как и прежде, мы не могли все охватить и кое-где упустить некоторые детали — ведь это не учебник! Но мы надеемся, что за это время вы приобрели немного больше знаний и по-новому восхитились программистами и инженерами, которые действительно овладели математикой и наукой, необходимыми для реализации всего этого в ваших любимых 3D-играх.

Мы будем более чем рады ответить на любые ваши вопросы, поэтому не стесняйтесь присылать их нам в разделе комментариев. До следующего.

Читайте также

Титульный заголовок: Монохромная печатная растровая аннотация Алексея Дерина

Что такое блоки растеризации на карте. Особенности национальной модернизации, или На чем не стоит экономить. Ценовые категории и что мы получим, если купим видеокарту младшей серии

В первой части нашего руководства по видеокартам для начинающих мы рассмотрели ключевые компоненты: интерфейсы, выходы, систему охлаждения, GPU и видеопамять.Во второй части мы поговорим об особенностях и технологиях видеокарт.

Основные компоненты видеокарты:

  • выходы;
  • интерфейсы;
  • система охлаждения;
  • графический процессор;
  • видеопамять.

Часть 2 (эта статья): графические технологии :

  • словарь;
  • Архитектура графического процессора: включает
    блока вершин/пикселей, шейдеры, скорость заполнения, блоки текстур/растров, конвейеры;
  • Архитектура графического процессора: технология
    производственного процесса, частота графического процессора, локальная видеопамять (размер, шина, тип, частота), решения с несколькими видеокартами;
  • визуальные возможности
    DirectX, расширенный динамический диапазон (HDR), FSAA, фильтрация текстур, текстуры высокого разрешения.

Глоссарий основных графических терминов

Частота обновления

Как в кинотеатре или на телевизоре, ваш компьютер имитирует движение на мониторе, отображая последовательность кадров. Частота обновления монитора указывает, сколько раз в секунду будет обновляться картинка на экране. Например, 75 Гц соответствует 75 обновлениям в секунду.

Если компьютер обрабатывает кадры быстрее, чем может выводить монитор, то в играх могут возникать проблемы.Например, если компьютер рассчитывает 100 кадров в секунду, а частота обновления монитора составляет 75 Гц, то из-за наложений монитор может отображать только часть картинки в период своего обновления. В результате появляются визуальные артефакты.

В качестве решения можно включить V-Sync (вертикальную синхронизацию). Он ограничивает количество кадров, которые компьютер может создать, частотой обновления монитора, предотвращая появление артефактов. Если вы включите V-Sync, количество отображаемых в игре кадров никогда не превысит частоту обновления.То есть при 75 Гц компьютер выдаст не более 75 кадров в секунду.

Слово «Pixel» означает « pic ture el ement» — элемент изображения. Это крошечная точка на дисплее, которая может светиться определенным цветом (в большинстве случаев оттенок отображается комбинацией трех основных цветов: красного, зеленого и синего). Если разрешение экрана 1024х768, то можно увидеть матрицу 1024 пикселей по ширине и 768 пикселей по высоте Все вместе пиксели составляют изображение Картинка на экране обновляется от 60 до 120 раз в секунду, в зависимости от вида изображения и данных, выдаваемых на выходе видеокарты ЭЛТ-мониторы обновляют изображение построчно, а плоские ЖК-мониторы могут обновлять каждый пиксель в отдельности.

Все объекты в 3D-сцене состоят из вершин. Вершина — это точка в трехмерном пространстве с координатами x, y и z. Несколько вершин можно сгруппировать в многоугольник: чаще всего треугольник, но возможны и более сложные формы. Затем полигон текстурируется, чтобы объект выглядел реалистично. Трехмерный куб, показанный на иллюстрации выше, имеет восемь вершин. Более сложные объекты имеют изогнутые поверхности, которые на самом деле состоят из очень большого количества вершин.

Текстура — это просто двухмерное изображение произвольного размера, которое накладывается на трехмерный объект для имитации его поверхности.Например, наш 3D-куб имеет восемь вершин. До наложения текстуры это выглядит как простая коробка. Но когда мы применяем текстуру, коробка становится цветной.


Пиксельные шейдеры позволяют видеокарте создавать впечатляющие эффекты, такие как эта вода в Elder Scrolls: Oblivion.

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

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

С выпуском следующего интерфейса прикладного программирования (API, Application Programming Interface) Microsoft DirectX 10 будет выпущен третий тип шейдеров, называемый геометрическими шейдерами.С их помощью можно будет ломать предметы, модифицировать и даже уничтожать их в зависимости от желаемого результата. Третий тип шейдеров может быть запрограммирован точно так же, как и первые два, но его роль будет другой.

Скорость заполнения

Очень часто на коробке с видеокартой можно найти значение fill rate. По сути, скорость заполнения показывает, насколько быстро графический процессор может отображать пиксели. Старые видеокарты имели треугольную скорость заполнения. Но сегодня есть два типа скорости заполнения: скорость заполнения пикселей и скорость заполнения текстуры.Как уже упоминалось, скорость заполнения пикселя соответствует скорости вывода пикселя. Он рассчитывается как количество растровых операций (ROP), умноженное на тактовую частоту.

ATi и nVidia по-разному рассчитывают скорости заполнения текстур. Nvidia считает, что скорость получается путем умножения количества пиксельных конвейеров на тактовую частоту. А ATi умножает количество текстурных блоков на тактовую частоту. В принципе, оба метода правильны, так как nVidia использует один текстурный блок на блок пиксельного шейдера (то есть по одному на пиксельный конвейер).

Имея в виду эти определения, давайте продолжим и обсудим наиболее важные функции графического процессора, что они делают и почему они так важны.

Архитектура графического процессора: особенности

Реализм 3D-графики очень зависит от производительности видеокарты. Чем больше блоков пиксельных шейдеров содержит процессор и чем выше частота, тем больше эффектов можно применить к 3D-сцене для улучшения ее визуального восприятия.

Графический процессор содержит множество различных функциональных блоков.По количеству некоторых компонентов можно оценить, насколько мощный GPU. Прежде чем двигаться дальше, давайте рассмотрим наиболее важные функциональные блоки.

Вершинные процессоры (вершинные шейдеры)

Как и пиксельные шейдеры, процессоры вершин выполняют код шейдера, который затрагивает вершины. Поскольку больший бюджет вершин позволяет создавать более сложные 3D-объекты, производительность вершинных процессоров очень важна в 3D-сценах со сложным или большим количеством объектов. Однако блоки вершинных шейдеров по-прежнему не оказывают такого очевидного влияния на производительность, как пиксельные процессоры.

Пиксельные процессоры (пиксельные шейдеры)

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

Унифицированные шейдеры

Унифицированные (одиночные) шейдеры еще не появились в мире ПК, но грядущий стандарт DirectX 10 опирается на аналогичную архитектуру.То есть структура кода вершинных, геометрических и пиксельных программ будет одинаковой, хотя шейдеры будут выполнять разную работу. Новую спецификацию можно увидеть на Xbox 360, где графический процессор был специально разработан ATi для Microsoft. Будет очень интересно посмотреть, какой потенциал принесет новый DirectX 10.

Блоки наложения текстуры (TMU)

Текстуры должны быть выбраны и отфильтрованы. Эта работа выполняется модулями текстурного наложения, которые работают совместно с модулями пиксельного и вершинного шейдера.Работа TMU заключается в применении текстурных операций к пикселям. Количество текстурных блоков в графическом процессоре часто используется для сравнения текстурной производительности видеокарт. Вполне разумно предположить, что видеокарта с большим количеством TMU даст лучшую производительность текстур.

Блок оператора растра (ROP)

RIP отвечают за запись данных пикселей в память. Скорость, с которой выполняется эта операция, называется скоростью заполнения. На заре 3D-акселераторов ROP и скорость заполнения были очень важными характеристиками видеокарт.Сегодня работа ROP по-прежнему важна, но производительность видеокарты уже не ограничивается этими блоками, как это было раньше. Поэтому производительность (и количество) РОП редко используется для оценки быстродействия видеокарты.

Конвейеры

Конвейеры используются для описания архитектуры видеокарт и дают наглядное представление о производительности графического процессора.

Конвейер нельзя считать строгим техническим термином. GPU использует разные конвейеры, выполняющие разные функции.Исторически под конвейером понимался пиксельный процессор, подключенный к собственному блоку наложения текстур (TMU). Например, видеокарта Radeon 9700 использует восемь пиксельных процессоров, каждый из которых подключен к своему TMU, поэтому считается, что карта имеет восемь конвейеров.

Но современные процессоры очень сложно описать количеством конвейеров. По сравнению с предыдущими разработками, в новых процессорах используется модульная фрагментированная структура. Новатором в этой области можно считать компанию ATi, которая с линейкой видеокарт X1000 перешла на модульную структуру, что позволило добиться прироста производительности за счет внутренней оптимизации.Некоторые блоки ЦП используются больше, чем другие, и для повышения производительности графического процессора ATi попыталась найти компромисс между количеством необходимых блоков и площадью кристалла (она не может быть сильно увеличена). В этой архитектуре термин «пиксельный конвейер» уже потерял свое значение, поскольку пиксельные процессоры больше не связаны со своими собственными TMU. Например, графический процессор ATi Radeon X1600 имеет 12 пиксельных шейдеров и всего четыре TMU. Поэтому нельзя сказать, что в архитектуре этого процессора 12 пиксельных конвейеров, как нельзя сказать, что их всего четыре.Однако по традиции все же упоминаются пиксельные конвейеры.

С учетом этих допущений количество пиксельных конвейеров в GPU часто используют для сравнения видеокарт (за исключением линейки ATi X1x00). Например, если взять видеокарты с 24 и 16 конвейерами, то вполне резонно предположить, что карта с 24 конвейерами будет быстрее.

Архитектура графического процессора: Технология

Технологический процесс

Этот термин относится к размеру одного элемента (транзистора) микросхемы и точности производственного процесса.Совершенствование техпроцессов позволяет получать элементы меньших габаритов. Например, процесс 0,18 мкм дает более крупные элементы, чем процесс 0,13 мкм, поэтому он не так эффективен. Меньшие транзисторы работают на более низком напряжении. В свою очередь снижение напряжения приводит к уменьшению термического сопротивления, что снижает количество выделяемого тепла. Совершенствование техпроцесса позволяет сократить расстояние между функциональными блоками микросхемы, а также сократить время передачи данных.Более короткие расстояния, более низкое напряжение и другие улучшения позволяют достичь более высоких тактовых частот.

Несколько усложняет понимание того, что сегодня для обозначения технологического процесса используются как микрометры (мкм), так и нанометры (нм). На самом деле все очень просто: 1 нанометр равен 0,001 микрометра, поэтому 0,09-микронный и 90-нм технологический процесс — это одно и то же. Как было отмечено выше, меньший техпроцесс позволяет получить более высокие тактовые частоты. Например, если сравнивать видеокарты с 0.18 мкм и 0,09 мкм (90 нм), то вполне разумно ожидать более высокой частоты от 90 нм карты.

Тактовая частота графического процессора

Тактовая частота графического процессора измеряется в мегагерцах (МГц), что составляет миллионы циклов в секунду.

Тактовая частота напрямую влияет на производительность графического процессора. Чем он выше, тем больше работы можно совершить за секунду. В качестве первого примера возьмем видеокарты nVidia GeForce 6600 и 6600 GT: графический процессор 6600 GT работает на частоте 500 МГц, а обычная карта 6600 — на 400 МГц.Поскольку процессоры технически идентичны, увеличение тактовой частоты 6600 GT на 20% приводит к повышению производительности.

Но тактовая частота — это еще не все. Имейте в виду, что производительность сильно зависит от архитектуры. Для второго примера возьмем видеокарты GeForce 6600 GT и GeForce 6800 GT. Частота графического процессора 6600 GT составляет 500 МГц, а 6800 GT работает только на частоте 350 МГц. Теперь учтем, что 6800 GT использует 16 пиксельных конвейеров, а 6600 GT всего восемь.Таким образом, 6800 GT с 16 конвейерами на частоте 350 МГц даст примерно такую ​​же производительность, как процессор с восемью конвейерами и удвоенной тактовой частотой (700 МГц). При этом тактовую частоту можно использовать для сравнения производительности.

Локальная видеопамять

Память видеокарты оказывает огромное влияние на производительность. Но разные настройки памяти влияют по-разному.

Видеопамять

Объем видеопамяти, пожалуй, можно назвать наиболее завышенным параметром видеокарты.Неискушенные потребители часто используют объем видеопамяти для сравнения разных карт между собой, но в действительности объем мало влияет на производительность по сравнению с такими параметрами, как частота шины памяти и интерфейс (разрядность шины).

В большинстве случаев карта с 128 МБ видеопамяти будет работать почти так же, как карта с 256 МБ. Конечно, бывают ситуации, когда больший объем памяти приводит к повышению производительности, но имейте в виду, что больший объем памяти не приводит к автоматическому повышению производительности в играх.

Объем полезен в играх с текстурами высокого разрешения. Разработчики игры включают в игру несколько наборов текстур. И чем больше памяти на видеокарте, тем большее разрешение могут иметь загружаемые текстуры. Текстуры высокого разрешения обеспечивают более высокую четкость и детализацию в игре. Поэтому вполне разумно брать карту с большим объемом памяти, если все остальные критерии совпадают. Напомним еще раз, что ширина шины памяти и ее частота гораздо сильнее влияют на производительность, чем объем физической памяти на карте.

Разрядность шины памяти

Ширина шины памяти является одним из наиболее важных аспектов производительности памяти. Современные шины имеют ширину от 64 до 256 бит, а в некоторых случаях даже 512 бит. Чем шире шина памяти, тем больше информации она может передать за такт. А это напрямую влияет на производительность. Например, если взять две шины с одинаковыми частотами, то теоретически 128-битная шина будет передавать в два раза больше данных за такт, чем 64-битная. 256-битная шина в два раза больше.

Более высокая пропускная способность шины (выраженная в битах или байтах в секунду, 1 байт = 8 бит) обеспечивает лучшую производительность памяти. Именно поэтому шина памяти гораздо важнее ее размера. При равных частотах 64-битная шина памяти работает всего на 25% от 256-битной!

Возьмем следующий пример. Видеокарта со 128 МБ видеопамяти, но с 256-битной шиной дает гораздо лучшую производительность памяти, чем модель на 512 МБ с 64-битной шиной. Важно отметить, что для некоторых карт серии ATi X1x00 производители указывают характеристики шины внутренней памяти, а нас интересуют параметры внешней шины.Например, внутренняя кольцевая шина X1600 имеет ширину 256 бит, а внешняя — только 128 бит. А в реальности шина памяти работает со 128-битным исполнением.

Типы памяти

Память можно разделить на две основные категории: SDR (одинарная передача данных) и DDR (двойная передача данных), в которых данные передаются за такт в два раза быстрее. Сегодня технология одиночной передачи SDR устарела. Поскольку память DDR передает данные в два раза быстрее, чем SDR, важно помнить, что видеокарты с памятью DDR часто указывают удвоенную частоту, а не физическую.Например, если для памяти DDR указана частота 1000 МГц, это эффективная частота, на которой должна работать обычная память SDR, чтобы обеспечить такую ​​же пропускную способность. Но на самом деле физическая частота составляет 500 МГц.

По этой причине многие удивляются, когда память их видеокарты указана на 1200 МГц DDR, а утилиты сообщают о 600 МГц. Так что вам придется привыкнуть к этому. Память DDR2 и GDDR3/GDDR4 работает по одному принципу, т.е. с двойной передачей данных. Разница между памятью DDR, DDR2, GDDR3 и GDDR4 заключается в технологии производства и некоторых деталях.DDR2 может работать на более высоких частотах, чем память DDR, а DDR3 может работать на еще более высоких частотах, чем DDR2.

Частота шины памяти

Как и процессор, память (точнее, шина памяти) работает с определенной тактовой частотой, измеряемой в мегагерцах. Здесь увеличение тактовой частоты напрямую влияет на производительность памяти. А частота шины памяти — это один из параметров, по которым сравнивают производительность видеокарт. Например, если все остальные характеристики (разрядность шины памяти и т.) одинаковы, то вполне логично говорить, что видеокарта с памятью 700 МГц быстрее, чем с 500 МГц.

Опять же, тактовая частота — это еще не все. Память 700 МГц с 64-битной шиной будет медленнее, чем память 400 МГц с 128-битной шиной. Производительность памяти 400 МГц на 128-битной шине примерно соответствует памяти 800 МГц на 64-битной шине. Также следует помнить, что частоты GPU и памяти — это совершенно разные параметры, и обычно они разные.

Интерфейс видеокарты

Все данные, передаваемые между видеокартой и процессором, проходят через интерфейс видеокарты.На сегодняшний день для видеокарт используются три типа интерфейсов: PCI, AGP и PCI Express. Они отличаются пропускной способностью и другими характеристиками. Понятно, что чем выше пропускная способность, тем выше скорость обмена. Однако только самые современные карты могут использовать высокую пропускную способность, да и то лишь частично. В какой-то момент скорость интерфейса перестала быть «узким местом», сегодня достаточно просто.

Самая медленная шина, для которой выпускались видеокарты, это PCI (Peripheral Components Interconnect).Не вдаваясь в историю, конечно. PCI действительно ухудшил производительность видеокарт, поэтому они перешли на интерфейс AGP (Accelerated Graphics Port). Но даже спецификации AGP 1.0 и 2x ограничивают производительность. Когда стандарт увеличил скорость до AGP 4x, мы начали приближаться к практическому пределу пропускной способности, которую могут использовать видеокарты. Спецификация AGP 8x в очередной раз удвоила пропускную способность по сравнению с AGP 4x (2,16 ГБ/с), но заметного прироста графической производительности мы не получили.

Самая новая и самая быстрая шина — PCI Express. Более новые графические карты обычно используют интерфейс PCI Express x16, который объединяет 16 линий PCI Express для общей пропускной способности 4 ГБ/с (в одном направлении). Это вдвое превышает пропускную способность AGP 8x. Шина PCI Express дает указанную пропускную способность в обе стороны (передача данных на видеокарту и с нее). Но скорости стандарта AGP 8x было уже достаточно, поэтому мы еще не сталкивались с ситуациями, когда переход на PCI Express давал прирост производительности по сравнению с AGP 8x (при одинаковых прочих аппаратных параметрах).Например, AGP-версия GeForce 6800 Ultra будет работать так же, как 6800 Ultra для PCI Express.

Сегодня лучше всего покупать карту с интерфейсом PCI Express, ее хватит на рынке еще на несколько лет. Самые производительные карты с интерфейсом AGP 8x уже не выпускаются, а решения PCI Express, как правило, найти уже проще, чем аналоги AGP, да и стоят они дешевле.

Решения с несколькими графическими процессорами

Использование нескольких видеокарт для повышения производительности графики — не новая идея.На заре 3D-графики 3dfx вышла на рынок с двумя видеокартами, работающими параллельно. Но с исчезновением 3dfx технология совместной работы нескольких потребительских видеокарт была предана забвению, хотя ATi выпускала аналогичные системы для профессиональных симуляторов с момента выхода Radeon 9700. Пару лет назад технология вернулась в рынок: с появлением решений nVidia SLI и, чуть позже, ATi Crossfire .

Совместное использование нескольких видеокарт обеспечивает достаточную производительность для запуска игры с высокими настройками качества в высоком разрешении. Но выбрать тот или иной непросто.

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

Также помните, что для SLI/CrossFire требуется соответствующая материнская плата (по той или иной технологии), которая обычно дороже стандартных моделей.Конфигурация nVidia SLI будет работать только на некоторых платах nForce4, а карты ATi CrossFire будут работать только на материнских платах с набором микросхем CrossFire или некоторых моделях Intel. Что еще хуже, некоторые конфигурации CrossFire требуют, чтобы одна из карт была специальной: CrossFire Edition. После выхода CrossFire для некоторых моделей видеокарт ATi разрешила включение технологии кооперации по шине PCI Express, а с выходом новых версий драйверов количество возможных комбинаций увеличивается.Но все же аппаратный CrossFire с соответствующей картой CrossFire Edition дает лучшую производительность. Но карты CrossFire Edition также дороже обычных моделей. В настоящее время вы можете включить программный режим CrossFire (без карты CrossFire Edition) на видеокартах Radeon X1300, X1600 и X1800 GTO.

Следует учитывать и другие факторы. Хотя две видеокарты, работающие вместе, дают прирост производительности, он далеко не вдвое. Но вы заплатите в два раза больше денег.Чаще всего прирост производительности составляет 20-60%. А в некоторых случаях из-за дополнительных вычислительных затрат на сопоставление выигрыша нет вообще. По этой причине конфигурации с несколькими картами вряд ли окупятся дешевыми моделями, так как более дорогая видеокарта обычно всегда будет превосходить пару дешевых карт. В общем, для большинства потребителей брать решение SLI/CrossFire не имеет смысла. Но если вы хотите включить все опции повышения качества или поиграть на экстремальных разрешениях, например 2560х1600, когда нужно просчитывать более 4 миллионов пикселей за кадр, то без двух-четырех парных видеокарт не обойтись.

Визуальные элементы

Помимо чисто аппаратных характеристик, разные поколения и модели графических процессоров могут различаться набором функций. Например, карты поколения ATi Radeon X800 XT часто называют совместимыми с Shader Model 2.0b (SM), а nVidia GeForce 6800 Ultra — с SM 3.0, хотя их аппаратные характеристики близки друг к другу (16 конвейеров). Поэтому многие потребители делают выбор в пользу того или иного решения, даже не подозревая, в чем заключается эта разница.Что ж, давайте поговорим о визуальных функциях и о том, что они значат для конечного пользователя.

Эти имена чаще всего используются в спорах, но мало кто знает, что они означают на самом деле. Чтобы понять, начнем с истории графических API. DirectX и OpenGL — это графические API, то есть интерфейсы прикладного программирования — стандарты открытого кода, доступные каждому.

До появления графических API у каждого производителя графических процессоров был собственный механизм взаимодействия с играми. Разработчикам приходилось писать отдельный код для каждого графического процессора, который они хотели поддерживать.Очень дорогой и неэффективный метод. Для решения этой проблемы были разработаны API для 3D-графики, чтобы разработчики писали код для конкретного API, а не для той или иной видеокарты. После этого проблемы с совместимостью легли на плечи производителей видеокарт, которые должны были следить за совместимостью драйверов с API.

Единственная сложность остается в том, что сегодня используются два разных API, а именно Microsoft DirectX и OpenGL, где GL означает Graphics Library (графическая библиотека).Поскольку API DirectX сегодня более популярен в играх, мы сосредоточимся на нем. И этот стандарт сильнее повлиял на разработку игр.

DirectX является детищем Microsoft. На самом деле DirectX включает в себя несколько API, только один из которых используется для 3D-графики. DirectX включает API для звука, музыки, устройств ввода и многого другого. API Direct3D отвечает за 3D-графику в DirectX. Когда говорят о видеокартах, имеют в виду именно это, поэтому в этом отношении понятия DirectX и Direct3D взаимозаменяемы.

DirectX периодически обновляется по мере развития графических технологий и внедрения разработчиками игр новых методов программирования игр. Поскольку популярность DirectX быстро росла, производители графических процессоров начали приспосабливать новые выпуски продуктов к возможностям DirectX. По этой причине видеокарты часто привязаны к аппаратной поддержке того или иного поколения DirectX (DirectX 8, 9.0 или 9.0c).

Еще больше усложняет ситуацию то, что части Direct3D API могут меняться со временем без изменения поколений DirectX.Например, в спецификации DirectX 9.0 указана поддержка Pixel Shader 2.0. Но обновление DirectX 9.0c включает Pixel Shader 3.0. Таким образом, несмотря на то, что карты относятся к классу DirectX 9, они могут поддерживать разные наборы функций. Например, Radeon 9700 поддерживает Shader Model 2.0, а Radeon X1800 поддерживает Shader Model 3.0, хотя обе карты можно отнести к поколению DirectX 9.

Помните, что при создании новых игр разработчики учитывают владельцев старых машин и видеокарт, ведь если игнорировать этот сегмент пользователей, то продажи будут ниже.По этой причине в игры встроено несколько путей кода. Игра класса DirectX 9, вероятно, имеет путь DirectX 8 и даже путь DirectX 7 для совместимости. Обычно при выборе старого пути в игре пропадают некоторые виртуальные эффекты, которые есть на новых видеокартах. Но по крайней мере играть можно даже на старом железе.

Многие новые игры требуют установки последней версии DirectX, даже если используется видеокарта предыдущего поколения. То есть новая игра, которая будет использовать путь DirectX 8, по-прежнему требует установки последней версии DirectX 9 на видеокарту класса DirectX 8.

Каковы различия между различными версиями API Direct3D в DirectX? Ранние версии DirectX — 3, 5, 6 и 7 — были относительно простыми с точки зрения API Direct3D. Разработчики могли выбирать визуальные эффекты из списка, а затем проверять их работу в игре. Следующим важным шагом в программировании графики стал DirectX 8. Он представил возможность программировать видеокарту с помощью шейдеров, так что впервые у разработчиков появилась свобода программировать эффекты так, как они хотели.DirectX 8 поддерживает версии Pixel Shader с 1.0 по 1.3 и Vertex Shader 1.0. DirectX 8.1, обновленная версия DirectX 8, получила Pixel Shader 1.4 и Vertex Shader 1.1.

В DirectX 9 можно создавать еще более сложные шейдерные программы. DirectX 9 поддерживает Pixel Shader 2.0 и Vertex Shader 2.0. DirectX 9c, обновленная версия DirectX 9, включает спецификацию Pixel Shader 3.0.

DirectX 10, будущая версия API, будет сопровождать новую версию Windows Vista.DirectX 10 не может быть установлен в Windows XP.

HDR означает «High Dynamic Range», высокий динамический диапазон. Игра с HDR-освещением может дать гораздо более реалистичную картинку, чем игра без него, и не все видеокарты поддерживают HDR-освещение.

До появления графических карт класса DirectX 9 точность вычислений освещения у графических процессоров была сильно ограничена. До сих пор освещение можно было рассчитать только с 256 (8 бит) внутренними уровнями.

Когда появились видеокарты класса DirectX 9, они были способны выдавать освещение с высокой точностью — полные 24 бита или 16.7 миллионов уровней.

Благодаря 16,7 миллионам уровней и следующему шагу в производительности видеокарт класса DirectX 9/Shader Model 2.0 освещение HDR также возможно на компьютерах. Это достаточно сложная технология, и смотреть ее нужно в динамике. Проще говоря, HDR-освещение увеличивает контрастность (темные тона кажутся темнее, светлые — светлее), одновременно увеличивая количество деталей освещения в темных и светлых областях. Игра с HDR-освещением кажется более живой и реалистичной, чем без него.Графические процессоры

, соответствующие последней спецификации Pixel Shader 3.0, обеспечивают более высокую точность 32-битных вычислений освещения, а также смешивание с плавающей запятой. Таким образом, видеокарты класса SM 3.0 могут поддерживать специальный метод освещения OpenEXR HDR, специально разработанный для киноиндустрии.

Некоторые игры, поддерживающие только HDR-освещение с использованием метода OpenEXR, не будут работать с HDR-освещением на видеокартах Shader Model 2.0. Однако игры, не использующие метод OpenEXR, будут работать на любой видеокарте с поддержкой DirectX 9.Например, Oblivion использует метод OpenEXR HDR и позволяет включать HDR-освещение только на новейших видеокартах, поддерживающих спецификацию Shader Model 3.0. Например, nVidia GeForce 6800 или ATi Radeon X1800. Игры, использующие 3D-движок Half-Life 2, такие как Counter-Strike: Source и готовящаяся к выпуску Half-Life 2: Aftermath, позволяют включать HDR-рендеринг на старых видеокартах DirectX 9, поддерживающих только Pixel Shader 2.0. Примеры включают линейку GeForce 5 или ATi Radeon 9500.

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

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

Сглаживание сильно зависит от производительности видеопамяти, поэтому быстрая видеокарта с быстрой памятью сможет рассчитывать полноэкранное сглаживание с меньшим влиянием на производительность, чем недорогая видеокарта. Сглаживание может быть включено в различных режимах. Например, 4-кратное сглаживание даст лучшую картинку, чем 2-кратное сглаживание, но это сильно ударит по производительности. В то время как 2-кратное сглаживание удваивает разрешение по горизонтали и вертикали, 4-кратный режим увеличивает его в четыре раза.

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

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

Анизотропная фильтрация (AF) на сегодняшний день является лучшим способом фильтрации текстур. Подобно FSAA, анизотропную фильтрацию можно включать на разных уровнях.Например, 8x AF дает лучшее качество фильтрации, чем 4x AF. Как и FSAA, анизотропная фильтрация требует определенной вычислительной мощности, которая увеличивается по мере увеличения уровня AF.

Все 3D-игры создаются по определенным спецификациям, и одно из этих требований определяет объем памяти текстур, который потребуется игре. Все необходимые текстуры должны влезать в память видеокарты во время игры, иначе производительность резко упадет, так как обращение к текстуре в оперативной памяти дает немалую задержку, не говоря уже о файле подкачки на винчестере.Таким образом, если разработчик игры рассчитывает на 128 МБ видеопамяти как на минимальное требование, то активный набор текстур не должен превышать 128 МБ в любое время.

Современные игры имеют несколько наборов текстур, поэтому игра будет работать гладко как на старых видеокартах с меньшим объемом видеопамяти, так и на новых картах с большим объемом видеопамяти. Например, игра может содержать три набора текстур: на 128 МБ, 256 МБ и 512 МБ. Игр, поддерживающих 512 МБ видеопамяти, на сегодняшний день очень мало, но они все же являются наиболее объективной причиной для покупки видеокарты с таким объемом памяти.Хотя увеличение памяти практически не влияет на производительность, вы получите улучшение визуального качества, если игра поддерживает соответствующий набор текстур.

Архитектура графического процессора

: особенности

Реализм 3D-графики сильно зависит от производительности видеокарты. Чем больше блоков пиксельных шейдеров содержит процессор и чем выше частота, тем больше эффектов можно применить к 3D-сцене для улучшения ее визуального восприятия.

Графический процессор содержит множество различных функциональных блоков.По количеству некоторых компонентов можно оценить, насколько мощный GPU. Прежде чем двигаться дальше, давайте рассмотрим наиболее важные функциональные блоки.

Вершинные процессоры (вершинные шейдеры)

Как и пиксельные шейдеры, процессоры вершин выполняют код шейдера, который затрагивает вершины. Поскольку больший бюджет вершин позволяет создавать более сложные 3D-объекты, производительность вершинных процессоров очень важна в 3D-сценах со сложным или большим количеством объектов. Однако блоки вершинных шейдеров по-прежнему не оказывают такого очевидного влияния на производительность, как пиксельные процессоры.

Пиксельные процессоры (пиксельные шейдеры)

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

Унифицированные шейдеры

Унифицированные (одиночные) шейдеры еще не появились в мире ПК, но грядущий стандарт DirectX 10 опирается на аналогичную архитектуру.То есть структура кода вершинных, геометрических и пиксельных программ будет одинаковой, хотя шейдеры будут выполнять разную работу. Новую спецификацию можно увидеть на Xbox 360, где графический процессор был специально разработан ATi для Microsoft. Будет очень интересно посмотреть, какой потенциал принесет новый DirectX 10.

Блоки наложения текстур (TMU)

Текстуры должны быть выбраны и отфильтрованы. Эта работа выполняется модулями текстурного наложения, которые работают совместно с модулями пиксельного и вершинного шейдера.Работа TMU заключается в применении текстурных операций к пикселям. Количество текстурных блоков в графическом процессоре часто используется для сравнения производительности текстур видеокарт. Вполне разумно предположить, что видеокарта с большим количеством TMU даст лучшую производительность текстур.

Блок оператора растра (ROP)

RIP отвечают за запись данных пикселей в память. Скорость, с которой выполняется эта операция, называется скоростью заполнения. На заре 3D-акселераторов ROP и скорость заполнения были очень важными характеристиками графических карт.Сегодня работа ROP по-прежнему важна, но производительность видеокарты уже не ограничивается этими блоками, как это было раньше. Поэтому производительность (и количество) РОП редко используется для оценки быстродействия видеокарты.

Конвейеры

Конвейеры

используются для описания архитектуры видеокарт и дают наглядное представление о производительности графического процессора.

Конвейер нельзя считать строгим техническим термином. GPU использует разные конвейеры, выполняющие разные функции.Исторически под конвейером понимался пиксельный процессор, подключенный к собственному блоку наложения текстур (TMU). Например, видеокарта Radeon 9700 использует восемь пиксельных процессоров, каждый из которых подключен к своему TMU, поэтому считается, что карта имеет восемь конвейеров.

Но современные процессоры очень сложно описать количеством конвейеров. По сравнению с предыдущими разработками, в новых процессорах используется модульная фрагментированная структура. Новатором в этой области можно считать компанию ATi, которая с линейкой видеокарт X1000 перешла на модульную структуру, что позволило добиться прироста производительности за счет внутренней оптимизации.Некоторые блоки ЦП используются больше, чем другие, и для повышения производительности графического процессора ATi попыталась найти компромисс между количеством необходимых блоков и площадью кристалла (она не может быть сильно увеличена). В этой архитектуре термин «пиксельный конвейер» уже потерял свое значение, поскольку пиксельные процессоры больше не связаны со своими собственными TMU. Например, графический процессор ATi Radeon X1600 имеет 12 пиксельных шейдеров и всего четыре TMU. Поэтому нельзя сказать, что в архитектуре этого процессора 12 пиксельных конвейеров, как нельзя сказать, что их всего четыре.Однако по традиции все же упоминаются пиксельные конвейеры.

С учетом этих допущений количество пиксельных конвейеров в GPU часто используется для сравнения видеокарт (за исключением линейки ATi X1x00). Например, если взять видеокарты с 24 и 16 конвейерами, то вполне резонно предположить, что карта с 24 конвейерами будет быстрее.

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

Тактовая частота видеочипа

Рабочая частота графического процессора обычно измеряется в мегагерцах, то есть в миллионах циклов в секунду. Эта характеристика напрямую влияет на производительность видеочипа — чем она выше, тем больше работы GPU может выполнить в единицу времени, обработать большее количество вершин и пикселей.Пример из жизни: частота видеочипа, установленного на плате Radeon HD 6670, составляет 840 МГц, а точно такой же чип в модели Radeon HD 6570 работает на частоте 650 МГц. Соответственно, все основные ТТХ тоже будут отличаться. Но не только рабочая частота чипа определяет производительность, на его скорость сильно влияет и сама графическая архитектура: конструкция и количество исполнительных блоков, их характеристики и т. д.

В некоторых случаях тактовая частота отдельных блоков графического процессора отличается от частоты остальной части чипа.То есть разные части GPU работают на разных частотах, и сделано это для повышения эффективности, ведь одни блоки способны работать на более высоких частотах, а другие нет. Большинство видеокарт NVIDIA GeForce оснащены такими графическими процессорами. Из недавних примеров возьмем видеочип в модели GTX 580, большая часть которого работает на частоте 772 МГц, а универсальные вычислительные блоки чипа имеют удвоенную частоту — 1544 МГц.

Скорость заполнения (скорость заполнения)

Скорость заполнения показывает, насколько быстро видеочип способен отрисовывать пиксели.Существует два типа скорости заполнения: скорость заполнения пикселей и скорость текселей. Скорость заполнения пикселей показывает скорость, с которой пиксели отрисовываются на экране, и зависит от рабочей частоты и количества ROP (единиц операций растеризации и смешивания), а скорость заполнения текстуры — это частота дискретизации данных текстуры, которая зависит от частота работы и количество текстурных блоков.

Например, пиковая скорость заполнения пикселей GeForce GTX 560 Ti составляет 822 (частота чипа) × 32 (ROPs) = 26304 мегапикселя в секунду, а скорость заполнения текстуры — 822 × 64 (единицы текстурирования) = 52608 мегатекселей/с.Упрощенно ситуация такова — чем больше первое число, тем быстрее видеокарта может рендерить готовые пиксели, а чем больше второе, тем быстрее происходит выборка текстурных данных.

Хотя важность «чистого» филлрейта в последнее время значительно снизилась, уступив место скорости вычислений, эти параметры по-прежнему очень важны, особенно для игр с простой геометрией и относительно простыми расчетами пикселей и вершин. Так что оба параметра по-прежнему важны для современных игр, но они должны быть сбалансированы.Поэтому количество ROP в современных видеочипах обычно меньше количества текстурных блоков.

Количество вычислительных (шейдерных) блоков или процессоров

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

Унифицированная архитектура впервые была использована в видеочипе игровой приставки Microsoft Xbox 360, этот графический процессор разработан компанией ATI (позже приобретен AMD). А в видеочипах для персональных компьютеров в плате NVIDIA GeForce 8800 появились унифицированные шейдерные блоки. И с тех пор все новые видеочипы основаны на единой архитектуре, имеющей универсальный код для разных шейдерных программ (вершинных, пиксельных, геометрических и т. д.), а соответствующие унифицированные процессоры могут выполнять любые программы.

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

Хотя нельзя делать однозначные выводы о производительности исключительно на основании количества вычислительных блоков, обязательно нужно учитывать тактовую частоту и разную архитектуру блоков разных поколений и производителей чипов. Только по этим цифрам можно сравнивать чипы одной линейки одного производителя: AMD или NVIDIA. В остальных случаях нужно обратить внимание на тесты производительности в интересующих играх или приложениях.

Блоки текстурирования (TMU)

Эти блоки графического процессора работают вместе с вычислительными процессорами для выборки и фильтрации текстур и других данных, необходимых для построения сцен и вычислений общего назначения.Количество текстурных блоков в видеочипе определяет производительность текстур, то есть скорость выборки текселей из текстур.

Хотя в последнее время больше внимания уделяется математическим расчетам, а некоторые текстуры заменены на процедурные, нагрузка на TMU по-прежнему достаточно высока, так как кроме основных текстур необходимо делать сэмплы еще и с карт нормалей и карт смещения, а также внеэкранные буферы рендеринга цели рендеринга.

Принимая во внимание упор многих игр, в том числе и на производительность блоков текстурирования, можно сказать, что количество TMU и соответствующая высокая текстурная производительность также являются одним из важнейших параметров для видеочипов.Особое влияние этот параметр оказывает на скорость рендеринга изображения при использовании анизотропной фильтрации, требующей дополнительных выборок текстур, а также при сложных алгоритмах мягких теней и новомодных алгоритмах вроде Screen Space Ambient Occlusion.

Единицы операций растеризации (ROP)

Блоки растеризации выполняют операции записи рассчитанных видеокартой пикселей в буферы и операции их смешивания (блендинга). Как мы отмечали выше, производительность блоков растеризации влияет на скорость заполнения, а это одна из основных характеристик видеокарт всех времен и народов.И хотя в последнее время его значение также несколько снизилось, все же есть случаи, когда производительность приложения зависит от скорости и количества ROP. Чаще всего это связано с активным использованием фильтров постобработки и включенным сглаживанием на высоких настройках игры.

Еще раз отметим, что современные видеочипы нельзя оценивать только количеством различных блоков и их частотой. Каждая серия графических процессоров использует новую архитектуру, в которой исполнительные блоки сильно отличаются от старых, и соотношение количества разных блоков может отличаться.Например, ROP от AMD в некоторых решениях могут выполнять больше работы за такт, чем ROP от NVIDIA, и наоборот. То же самое касается и возможностей текстурных блоков TMU — они разные в разных поколениях GPU разных производителей, и это нужно учитывать при сравнении.

геометрические блоки

До недавнего времени количество блоков обработки геометрии не имело особого значения. Одного блока на GPU было достаточно для большинства задач, так как геометрия в играх была достаточно простой, а основной акцент производительности делался на математические вычисления.Важность параллельной обработки геометрии и количество соответствующих блоков резко возросло с введением поддержки тесселяции геометрии в DirectX 11. NVIDIA первой распараллелила обработку геометрических данных, когда в ее чипах GF1xx появилось несколько соответствующих блоков. Затем аналогичное решение выпустила AMD (только в топовых решениях линейки Radeon HD 6700 на базе чипов Cayman).

В рамках данного материала мы не будем вдаваться в подробности, их можно найти в базовых материалах нашего сайта, посвященных DirectX 11-совместимым графическим процессорам.В данном случае для нас важно то, что количество блоков обработки геометрии сильно влияет на общую производительность в новейших играх, использующих тесселяцию, таких как Metro 2033, HAWX 2 и Crysis 2 (с последними патчами). И при выборе современной игровой видеокарты очень важно обращать внимание на геометрические показатели.

Видеопамять

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

Итак, в каждой игре и при определенных настройках и игровых сценах есть определенный объем видеопамяти, которого хватает для всех данных. И хоть вы поставите туда 4 Гб видеопамяти, у него не будет причин для ускорения рендеринга, скорость будет ограничена рассмотренными выше исполнительными блоками, а памяти просто хватит.Вот почему во многих случаях видеокарта с 1,5 ГБ видеопамяти работает с той же скоростью, что и карта с 3 ГБ (при прочих равных условиях).

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

Разрядность шины памяти

Ширина шины памяти является наиболее важной характеристикой, влияющей на пропускную способность памяти (BW). Большая ширина позволяет передавать больше информации из видеопамяти в GPU и обратно в единицу времени, что положительно сказывается на производительности в большинстве случаев.Теоретически 256-битная шина может передавать вдвое больше данных за такт, чем 128-битная шина. На практике разница в скорости рендеринга хоть и не достигает двух раз, но очень близка к ней во многих случаях, с упором на пропускную способность видеопамяти.

Современные игровые видеокарты используют разную ширину шины: от 64 до 384 бит (ранее были чипы с 512-битной шиной), в зависимости от ценового диапазона и времени выпуска конкретной модели GPU. Для самых дешевых младших видеокарт чаще всего используется 64 и реже 128 бит, для среднего уровня от 128 до 256 бит, а вот видеокарты из верхнего ценового диапазона используют шины шириной от 256 до 384 бит.Ширина шины уже не может расти чисто из-за физических ограничений — размер чипа GPU недостаточен для маршрутизации более 512-битной шины, да и слишком дорого. Поэтому пропускная способность памяти сейчас увеличивается за счет использования новых типов памяти (см. ниже).

Частота видеопамяти

Еще одним параметром, влияющим на пропускную способность памяти, является ее тактовая частота. А увеличение пропускной способности памяти зачастую напрямую влияет на производительность видеокарты в 3D-приложениях.Частота шины памяти на современных видеокартах колеблется от 533 (1066, с удвоением) МГц до 1375 (5500, с учетверением) МГц, то есть может отличаться более чем в пять раз! А так как пропускная способность памяти зависит как от частоты памяти, так и от ширины ее шины, память с 256-битной шиной, работающей на частоте 800 (3200) МГц, будет иметь большую пропускную способность по сравнению с памятью, работающей на 1000 (4000) МГц. ) МГц при 128-битной шине.

Особое внимание следует обращать на параметры ширины шины памяти, ее тип и частоту работы при покупке относительно недорогих видеокарт, многие из которых оснащены только 128-битными или даже 64-битными интерфейсами, что негативно сказывается на их производительности .В общем, мы вообще не рекомендуем покупать видеокарту с 64-битной шиной видеопамяти для игрового ПК. Желательно отдать предпочтение хотя бы среднему уровню с хотя бы 128- или 192-битной шиной.

Типы памяти

На современные видеокарты устанавливается сразу несколько разных типов памяти. Старой односкоростной памяти SDR нигде нет, но современные типы памяти DDR и GDDR имеют существенно разные характеристики. Различные типы DDR и GDDR позволяют передавать в два или четыре раза больше данных на той же тактовой частоте в единицу времени, в связи с чем цифру рабочей частоты часто указывают удвоением или учетверением, умножением на 2 или 4.Так, если для памяти DDR указана частота 1400 МГц, то эта память работает на физической частоте 700 МГц, но указывают так называемую «эффективную» частоту, то есть ту, на которой должна работать память SDR, чтобы обеспечивают одинаковую пропускную способность. То же самое с GDDR5, но здесь частота увеличена даже в четыре раза.

Основным преимуществом новых типов памяти является возможность работы на высоких тактовых частотах, а значит — увеличение пропускной способности по сравнению с предыдущими технологиями.Достигается это за счет повышенных задержек, которые, впрочем, не так важны для видеокарт. Первой платой, использующей память DDR2, была NVIDIA GeForce FX 5800 Ultra. С тех пор технология графической памяти значительно продвинулась вперед с развитием стандарта GDDR3, близкого к спецификациям DDR2, с некоторыми модификациями специально для видеокарт.

GDDR3 — память для видеокарт с той же технологией, что и DDR2, но с улучшенными характеристиками потребления и тепловыделения, что позволяет чипам работать на более высоких тактовых частотах.Несмотря на то, что стандарт был разработан ATI, первой видеокартой, использующей его, стала вторая модификация NVIDIA GeForce FX 5700 Ultra, а следующей — GeForce 6800 Ultra.

GDDR4 — это дальнейшее развитие «графической» памяти, работающее почти в два раза быстрее, чем GDDR3. Главные отличия GDDR4 от GDDR3, значимые для пользователей, — это в очередной раз повышенные рабочие частоты и сниженное энергопотребление. Технически память GDDR4 мало чем отличается от GDDR3, это дальнейшее развитие тех же идей.Первыми видеокартами с чипами GDDR4 на борту стали ATI Radeon X1950 XTX, тогда как NVIDIA вообще не выпускала продукты на базе этого типа памяти. Преимущества новых чипов памяти перед GDDR3 в том, что энергопотребление модулей может быть примерно на треть ниже. Это достигается за счет более низкого номинального напряжения для GDDR4.

Однако GDDR4 не получила широкого распространения даже в решениях AMD. Начиная с семейства графических процессоров RV7x0, контроллеры памяти видеокарт поддерживают новый тип памяти GDDR5, работающий на эффективной учетверенной частоте до 5.5 ГГц и выше (теоретически возможны частоты до 7 ГГц), что дает пропускную способность до 176 ГБ/с при использовании 256-битного интерфейса. В то время как GDDR3/GDDR4 должна была использовать 512-битную шину для увеличения пропускной способности памяти, переход на GDDR5 позволил удвоить производительность за счет меньшего размера кристалла и меньшего энергопотребления.

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

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

Унифицированная архитектура впервые была использована в видеочипе игровой приставки Microsoft Xbox 360, этот графический процессор разработан компанией ATI (позже приобретен AMD).А в видеочипах для персональных компьютеров в плате NVIDIA GeForce 8800 появились унифицированные шейдерные блоки. И с тех пор все новые видеочипы основаны на единой архитектуре, имеющей универсальный код для разных шейдерных программ (вершинных, пиксельных, геометрических и т. д.), а соответствующие унифицированные процессоры могут выполнять любые программы.

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

Хотя нельзя делать однозначные выводы о производительности исключительно на основании количества вычислительных блоков, обязательно нужно учитывать тактовую частоту и разную архитектуру блоков разных поколений и производителей чипов.Только по этим цифрам можно сравнивать чипы одной линейки одного производителя: AMD или NVIDIA. В остальных случаях нужно обратить внимание на тесты производительности в интересующих играх или приложениях.

Блоки текстурирования (TMU)

Эти блоки графического процессора работают вместе с вычислительными процессорами для выборки и фильтрации текстур и других данных, необходимых для построения сцен и вычислений общего назначения. Количество текстурных блоков в видеочипе определяет производительность текстур, то есть скорость, с которой тексели извлекаются из текстур.

Хотя в последнее время больше внимания уделяется математическим расчетам, а некоторые текстуры заменены на процедурные, нагрузка на TMU по-прежнему достаточно высока, так как кроме основных текстур необходимо делать сэмплы еще и с карт нормалей и карт смещения, а также внеэкранные буферы рендеринга цели рендеринга.

Принимая во внимание упор многих игр, в том числе и на производительность блоков текстурирования, можно сказать, что количество TMU и соответствующая высокая текстурная производительность также являются одним из важнейших параметров для видеочипов.Особое влияние этот параметр оказывает на скорость рендеринга изображения при использовании анизотропной фильтрации, требующей дополнительных выборок текстур, а также при сложных алгоритмах мягких теней и новомодных алгоритмах вроде Screen Space Ambient Occlusion.

Единицы операций растеризации (ROP)

Блоки растеризации выполняют операции записи рассчитанных видеокартой пикселей в буферы и операции их смешивания (блендинга).Как мы отмечали выше, производительность блоков растеризации влияет на скорость заполнения, а это одна из основных характеристик видеокарт всех времен и народов. И хотя в последнее время его значение также несколько снизилось, все же есть случаи, когда производительность приложения зависит от скорости и количества ROP. Чаще всего это связано с активным использованием фильтров постобработки и включенным сглаживанием на высоких настройках игры.

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

«…Хочу проапгрейдить комп, чтобы все летало, купил процессор i7-3970X и мать ASRock X79 Extreme6, плюс видеокарта RADEON HD 7990 6GB. Что еще нан????777″
— так начинается примерно половина всех сообщений, связанных с обновлением стационарного компьютера. Исходя из собственного или семейного бюджета, пользователи стараются выбрать самые, самые и самые шустрые и красивые модули памяти.При этом, наивно полагая, что их старенький 450Вт справится и с прожорливой видеокартой, и с «горячим» процессором при разгоне одновременно.

Мы со своей стороны уже не раз писали о важности блока питания — но, признаемся, наверное, недостаточно ясно. Поэтому сегодня мы исправились и подготовили для вас памятку о том, что будет, если вы забудете об этом при апгрейде ПК — с картинками и подробными описаниями.

Поэтому мы решили обновить конфигурацию…


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

Блок питания: ATX 12V 400W

Понятно, что для игр такая конфигурация, мягко говоря, слабовата.Так что пришло время для перемен! Мы начнем с того же, с чего начинают большинство людей, которые хотят «апгрейда», — с. Материнскую плату менять не будем — пока она нас устраивает.

Так как материнскую плату мы решили не трогать, то выберем ту, которая совместима с сокетом FM2 (благо на сайте NIX на странице описания материнской платы для этого есть специальная кнопка). Не будем жадничать — возьмем доступный, но быстрый и мощный процессор с частотой 4.1 ГГц (до 4,4 ГГц в режиме Turbo CORE) и разблокированный множитель — мы тоже любим разгонять, ничто человеческое нам не чуждо. Вот характеристики выбранного нами процессора:

Технические характеристики
Частота шины ЦП 5000 МГц Рассеиваемая мощность 100 Вт Частота процессора 4,1 ГГц или до 4,4 ГГц в режиме Turbo CORE Ядро Ричленд Кэш L1 96 КБ x2 Кэш L2 2048 КБ x2, работает на частоте процессора 64-битная поддержка Да Количество ядер 4 Умножение 41, разблокированный множитель Видеоядро процессора AMD Radeon HD 8670D на частоте 844 МГц; Поддержка Shader Model 5 Максимальный объем оперативной памяти 64 ГБ Макс.количество подключенных мониторов 3 напрямую подключенных или до 4 мониторов с использованием разветвителей DisplayPort

Одна планка на 4гб не наш выбор. Во-первых, мы хотим 16Гб, а во-вторых, нам нужно включить двухканальную работу, для чего мы установим в наш компьютер два модуля памяти по 8Гб каждый. Высокая пропускная способность, отсутствие радиаторов и достойная цена делают их самым вкусным выбором для нас. Кроме того, с сайта AMD можно скачать программу Radeon RAMDisk, которая позволит нам совершенно бесплатно создать сверхбыстрый виртуальный диск объемом до 6 ГБ — а бесплатные полезные вещицы любят все.


Технические характеристики
Память 8 ГБ
Количество модулей 2
Стандарт памяти PC3-10600 (DDR3 1333 МГц)
Рабочая частота до 1333 МГц
Тайминги 9-9-9-24
Напряжение питания 1,5 В
Пропускная способность 10667 Мбит/с

Комфортно воспроизводить встроенное видео можно только в Сапе.Поэтому, чтобы проапгрейдить компьютер до игрового уровня, мы выбрали современный и мощный, но не самый дорогой.


Стала с 2гб видеопамяти, поддержкой DirectX 11 и OpenGL 4.x. и отличная система охлаждения Twin Frozr IV. Его производительности должно быть более чем достаточно, чтобы мы могли наслаждаться последними частями самых популярных игровых франшиз, таких как Tomb Raider, Crysis, Hitman и Far Cry. Характеристики нашего выбора следующие:


Технические характеристики
Графический процессор GeForce GTX 770
Частота GPU 1098 МГц или до 1150 МГц с GPU Boost
Количество шейдерных процессоров 1536
видеопамять 2 ГБ
Тип видеопамяти GDDR5
Разрядность шины видеопамяти 256 бит
Частота видеопамяти 1753 МГц (7.010 ГГц QDR)
Количество пиксельных конвейеров 128, 32 единицы выборки текстуры
Интерфейс PCI Express 3.0 16x (совместим с PCI Express 2.x/1.x) с возможностью объединения карт по SLI.
Порты DisplayPort, DVI-D, DVI-I, HDMI, переходник D-Sub в комплекте
Охлаждение видеокарты Активное (радиатор + 2 вентилятора Twin Frozr IV на лицевой стороне платы)
Разъем питания 8-контактный+8-контактный
Поддержка API DirectX 11 и OpenGL 4.х
Длина видеокарты (измеряется в NYX) 263 мм
Поддержка вычислений на GPU общего назначения DirectCompute 11, NVIDIA PhysX, CUDA, CUDA C++, OpenCL 1.0
Максимальное энергопотребление FurMark+WinRar 255 Вт
рейтинг производительности 61,5

Неожиданные трудности

Теперь у нас есть все необходимое для обновления нашего компьютера.Мы будем устанавливать новые компоненты в наш существующий корпус.


Запускаем — и не работает. И почему? А потому, что бюджетные блоки питания физически не способны запустить компьютер с любой малости. Дело в том, что в нашем случае для питания требуется два 8-контактных разъема, а блок питания имеет только один 6-контактный разъем питания видеокарты «в базе». Учитывая, что многим нужно еще больше разъемов, чем в нашем случае, становится понятно, что блок питания нужно менять.

Но это еще полбеды. Только подумайте, разъема питания нет! В нашей тестовой лаборатории попадались довольно редкие переходники с 6-pin на 8-pin и с molex на 6-pin. Вот такие:


Стоит отметить, что даже на бюджетных современных блоках питания с каждым новым выпуском разъемов Molex становится все меньше и меньше — так что можно сказать, нам повезло.

На первый взгляд все хорошо, и путем некоторых ухищрений нам удалось проапгрейдить системный блок до «игровой» конфигурации.Теперь давайте смоделируем нагрузку, запустив одновременно тест Furmark и архиватор 7Zip в режиме Xtreme Burning на нашем новом игровом компьютере. Мы смогли запустить компьютер — уже хорошо. Система также выдержала запуск Furmark. Запускаем архиватор — и что это?! Компьютер выключился, предварительно порадовав нас ревом раскрученного на максимум вентилятора. «Быстрые» штатные 400Вт не смогли, как ни старался, прокормить видеокарту и мощный процессор.А из-за посредственной системы охлаждения наш сильно грелся, и даже максимальная скорость вращения вентилятора не позволяла выдать хотя бы заявленные 400Вт.

Выход есть!

Отплыл. Мы купили дорогие комплектующие для сборки игрового компьютера, а на нем, оказывается, играть нельзя. Это позор. Вывод всем ясен: старый не подходит для нашего игрового компьютера, и его нужно срочно заменить на новый. Но какой именно?

Для нашего прокачиваемого компьютера мы выбирали по четырем основным критериям:

Первое это, конечно, мощность. Мы предпочли выбрать с запасом — мы тоже хотим разогнать процессор и набрать баллы в синтетических тестах. Учитывая все, что нам может понадобиться в будущем, мы решили выбрать мощность не менее 800Вт.

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

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

И последнее, но не менее важное: критерий энергоэффективности .Да, мы заботимся как об окружающей среде, так и о счетах за электроэнергию. Поэтому выбранный нами блок питания должен соответствовать как минимум стандарту энергоэффективности 80+ Bronze.

Сравнив и проанализировав все требования, мы выбрали среди немногих претендентов наиболее полно удовлетворивших всем нашим требованиям. Им стала мощность 850Вт. Отметим, что по ряду параметров он даже превосходил наши требования. Посмотрим его спецификацию:

Характеристики блока питания
Тип оборудования Блок питания с активным модулем PFC (коррекция коэффициента мощности).
Свойства Шлейфовая оплетка, японские конденсаторы, Защита от короткого замыкания (SCP), Защита от перенапряжения (OVP), Защита от перегрузки любого из выходов блока в отдельности (OCP)
+3,3В — 24А, +5В — 24А, +12В — 70А, +5VSB — 3,0А, -12В — 0,5А
Съемные силовые кабели Да
эффективность 90%, сертификат 80 PLUS Gold
Мощность блока питания 850 Вт
Разъем питания материнской платы 24+8+8 контактов, 24+8+4 контакта, 24+8 контактов, 24+4 контакта, 20+4 контакта
Разъем питания видеокарты 6x 6/8-контактных разъемов (съемный 8-контактный разъем — 2 контакта съемные)
Средняя наработка на отказ 100 тыс. часов
Охлаждение блока питания 1 вентилятор: 140 x 140 мм (на нижней стенке).Пассивная система охлаждения под нагрузкой до 50%.
Регулятор скорости вентилятора От термостата. Изменение скорости вращения вентилятора в зависимости от температуры внутри блока питания. Ручной выбор режима работы вентилятора. В режиме Normal вентилятор крутится постоянно, а в режиме Silent полностью останавливается при малой нагрузке.


, один из лучших за эти деньги. Установим его в нашем случае:


Здесь произошло нечто, что нас немного смутило.Казалось бы, все собрано правильно, все подключено, все работает — а блок питания молчит! То есть в общем: вентилятор как стоял, так и стоит, а система запустилась и работает исправно. Дело в том, что при нагрузке до 50% блок питания работает в так называемом тихом режиме — без раскручивания вентилятора системы охлаждения. Вентилятор гудит только при большой нагрузке — одновременный запуск архиваторов и Furmark все же заставил кулер раскрутиться.


Блок питания имеет целых шесть 8-контактных 6-контактных разъемов питания видеокарты, каждый из которых является разборным 8-контактным разъемом, из которого при необходимости можно отстегнуть 2 контакта. Таким образом, он способен питать любую видеокарту без лишних хлопот и сложностей. И даже не один.


Модульная система питания позволяет отстегивать лишние и ненужные силовые кабели, что улучшает вентиляцию корпуса, устойчивость системы и, конечно же, эстетически улучшает вид внутреннего пространства, что позволяет легко рекомендовать мододелы и любители корпусов с окнами.
купить надежный и мощный блок питания. В нашем обзоре он стал . — и, как видите, не случайно. Купив такой же у NYX, вы можете быть уверены, что все компоненты вашей высокопроизводительной системы будут обеспечены достаточным и бесперебойным питанием даже при экстремальном разгоне.


Кроме того, блока питания хватит на несколько лет вперед — лучше с запасом, на случай, если в будущем вы собираетесь апгрейдить систему высокоуровневыми компонентами.

[PDF] Стохастическая растеризация с использованием непрерывных во времени треугольников

ПОКАЗЫВАЕТСЯ 1-10 ИЗ 38 ССЫЛОК

СОРТИРОВАТЬ ПОРелевантностьНаиболее влиятельные документыПовторность

Эффективная многоракурсная архитектура растеризации

Новая архитектура растеризации представлено, что позволяет избежать оценок пиксельных шейдеров для значительного количества (до 95%) фрагментов и по-прежнему поддерживает высокое качество изображения.Expand

Генерация размытия движения с аппаратным ускорением

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

Интерактивное размытие движения в реальном времени

Представлен новый алгоритм размытия движения, который работает в трех измерениях для каждого объекта и работает в реальном времени даже для сложных объектов, состоящих из нескольких тысяч полигонов.Expand

Многопроходный конвейерный рендеринг: реализм для динамических сред

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

Параллельный алгоритм растеризации полигонов

Представлен параллельный алгоритм растеризации полигонов, который особенно хорошо подходит для реализации 3D-графики с Z-буферизацией и может быть интерполирован с помощью аппаратного обеспечения, аналогичного аппаратному обеспечению, необходимому для интерполяции значений цвета и Z-пикселя.Expand

Высококачественное удаление скрытых поверхностей с ускорением на графическом процессоре

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

Стохастическая выборка в компьютерной графике

Показано, что артефакты алиасинга не являются неотъемлемой частью точечной выборки, а являются следствием использования регулярно расположенных выборок, а частоты выше предела Найквиста не накладываются, а вместо этого проявляются как шум правильной средняя интенсивность.Expand
  • View 1 отрывок, справочные методы

Потоки задержки для графического оборудования

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

[转]Растеризация на Larrabee — Scan.

Источник: http://software.intel.com/en-us/articles/rasterization-on-larrabee

 


Рис. 6. Растеризация с разверткой.Начиная с верхней вершины, штамп размером 4×4 пикселя сдвигается влево, пока не выйдет за пределы треугольника, затем вправо, пока не выйдет за пределы треугольника, и, наконец, вниз, а затем процесс повторяется, пока весь треугольник не будет растрирован.

Растеризация Sweep лучше векторизуема, чем подход Pixomatic 1, потому что оценка штампа пикселя хорошо подходит для векторизации, но, с другой стороны, требует большого количества плохо предсказанных ветвлений, а также значительного объема работы, чтобы решить, где спуститься.Он также не использует способность ЦП принимать разумные и гибкие решения, что было нашим лучшим выбором для конкуренции с аппаратной растеризацией, поэтому мы решили, что растеризация с разверткой не является правильным ответом.

Общий вид растеризации Larrabee

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

Как я вскоре расскажу, средство визуализации Larrabee использует архитектуру фрагментации. В архитектуре фрагментации наибольшая цель растеризации в любой момент времени — это часть цели рендеринга, называемая тайлом; для этого примера предположим, что плитка имеет размер 64×64 пикселя, как показано на рис. 7.

Рис. 7. Треугольник для растрирования, показанный на фоне пикселей в плитке 64 x 64.

Во-первых, мы проверяем, какие из блоков 16×16 (из них 16 — мы проверяем 16 элементов за раз, когда это возможно, чтобы использовать векторные блоки шириной 16), составляющих плитку, касаются треугольника, как показано на рисунке 8.

Рис. 8. Проверяются 16 блоков 16 x 16, чтобы определить, к каким из них прикасается треугольник.

Мы обнаруживаем, что затронут только один блок 16×16, блок показан желтым, поэтому мы спускаемся в этот блок, чтобы точно определить, чего касается треугольник, подразделяя его на 16 блоков 4×4 (еще раз, мы проверяем 16 вещей за раз чтобы быть векторно-дружественным), и оцените, какие из них касаются треугольника, как показано на рисунке 9.

Рис. 9. Проверяются 16 блоков 4 x 4, чтобы определить, к каким из них прикасается треугольник.

Мы находим, что 5 из 4×4 затронуты, поэтому мы обрабатываем каждый из них отдельно, спускаясь на уровень пикселей, чтобы сгенерировать маски для покрытых пикселей. Растеризация пикселей для первого блока показана на рисунке 10.

Рис. 10. Растеризация пикселей в первом блоке 4 x 4, которого касается треугольник.

На рис. 11 показан окончательный результат.

Рис. 11. Все 5 блоков 4×4, соприкасающихся с треугольником, растеризованы.

Как вы можете видеть, подход Ларраби обрабатывает блоки 4×4, как и подход с разверткой, но, в отличие от подхода с разверткой, ему не нужно принимать много решений, чтобы выяснить, какие блоки касаются треугольника, благодаря единственному 16 — широкий тест, выполняемый перед каждым спуском.Следовательно, этот подход к растеризации обычно выполняет несколько меньше работы, чем метод развертки, чтобы определить, какие блоки 4×4 следует оценивать. Настоящая победа, однако, заключается в том, что он использует преимущества процессора, не выполняя растеризацию, когда это возможно. Мне придется пройтись по подходу растеризации Larrabee, чтобы объяснить, что это значит, но в качестве введения позвольте мне рассказать вам еще одну историю оптимизации.

Много лет назад мне позвонил парень, на которого я когда-то работал. Он хотел, чтобы я поработал консультантом, чтобы ускорить разработку программного обеспечения его новой компании.Я спросил его, что это за программное обеспечение, и он сказал мне, что это программное обеспечение для обработки изображений, и что проблема заключается в сверточном фильтре, работающем на процессоре Sparc. Я сказал ему, что ничего не знаю ни о сверточных фильтрах, ни о Sparcs, поэтому не думал, что смогу чем-то помочь, но он был настойчив, поэтому я наконец согласился попробовать.

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

Я предложил развернуть этот цикл в серию инструкций частичного произведения и прыгнуть в развернутый цикл в нужной точке, чтобы выполнить столько частичных произведений, сколько значащих битов, тем самым исключив все накладные расходы цикла.Однако все еще оставался вопрос о том, делать ли значение пикселя или значение ядра свертки множителем; чем меньше множитель, тем меньше частичных продуктов потребуется, поэтому мы хотели выбрать тот из двух, который в среднем был меньше.

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

Однако в тот день он мне не перезвонил. И он не перезвонил мне на следующий день. Когда он не перезвонил мне на третий день, я подумал, что могу покончить с этим, и позвонил ему. Он ответил на звонок и, когда я представился, сказал: «О, привет. Я просто стою здесь со своими менеджерами и смотрю. Мы все очень счастливы.

Когда я спросил, чем именно он был доволен, он ответил: «Ну, когда я посмотрел на данные, оказалось, что 90% значений в ядре свертки равны нулю, поэтому я просто поставил «если не ноль» вокруг умножить, и теперь вся программа работает в три раза быстрее!»

Как мы вскоре увидим, очень похоже на отсутствие растеризации.

Назначение плитки

Как отмечалось ранее, Larrabee использует фрагментированную (также известную как групповая или мозаичная) визуализацию, при которой цель делится на несколько прямоугольников, называемых плитками.Команды рендеринга сортируются в соответствии с плитками, к которым они прикасаются, и сохраняются в соответствующих ячейках, а затем содержимое каждой ячейки визуализируется отдельно для соответствующей плитки. Это немного сложно, но значительно улучшает когерентность кэша и распараллеливание.

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

На рис. 12 показан пример треугольника, который должен быть нарисован в мозаичном целевом объекте рендеринга. Светло-голубая область представляет собой цель рендеринга 256×256, разделенную на четыре фрагмента 128×128.

Рис. 12. Треугольник, который нужно отрисовать в цели рендеринга 256 x 256, состоящей из четырех плиток 128 x 128.

В архитектуре фрагментации Ларраби первым шагом в растрировании треугольника на рис. 12 является определение плиток, которых касается треугольник, и помещение треугольника в ячейки для этих плиток, плиток 1 и 3.После того, как все треугольники объединены в бины, второй шаг, растеризация внутри тайла, заключается в растеризации треугольника в тайл 1 при рендеринге бина тайла 1 и в растеризации треугольника в тайл 3 при рендеринге бина тайла 3.

Сопоставление треугольников плиткам может быть легко выполнено для относительно небольших треугольников — скажем, размером до плитки, которая покрывает 90% всех треугольников — путем выполнения тестов ограничивающей рамки. Например, с помощью тестов ограничивающей рамки было бы легко выяснить, в каких двух тайлах находится треугольник на рис. 12.В настоящее время плиткам назначаются треугольники большего размера путем простого обхода ограничивающей рамки и проверки каждой плитки на соответствие треугольнику; это звучит не очень эффективно, но время назначения тайлов, как правило, составляет незначительную часть общего времени рендеринга для больших треугольников, поскольку обычно для этих треугольников требуется много работы по затенению и т.п. Однако, если время назначения плитки большого треугольника окажется значительным, мы могли бы использовать метод развертки, как обсуждалось ранее, или разновидность иерархического подхода, используемого для растеризации внутри плитки, о котором я расскажу далее.Это хороший пример того, как ЦП упрощает использование двух совершенно разных подходов, чтобы хорошо обрабатывать случай 90% и адекватно случай 10% (или хорошо, но по-другому), вместо того, чтобы иметь один размер подходит всем.

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

После того, как мы составили уравнение для ребра (путем вычисления B и C, как обсуждалось при рассмотрении рисунка 1), первое, что мы делаем, — это вычисляем его значение в тривиальном отклоненном углу каждой плитки. Тривиальный отклоненный угол — это угол, в котором уравнение ребра является наиболее отрицательным в пределах плитки; как мы вскоре увидим, выбор тривиального отклонения угла для данного ребра основан на его наклоне.Мы настроили все так, что отрицательное означает внутри, чтобы позволить нам генерировать маски непосредственно из бита знака, поэтому вы можете думать о тривиальном отклоняемом углу как о точке плитки, которая больше всего находится внутри края. Если эта точка не находится внутри края, никакая точка плитки не может быть внутри края, и поэтому весь треугольник для этой плитки можно игнорировать.

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

Рис. 13. Тривиальный тест на отклонение плитки.

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

Рис. 14. Какой из углов является тривиальным отклонением, зависит от наклона кромки. Здесь нижний левый угол каждой плитки является тривиальным отклоненным углом.

Если вы понимаете, что мы только что обсудили, вы на девяносто процентов пути к пониманию всего растеризатора Larrabee. Тривиальный тест на отбраковку на самом деле очень прост, как только вы его поймете — это всего лишь вопрос оценки знака простого уравнения в нужной точке — но это может занять некоторое время, так что вы можете счесть полезным пересмотреть его. прочтите предыдущий раздел, если вы совсем не уверены или запутались.

Итак, это тривиальный тест на отбраковку плитки. Другой тест плитки — это тривиальный тест принятия. Для этого мы берем значение в тривиальном отклоняемом углу (угол, который мы только что обсуждали) и добавляем величину, на которую уравнение ребра изменяется за шаг до диагонально противоположного угла тайла, тривиального приемлемого угла тайла. Это точка тайла, где уравнение ребра наиболее положительное; вы можете думать об этом как о точке плитки, которая больше всего находится за краем. Если тривиальный приемлемый угол для ребра отрицательный, вся плитка тривиально принимается для этой грани, и нет необходимости учитывать эту кромку при растеризации внутри плитки.

На рис. 15 показан тривиальный тест принятия в действии. Поскольку тривиальный допустимый угол — это угол, в котором уравнение ребра является наиболее положительным, если эта точка отрицательна — и, следовательно, находится внутри ребра — все точки плитки должны быть внутри ребра. Таким образом, тайлы 0 и 1 не принимаются за черное ребро тривиально, потому что уравнение для черного ребра положительно в их тривиальных допустимых углах, но тайлы 2 и 3 тривиально принимаются, поэтому растеризация этого треугольника в тайлах 2 и 3 может полностью игнорируйте черный край, экономя приличную часть работы.

Рис. 15. Тривиальный тест приема плитки.

Здесь есть важная асимметрия. Когда мы рассмотрели тривиальное отклонение, мы увидели, что оно применяется ко всему треугольнику в отрисовываемой плитке, в том смысле, что тривиальное отклонение плитки по любому краю означает, что треугольник не касается этой плитки, и поэтому треугольник может быть игнорируется в этой плитке. Однако тривиальное принятие применяется только к проверяемому ребру; то есть тривиальное принятие тайла напротив края означает только то, что конкретное ребро не нужно проверять при растрировании треугольника в этот тайл, потому что весь тайл находится внутри этого ребра; это не имеет прямого значения для всего треугольника.Плитка может быть тривиально принята против одного края, но не против других; на самом деле его можно тривиально отклонить от одного или обоих других ребер, и в этом случае треугольник вообще не будет нарисован на тайле. Это показано на рисунке 16, где тайл 3 тривиально принимается по черному краю, так что черный край не нужно учитывать при растеризации треугольника для этого тайла, но тайл 3 тривиально отбрасывается по красному краю, и что означает, что треугольник вообще не нужно растрировать до тайла 3.

Рисунок 16. Плитка 3 тривиально принимается по черному краю, но тривиально отклоняется по красному краю.

Однако на рисунке 17 тайл 3 тривиально принимается всеми тремя ребрами, и здесь мы подходим к ключевому моменту.

Рисунок 17. Плитка 3 тривиально принимается по всем трем краям.

Если все три ребра имеют отрицательные значения в соответствующих тривиальных допустимых углах, то вся плитка находится внутри треугольника, и дальнейшие тесты растеризации не требуются — и это то, что я имел в виду ранее, когда говорил, что растеризатор использует преимущества ЦП, -растрирование, когда это возможно.Код назначения плитки может просто хранить команду рисования всей плитки в корзине, а код рендеринга корзины может просто выполнять эквивалент двух вложенных циклов вокруг шейдеров, что приводит к скорости растеризации полноэкранного треугольника примерно бесконечной. один из моих любимых исполнительских номеров!

Между прочим, весь этот процесс должен быть знаком 3D-программистам, потому что тестирование ограничивающих прямоугольников относительно плоскостей (например, для отбраковки усеченного конуса) обычно выполняется точно таким же образом, хотя и в трех измерениях, а не в двух. с
одинаковым использованием знака для обозначения внутри и снаружи для тривиального принятия и отклонения.Кроме того, такие структуры, как октодеревья, используют трехмерную версию иерархической рекурсии, используемую растеризатором Larrabee.

На этом мы завершаем обзор того, как работает растеризация больших треугольников для назначения тайлов. Как я уже сказал, это делается как скалярная оценка в конвейере Larrabee, поэтому тривиальные проверки принятия и отклонения для каждой плитки выполняются отдельно. Растеризация внутри тайла, к которой мы обратимся далее, почти такая же, но векторизованная, и именно эта векторизация даст нам представление о применении Новых инструкций Ларраби к полупараллельным задачам.

Внутритайловая растеризация: блоки 16×16

Внутритайловая растеризация начинается на уровне всего тайла. Размер плитки варьируется в зависимости от таких факторов, как размер пикселя, но давайте предположим, что мы работаем с плиткой 64×64. Учитывая этот начальный размер, мы вычисляем значения уравнения ребра в 16 углах тривиального отклонения и тривиального принятия углов блоков 16×16, составляющих плитку, точно так же, как мы делали это на уровне плитки, но теперь мы делаем эти вычисления по 16 за раз. Начнем с тривиального теста на отбраковку.

Во-первых, мы вычисляем, какой угол плитки является тривиальным отклоненным углом, вычисляем значение уравнения края в этой точке и настраиваем таблицу, содержащую 16 шагов уравнения края от значения в тривиальном углу отклонения до тривиальные отклонения углов блоков 16×16, составляющих плитку. Знаки полученных 16 значений говорят нам, какие из блоков полностью находятся за пределами края и поэтому могут быть проигнорированы, а какие хотя бы частично приняты и, следовательно, должны быть оценены дополнительно.

На рис. 18, например, мы вычисляем тривиальные значения отклонения для черного края, исходя из значения, которое мы вычислили ранее для тривиального отклонения угла плитки, и удаляем пять блоков 16×16, составляющих плитку. Тривиальный отбракованный угол для плитки показан красным, а 16 тривиальных отбракованных углов для блоков показаны белым. Серые блоки — это те, которые отбрасываются по черному краю; вы можете видеть, что все их тривиальные отклоненные углы имеют положительные значения уравнения края.Остальные 11 блоков имеют отрицательные значения в их тривиальных отклоненных углах, поэтому они, по крайней мере, частично находятся внутри черного края.

Рис. 18. Тривиальные тесты отклонения для 16 блоков 16×16 в плитке.

Чтобы сделать этот процесс более понятным, на рис. 19 стрелки представляют 16 шагов, которые добавляются к тривиальному значению отклонения плитки черного края. Каждый из этих шагов — просто добавление, и мы можем выполнить 16 добавлений с помощью одной векторной инструкции, поэтому требуется только одна векторная инструкция для генерации 16 тривиальных значений отклонения и еще одна векторная инструкция — сравнение — для их проверки.

Рисунок 19. Шаги от тривиального отклонения угла для черного края до тривиального отклонения углов 16 блоков 16 x 16 для черного края.

Все это сводится к установке правильных значений, а затем к выполнению одного векторного сложения и одного векторного сравнения. Помните, что уравнение края имеет форму Bx + Cy; поэтому, чтобы пройти расстояние по плитке, мы просто устанавливаем x и y как горизонтальную и вертикальную составляющие этого расстояния, оцениваем уравнение и добавляем его к начальному значению.Итак, все, что мы делаем на рис. 19, — это добавляем 16 значений, которые шагают в уравнении ребра, к 16 тривиальным отбраковываемым углам. Например, чтобы получить значение уравнения края в тривиальном отбракованном углу левого верхнего блока, мы должны начать со значения в тривиальном отбракованном углу плитки и добавить величину, на которую уравнение края изменяется для шага -48. пикселей по x и -48 пикселей по y, как показано желтой стрелкой на рисунке 20. Чтобы получить значение уравнения края в тривиальном отклоненном углу нижнего левого блока, мы должны вместо этого добавить величину, на которую уравнение края изменяет для шага -48 пикселей только по x, как показано фиолетовой стрелкой.И это действительно все, что есть в растеризаторе Larrabee — это всего лишь вопрос пошагового изменения значений уравнения края вокруг плитки, чтобы определить, какие блоки и пиксели находятся внутри и снаружи краев.

Рисунок 20: Примеры пошагового выполнения уравнения ребра Bx + Cy.

И снова мы проведем тривиальные тесты на прием, а также тривиальные тесты на отклонение. На рис. 21 мы вычислили тривиальные допустимые значения и определили, что 6 из блоков 16×16 тривиально принимаются для черного края, а 10 из них тривиально не принимаются.Мы знаем это, потому что значения уравнения черного края в тривиальных допустимых углах 6 розовых блоков отрицательны, поэтому эти блоки полностью находятся внутри края, а значения в тривиальных допустимых углах других 10 блоков положительны. , поэтому эти блоки не полностью находятся внутри черного края. Тривиальные допустимые значения для блоков могут быть вычислены пошагово любым из нескольких различных способов: из тривиального допустимого угла тайла, из тривиального отклоненного угла тайла или из 16 тривиальных значений отклонения для блоков.Несмотря на это, снова требуется только одна векторная инструкция для шага и одна векторная инструкция для проверки результатов. В сочетании с результатами тривиального теста на отбраковку мы также знаем, что 5 блоков частично приняты.

Рис. 21. Тривиальные тесты приема для 16 блоков 16 x 16 в плитке.

16 тривиальных значений отклонения и тривиального принятия могут быть рассчитаны всего с двумя добавлениями векторов на ребро, используя таблицы, сгенерированные во время установки треугольника, и могут быть проверены с помощью двух сравнений векторов, которые генерируют регистры маски, описывающие, какие блоки тривиально отвергаются и которые тривиально принимаются.Мы делаем это для трех ребер, объединяя результаты по И для создания масок для треугольника, выполняем некоторые битовые манипуляции с масками, чтобы они описывали тривиальное и частичное принятие, и сканируем результаты по битам, чтобы найти тривиальные и частично принятые блоки. Каждое 16×16, которое тривиально принимается для всех трех ребер, становится одной командой bin; опять же, дальнейшая растеризация пикселей в тривиально принятых блоках не требуется.

Это неочевидно, так что давайте на минутку визуализируем процесс.Во-первых, давайте просто посмотрим на одно ребро и тривиально примем.

Для данного ребра, скажем, ребра номер 1, мы берем значение уравнения ребра в тривиальном допустимом углу тайла, транслируем его в вектор, и вектор добавляет его к предварительно рассчитанным значениям 16 шагов к тривиальным допустимым углам тайла. Блоки 16х16. Это дает нам значения ребра 1 в тривиальных допустимых углах 16 блоков, как показано на рисунке 22. (Показанные значения являются иллюстративными и не взяты из реального треугольника.)

Рис. 22. Тривиальные тесты приема ребра 1 для 16 блоков 16×16.

Значения шага, показанные во второй строке на рис. 22, вычисляются при построении треугольника с использованием векторного умножения и векторного умножения-сложения. На верхнем уровне растеризатора — тестировании блоков 16×16, составляющих тайл, как показано на рис. 22 — эти инструкции по настройке просто являются прямыми дополнительными затратами на растеризацию, поскольку верхний уровень выполняется только один раз для каждого треугольника, поэтому Будьте точны, чтобы добавить 6 инструкций к стоимости кода 16×16, который мы вскоре рассмотрим в листингах 1 и 2.Однако по мере нисходящей иерархии таблицы более низких уровней (16×16-to-4×4 и 4×4-to-mask) повторно используются несколько раз. Например, при переходе от блоков 16×16 к блокам 4×4 одна и та же таблица используется для всех неполных блоков 16×16 в тайле. Аналогично, имеется только одна таблица для создания масок для неполных блоков 4×4, поэтому дополнительные затраты на итерацию в листинге 3 из-за настройки таблицы будут равны 2 инструкциям, деленным на количество неполных блоков 4×4 в тайле. Обычно это намного меньше, чем 1 инструкция на блок 4×4 на ребро, хотя чем меньше треугольник, тем больше.

Затем мы сравниваем результаты с 0; как показано на рис. 22, это создает маску, содержащую 1 бит, где тривиальный допустимый угол блока меньше нуля, то есть везде, где тривиальный допустимый угол блока находится внутри края, что означает, что весь блок находится внутри края.

Мы делаем это для каждого из трех ребер, объединяя маски вместе для создания составной маски, как показано на рис. 23. (Объединение И происходит автоматически как часть обновления маски, как мы увидим позже, когда будем смотреть на код.) Эта составная маска имеет 1 бит только в том случае, если блок тривиально принимается по всем трем краям, то есть для блоков, которые полностью тривиально принимаются и не требуют дальнейшей растеризации.

Рис. 23. Создание составной тривиальной маски принятия для трех ребер.

Теперь мы можем выполнить побитовое сканирование составной маски, выбирая тривиально принятые блоки 16×16 и сохраняя команду рисования блока для каждого из них в выходной очереди растеризатора.Первое битовое сканирование обнаружит, что блок 0 тривиально принят, второе битовое сканирование обнаружит, что блок 4 тривиально принято, а третье битовое сканирование обнаружит, что тривиально принятых блоков больше нет, как показано на рисунке 24.

Рис. 24. Сканирование составной тривиальной маски принятия для поиска тривиально принятых блоков 16×16.

Этот тип преобразования из параллельного в последовательный — эффективное определение и обработка релевантных элементов векторного результата — является ключом к получению хорошей производительности полувекторизуемого кода.Именно поэтому инструкция bsfi была добавлена ​​как часть новых инструкций Larrabee. Bsfi основан на существующей инструкции побитового сканирования, но улучшен, чтобы позволить начинать сканирование с любого бита, а не только с бита 0.

Наконец-то мы готовы взглянуть на реальный код. В листинге 1 показан тривиальный код принятия блоков 16×16 в тайле 64×64; этого будет достаточно, чтобы проиллюстрировать то, что мы обсуждали, и что-либо еще только усложнит объяснение. Давайте сопоставим эти инструкции с шагами, которые мы только что описали.

 

; При вводе:
; rsi: базовый указатель на данные потока
; v3: шаги от края 1 плитки тривиально принимают угол к углам блоков 16×16
; v4: шаги от края 2 плитки тривиально принимают угол к углам блоков 16×16
; v5: шаги от края 3 плитки тривиально принимают угол к углам блоков 16×16

; Шаг до краевых значений в 16 16×16 блоков Тривиальные допустимые углы {1to16}

; Проверить, находится ли каждый тривиальный угол приема внутри всех трех ребер
; К1 устанавливается первой инструкцией, затем результат
; вторая инструкция объединяется по И с k1, и аналогично для третьей инструкции
vcmpltpi k1, v0, [rsi+ConstantZero]{1to16}
vcmpltpi k1{k1}, v1, [rsi+ConstantZero]{1to16}
vcmpltpi k1{k1} , v2, [rsi+ConstantZero]{1to16}

; Получите маску; 1-биты тривиально принимают углы, равные
; внутри всех трех ребер
кмов eax, k1

; Цикл по 1-битам, выдача команды рисования 16×16-блоков
; для каждого тривиально принятого блока 16×16
bsf ecx, eax
jnz TrivialAcceptDone

TrivialAcceptLoop:
; <Сохранить команду draw-16x16-block вместе с расположением (x,y)>

bsfi ecx, eax
jnz TrivialAcceptLoop
TrivialAcceptDone:

Листинг 1. Простой код принятия для блоков 16 x 16.

Во-первых, есть три вектора, добавляющих к шагу 3 значения ребер к тривиальным допустимым углам 16x16s; это три инструкции ваддпи.

Во-вторых, есть три сравнения векторов для проверки знаков результатов, чтобы убедиться, что блоки тривиально принимаются по краям; это три инструкции vcmpltpi. Составная маска накапливается в регистре маски k1.

Затем kmov копирует маску тривиально принятых блоков в регистр eax, и, наконец, существует цикл для побитового сканирования eax для выбора тривиально принятых блоков 16×16 один за другим, чтобы их можно было обрабатывать как блоки без дальнейших действий. растеризация.

Требуется всего 6 векторных инструкций, одно перемещение маски и две скалярные инструкции для настройки плюс две скалярные инструкции на каждый тривиально принятый блок, чтобы найти все тривиально допустимые 16×16 в тайле.

И, по правде говоря, для этого требуется не так уж много инструкций. В листинге 1 показана версия тривиального кода принятия, в котором используются обычные векторные инструкции, но на самом деле существует специальная инструкция, специально разработанная для ускорения растеризации — vaddsetspi, — которая одновременно добавляет и устанавливает маску для знака.Я не упомянул об этом, потому что думал, что обсуждение было бы более ясным и более актуальным, если бы я использовал стандартные векторные инструкции, но, как вы можете видеть в листинге 2, если мы используем vaddsetspi, нам нужно всего 3 векторных инструкции, чтобы найти все тривиальные принимаются блоки 16х16.

 

; При вводе:
; rsi: базовый указатель на данные потока
; v3: шаги от края 1 плитки тривиально принимают угол к углам блоков 16×16
; v4: шаги от края 2 плитки тривиально принимают угол к углам блоков 16×16
; v5: шаги от края 3 плитки тривиально принимают угол к углам блоков 16×16

; Шаг к граничным значениям в 16 блоках 16×16 тривиально accept Corners &
; посмотреть, находится ли каждый тривиальный допустимый угол внутри всех трех ребер
kxnor k1, k1 ; установить маску на 0xFFFF
; Результат каждой инструкции объединяется по И с k1
vaddsetspi v0 {k1}, v3, [rsi+Edge1TileTrivialAcceptCornerValue]{1to16}
vaddsetspi v1 {k1}, v4, [rsi+Edge2TileTrivialAcceptCornerValue]{1to16}
vaddsetspi v2 {k1}, v5, [rsi+Edge3TileTrivialAcceptCornerValue]{1to16}

; Получите маску; 1-биты тривиально принимают углы, равные
; внутри всех трех ребер
кмов eax, k1

; Цикл по 1-битам, выдача команды рисования 16×16-блоков
; для каждого тривиально принятого блока 16×16
bsf ecx, eax
jnz TrivialAcceptDone

TrivialAcceptLoop:
; <Сохранить команду draw-16x16-block вместе с расположением (x,y)>

bsfi ecx, eax
jnz TrivialAcceptLoop
TrivialAcceptDone:

Листинг 2. Простой код принятия для блоков 16 x 16 с использованием vaddsetspi.

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

Спуск по иерархии растеризации

Теперь мы закончили растеризацию тривиально принятых блоков 16×16, но нам все еще нужно обрабатывать частично покрытые блоки 16×16, и к этому моменту должно быть очевидно, как это работает; мы спускаемся в каждую часть 16×16, чтобы оценить содержащиеся в ней блоки 4×4, точно так же, как мы спускались в тайл 64×64, чтобы оценить содержащиеся в нем блоки 16×16.Опять же, тривиально принятые полноприводные автомобили мы отправляем прямо в мусорное ведро. Однако частично принятые форматы 4×4 необходимо преобразовать в пиксельные маски. Это делается с помощью векторного добавления предварительно рассчитанной, независимой от позиции таблицы для каждого края, который переходит от тривиального угла отклонения 4×4 к центру самого пикселя; затем знаковые биты могут быть объединены по И вместе, чтобы сформировать пиксельную маску.

На рис. 25 показано вычисление пиксельной маски. Из угла тривиального отклонения 4×4, показанного красным, одно добавление дает значение уравнения для черного края в центрах 16 пикселей.Красные стрелки показывают, как 16 значений в предварительно рассчитанной, независимой от положения таблице шагов для каждого края добавляются к тривиальному отбракованному углу 4×4 для оценки уравнения края в центрах 16 пикселей. Пиксели, показанные синим цветом, имеют отрицательные значения и находятся внутри края. На этом слайде показана фактическая сгенерированная маска с 1 битом для каждого пикселя внутри края и 0 битом для каждого пикселя снаружи.

Рис. 25. Маска пикселя вычисляется в центрах пикселей путем пошагового расчета относительно тривиального отклонения угла для 4×4.

Рисунок 25 — хорошая демонстрация того, как эффективность векторов может упасть при частично векторизуемых задачах, и почему Larrabee использует векторы шириной 16, а не что-то большее. Мы часто проделываем всю работу, необходимую для создания пиксельной маски для 4×4, только для того, чтобы обнаружить, что многие или большинство пикселей не покрыты, так что большая часть работы была потрачена впустую — и чем шире вектор, тем ниже отношение покрытое становится непокрытым в среднем, и тем больше работы тратится впустую.

В листинге 3 показан код для вычисления пиксельных масок для всех частично закрытых блоков 4×4 в частично закрытом блоке 16×16.Обратите внимание, что это единственный случай, когда выполняется попиксельная работа; все случаи сплошного покрытия блоков обрабатываются без создания пиксельной маски.

; При вводе:
; rbx: указатель на выходной буфер
; rsi: базовый указатель на данные потока
; k1: маска частично принятых блоков 4×4 в текущем 16×16
; v0: край 1 тривиально отбрасывает угловые значения для блоков 4×4 в текущем 16×16
; v1: край 2 тривиально отбрасывает угловые значения для блоков 4×4 в текущем 16×16
; v2: край 3 тривиальные значения отклонения углов для блоков 4×4 в текущем 16×16

; Сохраните значения по углам 16 4x4s в 16×16 для индексирования в
vstored [rsi+Edge1TrivialRejectCornerValues4x4], v0
vstored [rsi+Edge2TrivialRejectCornerValues4x4], v1
vstored [rsi+Edge3TrivialRejectCornerValues4x4], v2 900; Загрузить таблицы шагов из углов 4×4 в центры пикселей
vloadd v3, [rsi+Edge1PixelCenterTable]
vloadd v4, [rsi+Edge2PixelCenterTable]
vloadd v5, [rsi+Edge3PixelCenterTable]

; Цикл через 1-бит из тривиального теста отклонения в блоке 16×16 (тривиальные приемы были
; XOR ранее), спускаясь для растеризации каждого частично принятого 4×4
kmov eax, k1
bsf ecx, eax
jnz Partial4x4Done

Partial4x4Loop2: 9008Loop2 ; Посмотрите, находится ли центр каждого из 16 пикселей внутри всех трех краев
; Используйте rcx, индекс из битового сканирования текущего частично принятого 4×4, для индексации в
; тривиальные значения углов отклонения 4×4, сгенерированные на уровне 16×16, и выбор
; тривиальные значения углов отклонения для текущего частично принятого 4×4
; К2 устанавливается первой инструкцией, затем результат
; вторая инструкция объединяется по И с k2, и аналогично для третьей инструкции
vcmpgtpi k2, v3, [rsi+Edge1TrivialRejectCornerValues4x4+rcx*4]{1to16}
vcmpgtpi k2 {k2}, v4, [rsi+Edge2TrivialRejectCornerValues4x4+rcx*4]{ 1to16}
vcmpgtpi k2 {k2}, v5, [rsi+Edge3TrivialRejectCornerValues4x4+rcx*4]{1to16}

; Сохранить маску
kmov edx, k2
mov [rbx], dx

; <Сохранить местоположение (x,y) и перейти к rbx>

bsfi ecx, eax
jnz Partial4x4Loop
Partial4x4Done:

Листинг 3. Код маски пикселя для частично закрытых блоков 4×4.

В листинге 3 сначала хранятся тривиальные значения отклоненных углов для 16 блоков 4×4 для трех краев. Это значения, относительно которых мы будем шагать, чтобы сгенерировать окончательные пиксельные маски для каждого частичного 4×4, и они были сгенерированы ранее кодом 16×16, который выполнялся непосредственно перед этим кодом. Это делается с помощью трех vstored-инструкций.

Затем в таблицы шагов для трех ребер загружаются три инструкции vloadd. (На самом деле, они, вероятно, будут предварительно загружены в регистры при настройке треугольника и останутся там на протяжении всей растеризации треугольника, но загрузка их здесь делает более ясным, что происходит.)

После завершения настройки код сканирует частичную маску принятия, которая также была сгенерирована ранее кодом 16×16. Сначала маска копируется в eax с помощью инструкции kmov, а затем используется bsfi для поиска каждого частично принятого блока 4×4 по очереди.

Для каждого найденного частично покрытого 4×4, код выполняет три векторных сравнения, чтобы оценить три уравнения краев в центрах 16 пикселей. Обратите внимание, что каждый vcmpgtpi использует индекс текущего 4×4 для извлечения тривиального значения отклонения угла для этого 4×4 из вектора, сгенерированного на уровне 16×16.Хотя мы могли бы напрямую добавить, а затем проверить знаки уравнений ребра, как я описал ранее, более эффективно вместо этого изменить порядок вычислений, перевернув знаки таблиц шагов, чтобы тестирование можно было выполнить с одним сравнением для каждого ребра. Другими словами, вместо того, чтобы складывать два значения и смотреть, меньше ли результат нуля:

м + n < 0

эквивалентно и более эффективно сравнивать одно значение непосредственно с отрицанием другого значения:

м < -n.

(Если вам интересно, мы не могли использовать этот трюк на уровнях иерархии 16×16 и 64×64, потому что в этих случаях, помимо получения результата теста, нам также нужно сохранить результат добавления , поэтому мы можем передать его вниз по иерархии как новое значение угла.)

Результатом сравнения является окончательная составная пиксельная маска для этого 4×4, которую можно сохранить в выходной очереди растеризации. И все: как только все настроено, стоимость растеризации каждого частичного 4×4 составляет три векторных инструкции, инструкцию маски и несколько скалярных инструкций.Еще раз, если бы вся плитка была тривиально принята против одного или двух ребер, тогда потребовалось бы пропорционально меньше векторных инструкций.

Одной приятной особенностью подхода к растеризации Ларраби является то, что MSAA (многовыборочное сглаживание) выпадает из-за одного дополнительного сравнения векторов на каждые 16 выборок на ребро, поскольку это просто другой шаг, отличный от тривиального отклонения угла. (Это для частично принятых блоков 4×4; для всех тривиально принятых блоков нет дополнительных затрат на растеризацию MSAA.) На рисунке 26 каждый пиксель разделен на четыре отсчета, и показанный шаг относится к одному из четырех отсчетов, а не к центру каждого пикселя; для этого требуется одно сравнение, поэтому для создания полной выборочной маски MSAA для 16 пикселей потребуется четыре сравнения.

Рис. 26. Переход к одному набору образцов для растеризации 4X MSAA частично покрытого 4×4.

Собираем все вместе

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

На рис. 27 показаны треугольник и тайл 64×64, к которому должен быть отрисован треугольник, с тайлом, разделенным на блоки 16×16; Рисунок 27 повторяет рисунок 8, но на этот раз я добавил штриховые продолжения краев к границе тайла, чтобы мы могли видеть, какие блоки и пиксели находятся по каким сторонам краев.

Рис. 27. Треугольник, который необходимо растрировать, показан на фоне пикселей в плитке размером 64 x 64. Блоки 16×16, которые не были отклонены банально, выделены зеленым и желтым цветом.

Чтобы растрировать треугольник на рис. 27, мы сначала вычисляем значения трех уравнений треугольника для ребер в тривиальном допустимом и тривиальном отклоненном углах плитки и обнаруживаем, что плитка не является ни тривиально отклоненной, ни тривиально принятой ни одним краем. (Опять же, на самом деле это будет сделано только для большого треугольника; мы будем использовать тесты ограничивающей рамки для такого маленького треугольника.) Мы настраиваем различные ступенчатые таблицы, которые мы будем использовать, а затем шагаем уравнения ребер до их соответствующих тривиальных значений. принять и тривиально отклонить углы 16 блоков размером 16×16 каждый, составляющих тайл, и составить маску, содержащую признаки результатов.

Затем мы сканируем получившуюся маску по битам, обнаруживаем, что 12 из 16 блоков тривиально отбрасываются, и спускаемся в каждый из оставшихся 4 блоков по очереди. В трех блоках мы в конечном итоге обнаружим, что рисовать нечего, поэтому в целях данного обсуждения мы проигнорируем их и рассмотрим более интересный случай, когда мы спускаемся в блок, внутри которого находится треугольник. , блок обведен желтым. (Обратите внимание, что если бы треугольник был достаточно большим, чтобы полностью покрыть блок 16×16, этот блок был бы тривиально принят, и дальнейший спуск в этот блок не потребовался бы.)

Прежде чем мы посмотрим, что происходит, когда мы спустимся в блок 16×16, содержащий треугольник, есть еще один момент на рис. 27, на который мы должны обратить внимание. Вы могли заметить, что в более ранней версии этого рисунка, рис. 8, был найден только один желтый блок, а не три зеленых блока. Почему на этот раз битовое сканирование нашло 4 блока, когда треугольник на самом деле целиком содержится в одном блоке? Причина в том, что подход к растеризации Ларраби, обсуждаемый в этой статье, может устранять блоки только путем их тривиального отбрасывания, и если вы внимательно посмотрите, то увидите, что ни один из трех зеленых блоков не отбрасывается тривиально ни одним ребром.Это неэффективность этого метода растеризации, хотя есть методы, выходящие за рамки этой статьи, которые устраняют большую часть неэффективности.

Спускаясь по иерархии растеризации, мы берем блок 16×16, содержащий треугольник, разделяем его на 16 блоков 4×4 и оцениваем, какие из них соприкасаются с треугольником, пошагово оценивая уравнение края в каждом из их тривиальных приемных и тривиальных отклоненных углов для для каждого ребра, как показано на рис. 28. Мы обнаруживаем, что 10 блоков тривиально отвергаются, и что ни один из 6 оставшихся блоков не принимается тривиально по всем трем ребрам.

Рис. 28. Растрирование образца треугольника в содержащем его блоке 16 x 16. Блоки 4×4, которые не были отклонены тривиально, выделены.

Наконец-то мы достигли нижней части иерархии растеризации, поэтому мы можем выполнить побитовое сканирование через маску частичного принятия, сгенерированную для 16×16, чтобы найти частично принятые блоки 4×4 и сгенерировать пиксельную маску 4×4 для каждого из блоков. по очереди, как показано на рисунке 29.

Рис. 29. Растеризация пикселей в неполных блоках 4×4, покрывающих треугольник.

Здесь мы снова видим, что зависимость от тривиального отклонения для устранения блоков привела к ложному срабатыванию блока, который на самом деле не касается треугольника (крайний левый блок). Можно выполнить тесты ограничивающей рамки для устранения таких блоков, но неясно, является ли это более эффективным, чем простое тестирование пустых масок — то есть масок без включенных пикселей — и пропуск этих блоков.

После завершения этого блока 16×16 мы возвращаемся к растрированию других блоков 16×16, которые не были тривиально отклонены (которые в данном случае оказались не содержащими треугольника).

Вот и все!

Примечания по растеризации

Теперь, когда мы поняли базовый алгоритм растеризации, давайте кратко рассмотрим некоторые интересные усовершенствования реализации.

В программном обеспечении у нас нет роскоши пользовательских данных и размеров ALU, но у нас есть роскошь адаптации к входным данным, и эта адаптивная растеризация помогает повысить нашу эффективность. Например, в худшем случае для оценки фронта необходимо использовать 48 бит; для этих случаев, будучи программным обеспечением, мы должны использовать 64 бита, поскольку в Larrabee нет поддержки 48-битных целых чисел.Однако нам не нужно делать это вообще для 90+% всех треугольников, которые помещаются в ограничивающую рамку 128×128, потому что в этих случаях достаточно 32 бит.

Когда нам нужно выполнить оценку 64-битного края, мы должны использовать его только для назначения плитки. Как оказалось, в тайлах размером до 128×128 (а 128×128 — наш самый большой размер тайла) любое ребро, которое не принимается или не отвергается тайлом тривиально, всегда может быть растрировано с использованием 32 бит.

Мы также можем обнаруживать треугольники, которые помещаются в ограничительную рамку 16×16, и обрабатывать их, используя на один уровень спуска меньше, меньше настроек и без тривиальной приемочной проверки (поскольку в таких маленьких треугольниках редко будут тривиально принятые 4×4).Наконец, треугольники, помещающиеся в очень маленькие ограничивающие рамки, могут быть созданы путем прямого вычисления масок для 16 или 32 пикселей, с небольшой настройкой и минимальной обработкой.

На самом деле, для маленьких треугольников мы могли бы даже взять значение z ближайшей вершины и сравнить его с буфером z для ограничивающей рамки треугольника и, возможно, отклонить треугольник по z еще до того, как мы его растрируем!

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

Заключительные мысли

На этом мы завершаем наш краткий обзор подхода Ларраби к растеризации и изучение того, как векторное программирование можно применить к полупараллельной задаче. Как я упоминал ранее, программная растеризация никогда не будет соответствовать пиковой производительности и энергоэффективности выделенного оборудования для данной области кремния, но пока что она доказала свою достаточную эффективность. У него также есть значительное преимущество, заключающееся в том, что, поскольку он использует ядра общего назначения, те же ресурсы, которые используются для растеризации, могут использоваться для других целей в другое время, и наоборот.Как говорит Том Форсайт, поскольку весь чип является программируемым, мы можем эффективно использовать больше квадратных миллиметров для любой конкретной задачи по мере необходимости — вплоть до всего чипа; другими словами, конвейер может динамически перенастраивать свои ресурсы обработки по мере изменения рабочей нагрузки рендеринга. Если мы получаем большую нагрузку по растеризации, мы можем, при необходимости, задействовать все ядра; это не будет самый эффективный растеризатор на квадратный миллиметр, но это будет чертовски много квадратных миллиметров растеризатора, и все они будут делать то, что наиболее важно в данный момент, в отличие от традиционного графического чипа с аппаратным растеризатором, где большая часть схемы простаивала бы при большой нагрузке по растеризации.Чуть позже, когда нагрузка переключится на шейдер, весь чип Larrabee может стать шейдером, если это необходимо. Программное обеспечение просто предлагает совершенно другой набор сильных и слабых сторон.

У Ларраби есть чему поучиться и переосмыслить, и у него большой потенциал. Только время покажет, насколько хорошо все это сработает, а между тем, это, безусловно, интересное время для программиста производительности!

Дополнительную информацию о Larrabee можно найти на www.intel.ком/программное обеспечение/графика.

{Примечание редактора ISN: эта статья изначально была опубликована на портале Dr.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован.