Новые возможности DirectX 11: вычислительный шейдер

Автор: Topol Суббота, Апрель 21st, 2012 Нет комментариев

Рубрика: Операционные системы

интервью немецкому сетевому изданию PCGamesHardware Бен Базарик (Ben Basaric), продукт-менеджер Windows, сообщил, что вряд ли в состав финальной версии Windows 7 войдет DirectX 11, хотя на текущий момент, по его же словам, это стоит расценивать лишь в качестве слухов. Однако, эти слухи не помешают нам продолжить рассказ о том, что сулит DirectX 11 для игроков и обычных компьютерных пользователей.

В сегодняшней статье речь пойдет о так называемом вычислительном шейдере (с англ. compute shader). По своей сути, компьютерный шейдер не является чем-то кардинально новым — это просто формализация тех идей, о которых AMD и Nvidia говорят на протяжении последних нескольких лет. В частности, Nvidia усердно пытается ввести в использование платформу CUDA, начиная с выпуска GeForce 8800 GTX в ноябре 2006 года — эта платформа наиболее близка к тому, что мы сегодня понимаем под массивными параллельными вычислениями. Здесь стоит сказать о скудности сегоднящней кросс-платформенной совместимости, которая может помешать CUDA получить более широкое распространение на рынке. Таким образом, пока что подобные технологии не развиваются в нужном направлении.

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

AMD занимается тем же самым со своей разработкой Stream Computing и скоро на рынке должны появится пользовательские приложения, которые будут ускоряться графикой ATI Radeon. Интересно, что причины, по которым Microsoft включает вычислительный шейдер в DirectX 11, больше ориентированы на игровую сторону вопроса, нежели выполнение общих задач средствами GPU. Однако, согласно информации, полученной из разговоров с некоторыми значимыми для индустрии людьми, новый шейдер, скорее всего, будет использоваться для более широкого круга задач, нежели просто для решения некоторых проблем отдельных игровых разработчиков.

Многое из того, о чем Гии рассказывал во время его презентации на Nvision, было для меня не ново, однако это было новым для DirectX. Такие вещи, как возможность создания кода для общих задач без использования треугольников, распределение данных между потоками и обработка произвольных операций записи возможны и в Stream от AMD, и в компиляторе CUDA от Nvidia, но ни у одной из этих технологий на данный момент нет широкой аппаратной совместимости. Microsoft собирается предоставить эти новые расширения процесса кодирования и средства синтаксиса в обновленной версии HLSL (High Level Shading Language).

Благодаря этому графический конвейер сможет генерировать структуры данных, традиционно ассоциируемые с общими вычислительными задачами, обрабатываемыми на CPU. Используя вычислительный шейдер, эти задачи смогут масштабировать под n ядер, количество которых может увеличиваться до тех пор, пока приложение сможет обеспечивать параллельное выполнение потоков. Согласно Microsoft, основные целевые приложения для вычислительного шейдера включают в себя пост-процессовую обработку, физику, AI и некоторые другие. К числу этих других задач Гии отнес и трассировку лучей.

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

PhysX ускоряется только на GPU, поддерживающих Nvidia CUDA, но выполняется на CPU, тогда как Havok в скором времени сможет ускоряться на GPU от AMD и снизить свою производительность на CPU. Наконец, написание своего собственного физического движка требует больших усилий, и если вы — разработчик, то скорее всего выберете для этих целей центральный процессор, потому что каждая система, на которой будет работать ваша игра, будет иметь сходный набор функций. Сегодня это не совсем просто, как в случае с GPU, поскольку это сходство ограничивается совместимостью API. Благодаря вычислительному шейдеру (или OpenCL) — у разработчиков перестанет болеть по этому поводу голова и они смогут сосредоточиться на том, как реализовать игровую физику.

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

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты