Для чего нужен директ
Как работает Яндекс.Директ: просто о сложном
Начнем с того, что сам по себе Яндекс.Директ это сервис, через который настраивается контекстная реклама в Яндексе и на сайтах партнеров.
По этому для начала давайте разберемся что из себя представляет контекстная реклама сама по себе.
Изначально контекст работал именно таким образом, но вместе с прогрессом изменились и алгоритмы рекламных сервисов. Сейчас это гораздо более сложная машина, которая оптимизирует рекламу по множеству факторов. Но ключевой смысл остался тот же самый.
Сейчас контекстную рекламу, условно, можно поделить на два больших направления:
Наиболее понятный новичку тип, при котором реклама показывается на введенный пользователем запрос в поисковую строку.
Обратите внимание, что всегда подобные объявления помечены небольшой плашкой «реклама», все что находится ниже уже органическая выдача или SEO-выдача.
В этом случае за каждый клик по рекламному объявлению рекламодатель будет платить рекламной площадке (в случае на примере Яндексу) определенную сумму. Стоимость клика рассчитывается заново при каждом новом запросе исходя из аукциона, но об этом мы поговорим чуть ниже.
Это как раз баннера, которые мы все с вами видим на огромном количестве сайтов. Только не путайте с рекламой казино и зеленым кофе на пиратских сайтах, это касается адекватной «белой» рекламы.
Модель оплаты за клики называется CPC (Cost Per Click)
Я не буду подробно сегодня останавливаться на контекстно-медийной рекламе т.к. сначала лучше разобрать логику поисковой, она проще для восприятия. Но надо понимать, что в Яндексе это РСЯ (Рекламная Сеть Яндекса) и в Google КМС (Контекстно-медийная Сеть). Это и есть те самый сайты-партнеры, о которых речь шла в начале статьи.
Вебмастер размещает на свой сайт рекламные блоки, а сервис контекстной рекламы уже сам показывает нужному пользователю нужное объявление. Исходя из его поведения, контента страницы и прошлых поисковых запросов.
Наверное, это одно из самых популярных направлений в платном трафике. Особенно Яндекс.Директ, если говорить про Россию.
Я объясню в чем ключевое отличие от других видов рекламы. Если брать таргетированную рекламу в соцсетях, то вы идете от категории интересов аккаунта.
Например: мужчины 25-45 лет, из Москвы, интересуются авто и ремонтом.
Скажите, если мы запустим рекламу на них, сколько из этих людей купит у нас зимнюю резину? Да хрен его знает!
Слишком много «но»: у него есть машина или он только интересуется? Будет ли он менять резину? Есть у него деньги? и.т.д,
А теперь вопрос, сколько из мужчин (пусть даже они не входят в эту группу интересов) набравших в Яндексе запрос «купить зимнюю резину в Москве недорого» хотят купить зимнюю резину?
Важно понять, что я ни в коем случае не говорю что таргет плохо, а контекст хорошо. Есть огромное количество ниш, где таргет будет работать в тысячу раз лучше, например большинство из бьюти-сферы (ногти, стрижки, ресницы, брови, эпиляция и.т.д). Такие вещи женщины не ищут, они их рекомендуют и очень редко сами ручками в поиске будут вводить.
Итого: лиды есть, но их будет мало и они будут дороже таргетированной рекламы.
Получается, что вся суть контекста сводится к паре вещей:
Что такое Яндекс.Директ и зачем он нужен?
Яндекс.Директ — это сервис, предназначенный для продвижения продукции или услуг в поисковой системе Яндекс и в его партнерской сети сайтов. Реклама демонстрируется в виде коротких текстовых объявлений, которые называются контекстными: пользователь видит рекламу, когда ищет товары, услуги в поисковых системах или на других сайтах.
Немного статистики
Яндекс.Директ принято считать лидером рынка контекстной рекламы в России. Доля поисковой системы в России, по данным LiveInternet, на конец сентября 2015 года составляла 57,1%.
Количество рекламодателей достигло 354 тысяч, а оборот от контекста приносит Яндексу 92% выручки.
По оценке самого Яндекса, в середине 2015 года аудитория его поисковика составляла24 млн. пользователей, партнерских сайтов — около 60 млн. человек.
Рекламу в Директе можно разделить на три вида:
Давайте разберем каждый из них.
Реклама в поисковой выдаче Яндекса
Контекстные объявления в Поиске могут быть расположены в одном из трех блоков:
Внешние контекстные объявления напоминают обычные результаты поиска, но желтый значок «Реклама» свидетельствует о том, что их показ происходит по договоренности рекламодателя и Яндекса.
Чтобы запустить кампанию, нужно отобрать ключевые слова — запросы, которые потенциальные клиенты вводят в поиске Яндекса, когда ищут рекламируемый продукт.
Сбору подходящих «ключей» — семантическому ядру — необходимо уделить время и внимание. Это важно, чтобы объявления не показывались по нецелевым запросам. Также необходимо проработать и добавить минус-слова — слова, которые отсекают ненужные рекламодателю запросы.
Для лучшей работы кампании важно использовать с ключевыми словами операторы соответствия — специальные символы, которые конкретизируют пользовательский запрос.
Например, если ключевую фразу деревянные кухни оформить с операторами«деревянная кухня«, то объявление покажется по запросу деревянная кухня, но не по запросу деревянные кухни в спб. Подробнее о типах и операторах соответствия читайте здесь.
Затем рекламодатель создает объявления. Они состоят из обязательных элементов (заголовок, текст, ссылка на сайт) и дополнительных (фавикон, быстрые ссылки, график работы, контактная информация: телефон, адрес и пр.).
Одновременно в Поиске показывается только одно объявление от одного рекламодателя.
Самым эффективным местом для рекламы в Поиске является блок спецразмещения: благодаря местоположению он приносит рекламодателям больше переходов. По-разному происходит и распределение количества кликов внутри блоков. По данным Яндекса, максимальное количество трафика (100%) приносит первая позиция, а вторая и третья позиция спецразмещения получают 85 и 75% переходов, соответственно. Для гарантии следует такое соотношение: 100%-75%-65%-60%.
Как определяется цена за клик в Поиске?
Рекламодатель оплачивает не показы объявлений, а только клики по ним. Показ рекламы происходит по принципу аукциона: рекламодатель устанавливает ставку, которую он готов платить за переход по определенному запросу, и указывает желаемую позицию для размещения. Если кроме него на ту же позицию и по тому же запросу будут претендовать и другие рекламодатели, Яндекс покажет объявление, которое принесет ему больше дохода.
И поскольку Яндекс заинтересован показывать наиболее привлекательную для пользователей рекламу, в Директе работает ранжирование объявлений. Система оценивает, насколько реклама отвечает запросу пользователя и удовлетворяет его интерес, и прогнозирует вероятность клика по нему. Чем выше прогноз, тем больше вероятность, что объявление попадет на привлекательное место.
Когда Директ оценивает привлекательность (кликабельность) объявления, он принимает во внимание так называемый коэффициент качества, формулу которого Яндекс не раскрывает. Достоверно известно, что оценивается релевантность объявления и сайта пользовательскому запросу, «рекламная» история домена.
С сентября 2015 года для поисковой рекламы в Директе работают новые правила ценообразования. Рекламодатель, назначающий более высокую ставку и попадающий на высокие позиции, платит большую цену не за весь трафик, а только за дополнительные переходы. Основываясь на пропорции распределения трафика, Яндекс рассчитывает цену клика для каждой позиции отдельно. Подробнее можно прочитать здесь.
Реклама в партнерской сети
РСЯ объединяет тысячи сайтов. Чтобы отобрать подходящие по тематике площадки для показа объявлений, рекламодателю необходимо назначить ключевые слова. Яндекс найдет в сети страницы и сайты, содержащие эти фразы, и начнет показывать на них объявления. Подбирать «ключи» для РСЯ нужно несколько иначе, чем для кампаний в Поиске: их не следует максимально конкретизировать, потому что в таком случае Директу будет сложно подобрать площадки. Минус-слова используются, чтобы избежать совсем нецелевых показов (для многих кампаний будет полезно добавить в «минус» слова «курсовая», «фото»).
Другой подход и к составлению объявлений для РСЯ: здесь они не столько должны быть информативными и отвечать на запрос пользователя, сколько быть цепляющими. Когда потенциальный клиент будет читать на сайте или форуме статью и захватит взглядом объявление, реклама должна вызвать у него интерес. Отличие объявлений в РСЯ от поисковых — они могут содержать изображения.
У рекламодателя есть возможность отключить показ рекламы на определенных сайтах.
Как и при запуске кампании в Поиске, рекламодателю нужно указать, сколько он готов платить за один переход на сайт. Яндекс оценит качество подходящих площадок и в зависимости от конкурентной ситуации в тематике рекламодателя отберет те, на которых сможет показывать его объявления.
В поисковиках люди проводят гораздо меньше времени, чем на контентных сайтах. Поэтому не стоит пренебрегать рекламой в РСЯ. Она работает при продвижении товаров или услуг, спрос на которые еще не сформировался или если потенциальные клиенты не ищут товар, потому что они не знают о нем или знают, но не нуждаются в нем прямо сейчас. В таких случаях реклама познакомит с предложением или подтолкнет к покупке.
Ретаргетинг
Основная задача ретаргетинга — повторно привлечь пользователей, которые уже посещали сайт.
Существуют разные факторы, по которым люди на каком-то этапе бросают сайт и не доводят целевое действие до конца (не завершают оформление заказа, не подтверждают регистрацию, закрывают страницу и т.п.). Даже в супермаркетах покупатель может бросить тележку с покупками в проходе и отправиться в другой магазин. В интернете от прощания с сайтом пользователя отделяет всего один клик. По данным портала Business Insider, в 2015 году более 2/3 потенциальных покупателей оставили свои корзины на этапе оформления заказа. Однако в отличие от традиционного магазина, где покупателя никто не станет возвращать, в интернете его внимание можно привлечь с помощью ретаргетинга.
Реклама отображается на сайтах РСЯ. Для запуска ретаргетинга можно создавать отдельную кампанию или настроить уже в работающей. Рекламодатель задает условия ретаргетинга, определяя, каким посетителям сайта он хотел бы повторно показать рекламу: например, всем, кто провел на сайте более 15 или 30 секунд, посетил страницу определенного товара, но не заказал его, положил товар в корзину, но не оплатил его и т.д. Согласно исследованиям Яндекса, около 35% привлеченных на сайт с помощью ретаргетинга пользователей совершают целевое действие.
Ретаргетинг по сути является «добивающим» инструментом, который ловит пользователей, по каким-то причинам ускользнувших из сетей рекламных кампаний первого и второго типа.
Зачем использовать Директ?
Во-первых, контекстная реклама в Яндекс.Директе благодаря работе только по определенным ключевым фразам позволяет сосредоточится именно на целевой аудитории продукта. Она работает прицельно, в отличие от обычной рекламы, транслируемой всем подряд. При тонкой настройке число случайных, нецелевых посетителей можно снизить до минимума. При этом сама контекстная реклама ненавязчивая и не вызывает раздражения у пользователей, поскольку подается в нужное время и в нужном месте.
Во-вторых, контекст в Директе может стать хорошим решением для нового сайта. Рекламодателю не нужно ждать, пока сайт его молодого бизнеса завоюет хорошие позиции в поисковой выдаче.
В-третьих, грамотно настроенная контекстная реклама в Директе обеспечивает ощутимый и измеримый возврат инвестиций. Дорогая традиционная реклама (наружная, на ТВ и радио) далеко не всегда гарантирует доходность. Контекст требует гораздо меньших затрат, при этом уровень окупаемости легко и быстро оценивается, что позволяет оперативно реагировать на неэффективную работу кампаний.
В-четвертых, благодаря нескольким видам рекламы Директ работает как на привлечение трафика, так и на возврат клиентов.
И, наконец, интерфейс Яндекс.Директа простой и интуитивно понятный даже для новичка. Контекстные объявления можно оперативно и массово изменять: редактировать тексты, изображения, ссылки. Пользуясь инструментами Яндекса и сверяясь со статистикой, рекламодатель при относительно невысоких затратах может протестировать различные варианты объявлений, выбрать лучшие и отсеять те, что не работают.
Что такое Яндекс.Директ и зачем он нужен
Яндекс.Директ — это сервис, предназначенный для продвижения продукции или услуг в поисковой системе Яндекс и в его партнерской сети сайтов. Реклама демонстрируется в виде коротких текстовых объявлений, которые называются контекстными: пользователь видит рекламу, когда ищет товары, услуги в поисковых системах или на других сайтах.
Немного статистики
Яндекс.Директ принято считать лидером рынка контекстной рекламы в России. Доля поисковой системы в России, по данным LiveInternet, на конец сентября 2015 года составляла 57,1%.
Количество рекламодателей достигло 354 тысяч, а оборот от контекста приносит Яндексу 92% выручки.
По оценке самого Яндекса, в середине 2015 года аудитория его поисковика составляла 24 млн. пользователей, партнерских сайтов — около 60 млн. человек.
Рекламу в Директе можно разделить на три вида:
Давайте разберем каждый из них.
Реклама в поисковой выдаче Яндекса
Контекстные объявления в Поиске могут быть расположены в одном из трех блоков:
Внешние контекстные объявления напоминают обычные результаты поиска, но желтый значок «Реклама» свидетельствует о том, что их показ происходит по договоренности рекламодателя и Яндекса.
Чтобы запустить кампанию, нужно отобрать ключевые слова — запросы, которые потенциальные клиенты вводят в поиске Яндекса, когда ищут рекламируемый продукт.
Сбору подходящих «ключей» — семантическому ядру — необходимо уделить время и внимание. Это важно, чтобы объявления не показывались по нецелевым запросам. Также необходимо проработать и добавить минус-слова — слова, которые отсекают ненужные рекламодателю запросы.
Для лучшей работы кампании важно использовать с ключевыми словами операторы соответствия — специальные символы, которые конкретизируют пользовательский запрос.
Например, если ключевую фразу деревянные кухни оформить с операторами «деревянная кухня«, то объявление покажется по запросу деревянная кухня, но не по запросу деревянные кухни в спб. Подробнее о типах и операторах соответствия читайте здесь.
Затем рекламодатель создает объявления. Они состоят из обязательных элементов ( заголовок, текст, ссылка на сайт) и дополнительных ( фавикон, быстрые ссылки, график работы, контактная информация: телефон, адрес и пр.).
Одновременно в Поиске показывается только одно объявление от одного рекламодателя.
Самым эффективным местом для рекламы в Поиске является блок спецразмещения: благодаря местоположению он приносит рекламодателям больше переходов. По-разному происходит и распределение количества кликов внутри блоков. По данным Яндекса, максимальное количество трафика ( 100%) приносит первая позиция, а вторая и третья позиция спецразмещения получают 85 и 75% переходов, соответственно. Для гарантии следует такое соотношение: 100%-75%-65%-60%.
Как определяется цена за клик в Поиске?
Рекламодатель оплачивает не показы объявлений, а только клики по ним. Показ рекламы происходит по принципу аукциона: рекламодатель устанавливает ставку, которую он готов платить за переход по определенному запросу, и указывает желаемую позицию для размещения. Если кроме него на ту же позицию и по тому же запросу будут претендовать и другие рекламодатели, Яндекс покажет объявление, которое принесет ему больше дохода.
И поскольку Яндекс заинтересован показывать наиболее привлекательную для пользователей рекламу, в Директе работает ранжирование объявлений. Система оценивает, насколько реклама отвечает запросу пользователя и удовлетворяет его интерес, и прогнозирует вероятность клика по нему. Чем выше прогноз, тем больше вероятность, что объявление попадет на привлекательное место.
Когда Директ оценивает привлекательность ( кликабельность) объявления, он принимает во внимание так называемый коэффициент качества, формулу которого Яндекс не раскрывает. Достоверно известно, что оценивается релевантность объявления и сайта пользовательскому запросу, «рекламная» история домена.
С сентября 2015 года для поисковой рекламы в Директе работают новые правила ценообразования. Рекламодатель, назначающий более высокую ставку и попадающий на высокие позиции, платит большую цену не за весь трафик, а только за дополнительные переходы. Основываясь на пропорции распределения трафика, Яндекс рассчитывает цену клика для каждой позиции отдельно. Подробнее можно прочитать здесь.
Реклама в партнерской сети
РСЯ объединяет тысячи сайтов. Чтобы отобрать подходящие по тематике площадки для показа объявлений, рекламодателю необходимо назначить ключевые слова. Яндекс найдет в сети страницы и сайты, содержащие эти фразы, и начнет показывать на них объявления. Подбирать «ключи» для РСЯ нужно несколько иначе, чем для кампаний в Поиске: их не следует максимально конкретизировать, потому что в таком случае Директу будет сложно подобрать площадки. Минус-слова используются, чтобы избежать совсем нецелевых показов ( для многих кампаний будет полезно добавить в «минус» слова «курсовая», «фото»).
Другой подход и к составлению объявлений для РСЯ: здесь они не столько должны быть информативными и отвечать на запрос пользователя, сколько быть цепляющими. Когда потенциальный клиент будет читать на сайте или форуме статью и захватит взглядом объявление, реклама должна вызвать у него интерес. Отличие объявлений в РСЯ от поисковых — они могут содержать изображения.
У рекламодателя есть возможность отключить показ рекламы на определенных сайтах.
Как и при запуске кампании в Поиске, рекламодателю нужно указать, сколько он готов платить за один переход на сайт. Яндекс оценит качество подходящих площадок и в зависимости от конкурентной ситуации в тематике рекламодателя отберет те, на которых сможет показывать его объявления.
В поисковиках люди проводят гораздо меньше времени, чем на контентных сайтах. Поэтому не стоит пренебрегать рекламой в РСЯ. Она работает при продвижении товаров или услуг, спрос на которые еще не сформировался или если потенциальные клиенты не ищут товар, потому что они не знают о нем или знают, но не нуждаются в нем прямо сейчас. В таких случаях реклама познакомит с предложением или подтолкнет к покупке.
Ретаргетинг
Основная задача ретаргетинга — повторно привлечь пользователей, которые уже посещали сайт.
Существуют разные факторы, по которым люди на каком-то этапе бросают сайт и не доводят целевое действие до конца ( не завершают оформление заказа, не подтверждают регистрацию, закрывают страницу и т. п. ). Даже в супермаркетах покупатель может бросить тележку с покупками в проходе и отправиться в другой магазин. В интернете от прощания с сайтом пользователя отделяет всего один клик. По данным портала Business Insider, в 2015 году более 2/3 потенциальных покупателей оставили свои корзины на этапе оформления заказа. Однако в отличие от традиционного магазина, где покупателя никто не станет возвращать, в интернете его внимание можно привлечь с помощью ретаргетинга.
Реклама отображается на сайтах РСЯ. Для запуска ретаргетинга можно создавать отдельную кампанию или настроить уже в работающей. Рекламодатель задает условия ретаргетинга, определяя, каким посетителям сайта он хотел бы повторно показать рекламу: например, всем, кто провел на сайте более 15 или 30 секунд, посетил страницу определенного товара, но не заказал его, положил товар в корзину, но не оплатил его и т. д. Согласно исследованиям Яндекса, около 35% привлеченных на сайт с помощью ретаргетинга пользователей совершают целевое действие.
Ретаргетинг по сути является «добивающим» инструментом, который ловит пользователей, по каким-то причинам ускользнувших из сетей рекламных кампаний первого и второго типа.
Зачем использовать Директ?
И, наконец, интерфейс Яндекс.Директа простой и интуитивно понятный даже для новичка. Контекстные объявления можно оперативно и массово изменять: редактировать тексты, изображения, ссылки. Пользуясь инструментами Яндекса и сверяясь со статистикой, рекламодатель при относительно невысоких затратах может протестировать различные варианты объявлений, выбрать лучшие и отсеять те, что не работают.
Microsoft DirectX – это очень просто!
Microsoft DirectX – это очень просто!
О чем пойдет речь в статье:
Что такое DirectX?
Для чего нужен DirectX?
Что входит в DirectX?
Что такое шейдер?
Зачем нужны шейдеры? Конвейер и шейдерная модель
Что дает пользователю компьютера очередная версия DirectX?
DirectX 10. Эволюционное обобщение пройденного
DirectX 10.1 Как же теперь жить? И пара слов об OGL
Когда говорят о “Microsoft DirectX”, то разные категории людей могут вкладывать в это различные понятия. Давайте разберемся, что может иметься в виду и что это такое на самом деле, для чего он нужен и чем же отличаются последние версии DirectX друг от друга.
Microsoft DirectX – это очень просто!
О чем пойдет речь в статье:
- Что такое DirectX?
Для чего нужен DirectX?
Что входит в DirectX?
Что такое шейдер?
Зачем нужны шейдеры? Конвейер и шейдерная модель
Что дает пользователю компьютера очередная версия DirectX?
DirectX 10. Эволюционное обобщение пройденного
DirectX 10.1 Как же теперь жить? И пара слов об OGL
Когда говорят о “Microsoft DirectX”, то разные категории людей могут вкладывать в это различные понятия. Давайте разберемся, что может иметься в виду и что это такое на самом деле, для чего он нужен и чем же отличаются последние версии DirectX друг от друга.
Обратимся к первоисточнику – самой Microsoft:
http://msdn2.microsoft.com/en-us/library/bb219737.aspx
“DirectX is a set of low-level APIs for creating games and other high-performance multimedia applications. It includes support for high-performance 2D and 3D graphics, sound, and input”.
Учитывая, что API (Application Programming Interface) – это интерфейс разработки программ, буквальный перевод звучит так: “DirectX – это набор низкоуровневых программных интерфейсов для создания игр и других высокопроизводительных приложений. Он включает в себя поддержку высокопроизводительной 2D и 3D графики, звука и устройств ввода”.
В действительности, Microsoft предоставляет это определение для разработчиков программного обеспечения, следовательно, само собой под DirectX подразумевается APIs DirectX. А с точки зрения пользователя все выглядит несколько иначе. Поэтому дадим более общее определение, хотя оно при этом будет подлиннее.
DirectX – это технология Microsoft для операционных систем семейства Windows, предоставляющая разработчику программного обеспечения интерфейсы (то есть, комфортную среду интерактивного взаимодействия) для создания программ, эффективно использующих графические, мультимедийные устройства и устройства ввода, и обеспечивающая низкоуровневые утилиты (то есть эффективные высокооптимизированные программы) для взаимодействия этих устройств с прикладной программой и операционной системой через соответствующие драйверы.
Другими словами, вполне логично различать понятия DirectX как технологии в целом, как наборов программных интерфейсов при создании программного обеспечения и как программной составляющей операционной системы, отвечающей за поддержку мультимедийных и графических устройств, а также устройств ввода.
Для поддержки разработчиков программного обеспечения Microsoft предоставляет DirectX SDK (Software Developing Kit) – набор программ и утилит разработчика программного обеспечения под технологию DirectX, а для системных программистов и разработчиков компьютерного оборудования есть WDK (Windows Driver Kit )– набор программ и утилит для разработки драйверов. Оба этих программных продукта распространяются свободно и доступны для скачивания с сайта Microsoft. К слову сказать, по прилагаемой к DirectX SDK лицензии, все графические и мультимедийные файлы и компьютерные модели разрешается использовать в своих программах для демонстрационных некоммерческих целей.
Теперь можно смело утверждать, что если моя видеокарта поддерживает DirectX, то это означает, что она способна выполнять программы, созданные с использованием API DirectX, при условии наличия соответствующего драйвера и поддержки со сороны операционной системы.
Сегодня уже трудно найти видеоадаптер, не поддерживающий хотя бы DirectX 7, поэтому для нормальной работы приложения, разработанного в соответствии с конкретной спецификацией DirectX, нужно, во-первых, чтобы операционная система поддерживала эту версию (плюс к тому были установлены соответствующие или более новые библиотеки DirectX в виде dll – файлов, которые обычно автоматически устанавливаются при инсталляции программы, если на компьютере установлены более старые версии библиотек), во-вторых, чтобы видеокарта была с поддержкой соответствующего DirectX и, в третьих, чтобы был установлен подходящий драйвер видеокарты. Несоблюдение первых двух условий не позволит приложению запуститься, а в случае с драйвером может оказаться так, что самый последний доступный драйвер не является лучшим для конкретного приложения (вплоть до полной неработоспособности программы), хотя, в целом, действует правило, что лучше использовать самые свежие версии драйверов и рекомендуется этого правила придерживаться.
Несколько слов о том, что явилось катализатором появления DirectX. Безусловно, в первую очередь, это компьютерные игры. Персональные компьютеры и сейчас далеки от вычислительной мощности, позволяющей кинематографически реалистично воспроизводить на экране монитора с высоким разрешением полноценное интерактивное 3D действие в реальном режиме времени, тем более это им было не под силу двадцать лет назад. Поэтому программисты всегда боролись за каждый байт и мегагерц компьютерных ресурсов (а основные ресурсы – это процессорное время и оперативная память), выжимая все из топовых аппаратных решений, доступных на рынке. И в эпоху, когда основной ОС домашних компьютеров была DOS, очень много игр писалось на языке Ассемблер, что было достаточно трудоемко, но в умелых руках позволяло использовать 100% возможностей техники, так как позволяло напрямую программирвать видеокарту, модель распределения памяти и управлять системными ресурсами. Для тех, кто не застал это время, поясню, что, в отличие от Windows, MS-DOS (наиболее распространенная ОС того времени) – это однозадачная ОС, то есть запускаемая программа забирала все компьютерные ресурсы себе. Чтобы запустить другую программу, первую нужно было обязательно завершить, что часто делалось простой перезагрузкой компьютера.
Производители видеокарт тоже включились в эту гонку, выпуская новые и новые видеокарты, которые частенько и опережали свое время, и оказывались впоследствии тупиковым направлением развития. Но это уже совсем другая история.
Появление новой ОС – Windows 3.х привело к противоречию между конкретной программой, требующей в свое распоряжение максимальное количество ресурсов, и многозадачной ОС, делящей эти ресурсы по “справедливости” между приложениями. Кроме того, драйверы устройств перестали быть доступны программе напрямую – появилась прослойка в виде виртуальных драйверов. Несмотря на имеющуюся иерархию приоритетов у выполняемых в ОС программ, в первых версиях Windows быстродействие игр оказывалось неудовлетворительным. Поэтому долгое время DOS, которой разработчики игр отдавали предпочтение, сосуществовала параллельно с Windows. Но такое положение вещей не вписывалось в стратегию развития Microsoft и привело к интенсификации усилий по решению имеющихся проблем с быстродействием. Так появилcя Game SDK, впоследствии сменивший название на DirectX, призванный сделать программную прослойку от выполняемой программы до мультимедийного и графического оборудования универсальной, не требующей детального знания оборудования (это – дело производителя, задача которого – написать функциональный драйвер), легко создаваемой и сопровождаемой, минимальной по длине и максимальной по быстродействию.
Мы выяснили, что означает, фраза “моя карта поддерживает DirectX”. Впрочем, тут есть один нюанс. DirectX – это собирательное понятие набора программных компонент, и, хоть графическая часть и есть его наиболее существенная, сложная и объемная составляющая, там присутствует и поддержка оборудования, отличного от видеокарт. К примеру, видеокарта вряд ли поддерживает DirectInput (хотя технически ничто не мешает, например, установить на ней пару USB-разъемов для подключения джойстика или геймпада). Поэтому, правильно говорить о поддержке видеокартой компоненты DirectGraphics (которая, на самом деле, только “прикрывает” настоящие компоненты – Direct3D и Direct3DХ), составной части DirectX, но маркетинг – он и в Африке маркетинг – поэтому не только короче, но и гораздо солиднее звучит именно вариант поддержки DirectX целиком! И никаких гвоздей! Поэтому от этого стереотипа уже практически не избавиться. Мы ведь живем, по большей части, в демократических государствах, и, раз большинство считает, что поддерживает, то несколько голосов за правду утонут в общем хоре негодования. Чтобы не прослыть белой вороной, заявляем – наши видеокарты поддерживают DirectX! Однозначно и в полном объеме!
То, что в этом случае видеокарты также должны поддерживать DirectInput, призванный обеспечить работу устройств ввода, таких как клавиатура, мышь, джойстики и другие манипуляторы, уже упомянуто. Все же, для полноты картины, перечислим все компоненты, которые входят в современную версию DirectX:
- DirectGraphics
DirectSound
DirectInput
Коротко, логично и понятно. В свое время в разные версии DirectX в разное время включались, убирались и восстанавливались вновь и другие компоненты – DirectDraw, DirectMusic, DirectPlay, DirectShow и еще несколько, но они или уже существуют только для обратной совместимости либо перенесены в другие SDK, и их использование не рекомендуется либо уже попросту невозможно.
Главная цель создания DXGI – управление низкоуровневыми задачами, которые не требуют включения в библиотеку исполнения DirectX – речь идет о более рациональном разделении установочных и исполняемых процедур.
Последняя версия DirectX SDK на момент написания статьи (Август 2007) добавляет еще одну компоненту,
The Windows Vista Game Explorer,
Слово «шейдер» очень часто употребляют неправильно, не понимая что это такое и отождествляя его с частью компьютерного оборудования. Но это понятие не относится к категории «hardware».
Что же такое “шейдер”? Это слово пришло в мир бытовых компьютеров из кинематографии, где так именовались специальные программы (“shaders”), участвующие в рендеринге (формировании) итогового изображения на экран (или в память). Поэтому шейдеры – это относительно небольшие программы, написанные на специализированных языках, которые выполняются графическим процессором. Для чего служат эти программы и почему заранее известно, что они небольшие? Современные ГПУ обрабатывают потоковую информацию – большие массивы однородных данных простых типов, которые надо обработать по короткому алгоритму и быстро передать дальше, чем меньше программа – тем быстрее обработка, хотя тенденция к усложнению явно прослеживается. Впрочем, большими эти программы (по крайней мере по отдельности) еще долго нельзя будет называть, а размер первых шейдеров вообще очень сильно ограничивался возможностями видеокарт (это определялось наличием в ГПУ регистров для хранения обрабатываемых данных и установленным ограничением на число выполняемых инструкций).
А зачем им нужен специализированный язык? ГПУ имеет многочисленные внутренние специализированные потоковые процессоры с ограниченной функциональностью и упрощенной системой команд. Для потоковой обработки этого вполне достаточно. Это – компромисс между функциональностью, стоимостью и быстродействием, оптимальный на сегодня.
Но даже для небольшой игры может потребоваться написание большого числа шейдеров. Шейдеры группируются в логически связанные блоки, именуемые эффектами (“effects”). Дополнительную информацию по этому вопросу можно получить из документации к DirectX SDK.
Зачем нужны шейдеры? Конвейер и шейдерная модель
Было время, когда о шейдерах никто и не думал. Хорошее было время! Откуда же они свалились на нашу голову? Для того, чтобы понять это, надо знать, как работает современная видеокарта и графический процессор и как это было в то далекое время, когда дети, увидев морскую волну, не кричали радостно “Шейдеры! Шейдеры!”. Поэтому будет уместно сделать маленькое лирическое отступление от непосредственной темы DirectX и разобраться в этом. Я постарался максимально упростить технические детали, насколько это мне удалось – судить вам.
Попробуем упрощенно описать, как функционирует видеокарта. Тут удобно применить технологию “черного ящика”, широко используемую в автоматике. У ящика есть вход и выход, внутренняя функциональность нас интересует весьма приблизительно, причем не интересует, как это происходит на самом деле, а важно лишь то, как это видится снаружи “черного ящика”. Этим черным ящиком и будет выступать видеокарта. Мы должны узнать, что подается на вход, что является выходом и в общих чертах понять, что происходит внутри этого “черного ящика”.
Что является выходом, большинству сразу понятно – к видеокарте подключается монитор и то, что мы на нем видим, и есть выход. Пока будем считать, что так оно и есть, хотя это является истиной далеко не всегда – карта может работать ведомой в SLI или CF без монитора, видеокарта может производить неграфические вычисления и также не подключаться к монитору, выполняя полезную работу как сопроцессор к ЦПУ, либо часть процессорного времени ГПУ может отдаваться задачам, не связанным непосредственно с графикой.
Таким образом, данные о вершинах хранятся в памяти, в буфере вершин, и периодически поступают на обработку в видеокарту. Что происходит с ними дальше – зависит от того, какую версию DirectX поддерживает видеокарта и какую версию DirectX поддерживает программа. Грамотное DirectX приложение при старте проверяет, удовлетворяют ли возможности видеокарты требованиям программы, и только при положительном ответе (после опроса системных данных) разрешает работу.
Итак, пока мы определились, что в видеокарту постоянно будет поступать информация из буфера вершин.
Теперь самое время обсудить, что такое “графический конвейер”. Тут – почти полная аналогия с заводским конвейером. От входа до выхода бежит лента транспортера, на которую поступают входные детали. И пока они на этой ленте направляются к концу конвейера, все, кто работает за конвейером, в соответствии с порученными технологическими операциями, производят соответствующие манипуляции, кто-то что-то привинчивает, или наоборот, отвинчивает, и в итоге начальную деталь вообще не узнать, ибо, как принято говорить, с конвейера уже сходит готовый продукт.
Представьте, что конвейер стал автоматизированным. Все операции выполняются роботами – станками и манипуляторами. Роботы запрограммированы раз и навсегда на выполнение конкретной операции в технологической цепочке. Если на транспортер конвейера ставили более мощный двигатель или рядом ставили еще один конвейер, оказывалось, что старые роботы уже сдерживают увеличение пропускной способности конвейера, независимо от числа линий. Поэтому в таких случаях каждый раз приходится менять роботов на более современных. Опять же, замена требовалась, если хотя бы чуть-чуть менялась технология обработки деталей.
Со временем инженеры так доработали роботов, что теперь стало возможно автоматически, во время работы, оперативно изменять их программу, в зависимости от того, какие детали находятся на конвейере и какие операции требуется выполнять. Кроме того, за процессом работы линий конвейеров стал наблюдать диспетчер, который следит за тем, правильно ли распределена загрузка входными деталями в соответствии с текущей производительностью роботов. Диспетчер сразу исправляет ситуацию так, чтобы не было ни простоев, ни завалов. Поэтому производительность труда на современных конвейерах многократно выросла.
Новая эпоха шейдерного графического программирования принесла не только улучшение качества графики, но и головную боль программистам и покупателям видеокарт.
Мало того, что программист должен был учитывать множество спецификаций, он должен был еще программировать физический опрос возможностей карты (так называемых capable bits) независимо от заявленной поддержки производителем карты на красочной суперобложке, чтобы убедиться, какую же программу подсунуть именно этой карте.
На этом месте статьи я остановился, никак не получалось решить – стоит ли описывать текстурирование, что повлечет необходимость более детального описания пиксельного шейдера, блендинга и фильтраций. Честно говоря, статья и так отняла много времени, поэтому после некоторых колебаний, я решил пропустить эти моменты, так как изначально все-таки стояла цель вводного ознакомления с DirectX, написанного простым языком. И, к тому же, есть масса доступных источников в интернете. Но, если появятся вопросы, – я постараюсь на них ответить.
Может возникнуть вопрос, если на видеокарте, поддерживающей DirectX 9, запускается старая программа, написанная без шейдеров и требующая наличия блока “T&L”, как она выполняется, ведь современные карты уже не содержат аппаратного “T&L”? Очень просто. Драйвер видеокарты различает такую ситуацию и имеет для этих целей простейшие шейдеры с обработкой в стиле а-ля “T&L”, что обеспечивает полную совместимость со старыми приложениями.
Что дает пользователю компьютера очередная версия DirectX?
Теперь, когда мы знаем, что такое DirectX, попробуем разобраться, с точки зрения пользователя-непрограммиста, а что нам дает каждая новая версия DirectX?
Ответ однозначен – НИЧЕГО! DirectX – это одновременно и инструмент и потенциал, который надо раскрыть. Это должны сделать и разработчики программы (программисты, администраторы, художники, музыканты, дизайнеры) и программисты – драйверописатели.
Чтобы раскрыть такой потенциал, нужно немало усилий по изучению нового API и возможностей видеокарт, написанию и отладке кода и его оптимизации, постоянное отслеживание производительности десятков типов видеокарт под последними драйверами, часто вносящими хаос в уже отлаженный под предыдущий драйвер код, нужно умение и способность выкроить чуть – чуть ресурсов для создания нового эффекта, под который их нехватило в предыдущей версии движка под предыдущую версию API. иначе зачем новый API, если все-будет выглядеть по старому? И стоит только выкроить полмиллисекунды на кадр, ее тут же забирают под дополнительные полигоны в сцене, и начинается все сначала. Проходит время. Уже анонсирована следующая версия DirectX.
Это была история о программистах из деревни Виллабаджо.
А в это время в деревне Виллариба программисты под OpenGL радуются и веселятся – смена поколения видеокарт не принесла им никах проблем со сменой API, только лишь возросло быстродействие! И они только что сделали классную новую игру! И не хуже последней игры, выпущенной в деревне Виллабаджо под DirectX!
Конечно, два предыдущих абзаца – шутка. Но в ней очень много правды.
Отметим, что арт-команда готова полностью загрузить следующие несколько поколений видеокарт уже сегодня. Но сегодняшные топовые карты это не осилят.
Можно поставить вопрос и по-другому, а чего не хватало программистам или в целом команде разработчиков в предыдущих версиях DirectX? Что же такого особенного дают новые версии, кроме беспокойства владельцу недавно купленной видеокарты?
Попробуем выяснить и это.
DirectX 10. Эволюционное обобщение пройденного
Здесь уже не обойтись без упоминания некоторых технических деталей, и я коротко перечислю существенные моменты, понимание которых не требует знания DirectX.
Внедрена новая модель драйвера Windows Vista Display Driver Model (WDDM). Чем стала плоха старая модель WDM, использовавшаяся в прежних версиях Windows, можно узнать по ссылке:
http://www.microsoft.com/whdc/driver/wdf/wdf-intro.mspx
а вот все о новой модели WDDM:
http://msdn2.microsoft.com/en-us/library/ms797619.aspx
Краткий комментарий.
Произошла полная виртуализация графической памяти. Набирающая силу тенденция виртуализации всего и вся наконец-то добралась и до видеоподсистемы компьютера в полную силу. Чем же она так хороша? Да многим, и с точки зрения безопасности, и с точки зрения размера адресного пространства. Теперь каждому окну приложения выделяется собственная виртуальная память в размере полного экрана, собственный рендеринг (впрочем, WDM – Windows Display Manager трогать не будем). Разрешение экрана 1280х1024 потребует более 5Мб видеопамяти. 10 открытых приложений займет под 60 Мб. Без виртуализации, особенно на карте со 128Мб это называется приехали. Так что очень полезная штука.
Появилась возможность переключения задач на ГПУ. Теперь есть возможность прервать выполнение основной графической задачи и быстро выполнить в фоне, к примеру, расчет какого-нибудь физического взаимодействия объектов. Причем предоставляется возможность и прерывания выполнения работы над примитивом или посреди выполнения шейдера, если это поддерживается видеокартой (так как это не является требованием DirectX 10).
WDDM разрешает совместное использование поверхностей DirectX между процессами, тоже очень неплохо, что появилась официальная поддержка.
По модели драйвера вроде все, что относится к драйверописателям, не трогаем.
Теперь вернемся к DirectX 10. Начнем с того, что у всех на слуху.
Введена унифицированная шейдерная архитектура. Все шейдерные блоки теперь равнозначны и они выполняют задачи в соответствии с текущей стадией конвейера. В видеокартах предыдущего поколения это тоже было ограничено возможно, но приходилось сильно извращаться.
Если теперь производитель карты заверяет, что его видеокарта поддерживает DirectX 10, то этому уже, наверное, можно поверить. По новой спецификации, такая поддержка означает полное соответсвие API – все, что запрограммировано правильно, должно выполняться на любом DirectX 10 железе. Другое дело, что карты все равно разные и обеспечивают разные возможности. К примеру, Радеоны включили аппаратную тесселяцию, что скоро станет требованием DirectX, а видеокарты Nvidia 86хх имеют несколько аппаратных отличий, выгодно отличающих их (конечно, временно, до выхода нового поколения карт) от топовых решений 88хх (к примеру, это позволяет им обращаться к атомам в технологии CUDA, чего лишены их более старшие собратья, есть и другие преимущества. Впрочем, это вряд ли компенсирует владельцам этих карт банальный разрыв в быстродействии).
Появилась новая стадия в конвейере – стадия исполнения геометрического шейдера. Что можно интересного запрограммировать в коде геометрического шейдера? Как и вершинный шейдер, он на входе получает вершины и вершины же выдает на выход, но появляются существенные отличия. Входными данными уже являются не обезличенные вершины в потоке, а вершины примитивов, то есть вершины треугольника, линии или точки, а также соответствующие примыкающие вершины (три на треугольник и две на линию). В выходном потоке стадия геометрического шейдера может генерировать дополнительные вершины, образующие коллекцию вершин (point list), ломаную линию (line strip), либо группу связанных треугольников (tristrip).
Выходной поток вершин стадии геометрического шейдера может быть направлен, как входной поток, на стадию растеризации, либо в буфер памяти, и тогда он снова может являться входным источником вершин для стадии исполнения вершинного шейдера.
Безусловно, операция крайне процессороемкая (имея в виду ГПУ) в плане создания на лету высокополигональной геометрии (особенно, если делать ее за один присест).
Примеры работы геометрического шейдера владельцы видеокарт последних серий могут посмотреть, скачав свежие SDK на сайтах производителей своих видеокарт.
Шейдерная модель получила номер 4.0.
Программный язык написания шейдеров – только НLSL (хотя по-прежнему можно подключать внешний байт-код).
Произошла унификация подхода к используемым ресурсам – все ресурсы могут быть деривативами только от текстуры или буфера памяти.
Соответствуют ли изменения от DirectX 9 к DirectX 10 революционному обновлению? Мое скромное мнение – нет, это большой шаг вперед, но по значимости он не дотягивает до действительно революционного скачка от DirectX 7 к DirectX 8. Тем более очень интересная особенность – динамическая смена задач на ГПУ – не относится к DirectX.
Что мы, как обычные пользователи, вправе ожидать от технологии DirectX, присутствующей на рынке 8 месяцев плюс год открытого предварительного тестирования?
Увы. Мое мнение такое. Самые новые игры под DirectX 9 напрягали соответствующие топовые видеокарты под завязку. Новые возможности API, теоретически давая очень интересный инструмент в руки разработчика, не позволят реализовать его полный потенциал на существующих топовых DirectX видеокартах (имеется в виду Nvidia 8800 и AMD 2900) так, чтобы это было играбельно.
То, что анонсируемые на этот год премьеры будут ориентированы на эти топы, понятно, но уровеь всеобщего ожидания и интерес к этим играм такой, что плохо быть сделанными они не имеют права. Значит, их будут делать хорошо, чтобы разница в передаче игровой атмосферы под DirectX 10 была бы заметна. При этом, чтобы обеспечить приемлимый фпс, наверняка частью красот придется пожертвовать. Миддл сектор в лице 8600 и 2600 отдыхает.
Но есть и хорошие моменты.
Во-первых, это только мое личное мнение, и я очень хочу, чтобы оно оказалось ошибочным (у меня самого пара 8600GT).
Во-вторых, наверняка будет много игр, не выжимающих все из железа, но реализующих какие-нибудь интересные возможности DirectX 10.
В третьих, скоро подоспеет новый топ от Nvidia. Но я не говорил, что это хорошая новость для всех.
Кстати, еще пара слов о конкурирующем стандарте графического API – OpenGL. Его глобальное обновление, с точки зрения временных рамок, вторично по отношению к DirectX, так как он уже ориентируется на те аппаратные изменения, которые производители делают для соответствия спецификации DirectX. Поскольку аппаратное обеспечение и при OpenGL и DirectX одинаково, принципиально эти технологии примерно равноценны, если говорить о потенциальном качестве картинки, а различия проявляются на уровне самого API, открытости кода, мультиплатформенности, способе принятия расширений стандарта и еще нескольких менее важных для конечного пользователя моментов.
Но вернемся к DirectX 10.1. Абсолютно ничего страшного не произошло, всего лишь мелкое эволюционное изменение, вполне соответствующее тем временным рамкам, которые были приняты между предыдущими обновлениями версий DirectX. Поскольку изменений не так много, я решил привести их все (хоть это и сугубо технические моменты), чтобы вы также смогли оценить размеры “катастрофы”.
Перевожу с английского, документация DirectX SDK за август 2007 года:
Direct3D 10.1 добавляет 3 новых API интерфейса. Они добавлены в Direct3D.1 DLL (D3D10_1.DLL и D3D10Core.dll), и будут доступны в Windows Vista Service Pack 1, а именно:
две новые функции D3D10CreateDevice1 и D3D10CreateDeviceAndSwapChain1 для создания интерфейса ID3D10Device1, который получил новые методы для создания интерфейса блендинга ID3D10BlendState1, поддерживающего независимые моды блендинга для каждой поверхности рендеринга и для создания интерфейса ID3D10ShaderResourceView1 c подержкой новых массивов кубических текстур (см. D3D10_TEXCUBE_ARRAY_SRV1).
Соответственно, появляется SM 4.1 для поддержки дополнительного метода работы с субресурсами и массивами кубических текстур.
Правда, к выходу Windows Vista Service Pack 1 список изменений может быть дополнен. Думается, что если бы Microsoft знала, какую волну подымет анонс и какой это найдет резонанс в среде технических дилетантов, она бы анонсировала его только вместе с выходом Windows Vista Service Pack 1, тем более, что всем кто следит за DirectX, о выходе версии DirectX 10.1 было известно давным-давно. Ни один разработчик не будет поддерживать DirectX 10.1 эксклюзивно, и если хочется поддерживать оба варианта, то никаких усилий для этого прикладывать не надо.
При написании статьи ни один сайт или любой другой информационный ресурс не пострадал от копипэйста или плагиата, за исключением нескольких строк, любезно предоставленных для цитирования компанией Microsoft.
Все написанное автором выражает только его личную точку зрения, которая может не соотвествовать объективной реальности. Свою точку зрения (по любому вопросу) автор с радостью и благодарностью изменит, если найдет ваши аргументы убедительными. Эти аргументы, критику, предложения и любые мысли вслух, имеющие какое-нибудь отношение к рассматриваемым вопросам, можно изложить здесь