DX10 – новые возможности и вопросы производительности Юрий Уральский, NVIDIA.

Презентация:



Advertisements
Похожие презентации
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
Advertisements

Реализация алгоритма теневых объемов в DX10 Юрий Степаненко.
Программирование графических процессоров Безгодов Алексей Алексеевич НИИ НКТ, СПбГУ ИТМО.
Безгодов Алексей Алексеевич, к.т.н., НИУ ИТМО. Виртуальная реальность Созданный техническими средствами мир, передаваемый человеку через его ощущения:
Безгодов Алексей Алексеевич, к.т.н., НИУ итмо. Системы виртуальной реальности?
Графический 3D-конвейер Определение состояния объектов (Situation modeling) Определение соответствующих текущему состоянию геометрических моделей (Geometry.
Министерство образования и науки Российской Федерации АКАДЕМИЯ МАРКЕТИНГА И СОЦИАЛЬНО-ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Факультет ПО и ВТ Презентация по дисциплине:
6. Средства синхронизации и взаимодействия процессов 6.1. Проблема синхронизации Процессам Процессам часто нужно взаимодействовать друг с другом, например,
Microsoft TechDays Виталий Дильмухаметов Oogway software.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
*Other names and brands may be claimed as the property of others.. Copyright © 2003 Intel Corporation Технология Hyper-Threading в играх на реальных примерах.
Применение конвертируемых режимов адресации для повышения производительности сопроцессоров цифровой обработки сигналов в составе многоядерной СнК Пантелеев.
Графический конвейер Преобразования геометрии Александр Шубин.
Вычисления Общего Назначения на Графическом Ускорителе.
Использование функционального представления (FRep) для компьютерной анимации и интерактивных сред.
Высокоуровневый интерфейс потокового программирования для системы ATI DPVM Адинец А.В., Сахарных Н.А. Научный руководитель Березин С.Б. Лаборатория Microsoft.
Начать тест 11 класс, физико-математический профиль.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Трансляция операций с массивами в код для современных графических процессоров Сахарных Н.А., Адинец А.В. Научный руководитель Березин С.Б. Лаборатория.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Транксрипт:

DX10 – новые возможности и вопросы производительности Юрий Уральский, NVIDIA

Copyright © NVIDIA Corporation 2005 DX10 Много новой функциональности Не только геометрические шейдеры Возможность перестроить ваш графический движок Мотивация к созданию новых эффектов

Copyright © NVIDIA Corporation 2005 Outline D3D10 API Ресурсы и представления Инстансинг Геометрические шейдеры и stream out Массивы текстур и другие возможности

Copyright © NVIDIA Corporation > 9 ! Новый, компактный API Меньше HRESULT, больше void Стейт-объекты Новая модель драйвера Позволяет значительно сократить CPU overhead Виртуализация ресурсов Больше нет lost devices! Новый уровень программируемости Унифицированные шейдеры (SM 4.0)

Copyright © NVIDIA Corporation 2005 D3D9 Вершинный шейдер Видеопамять Текстуры/RT VB/IB Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером кадра

Copyright © NVIDIA Corporation 2005 D3D10 Вершинный шейдер Видеопамять Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером кадра

Copyright © NVIDIA Corporation 2005 D3D10 Вершинный шейдер Видеопамять Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA)

Copyright © NVIDIA Corporation 2005 D3D10 Вершинный шейдер Видеопамять Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA) Геометрический шейдер

Copyright © NVIDIA Corporation 2005 D3D10 Вершинный шейдер Видеопамять Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA) Геометрический шейдер Stream Out

Copyright © NVIDIA Corporation 2005 D3D10 API ID3D10Device::IA… Input Assembler ID3D10Device::VS… Vertex Shader ID3D10Device::GS… Geometry Shader ID3D10Device::SO… Stream Output ID3D10Device::RS… Rasterizer Stage ID3D10Device::PS… Pixel Shader ID3D10Device::OM… Output Merger

Copyright © NVIDIA Corporation 2005 Забудьте про CapsBits! Вся функциональность всегда присутствует Большинство форматов всегда поддерживается есть исключения блендинг RGB32F Поддержка форматов проверяется вызовом ID3D10Device::CheckFormatSupport

Copyright © NVIDIA Corporation 2005 Настройка конвейера D3D10 Настройки конвейера сгруппированы в стейт- объекты Больше нет SetRenderState(…) Драйвер может эффективно кэшировать состояния конвейера 4096 стейт-объектов каждого типа ID3D10Device ID3D10InputLayout ID3D10RasterizerState ID3D10DepthStencilState ID3D10BlendState ID3D10SamplerState

Copyright © NVIDIA Corporation 2005 Ресурсы D3D10 Буферы ~Последовательный доступ Элементы могут быть разного типа/размера Текстуры Произвольный доступ Состоят из суб-ресурсов Тип элементов указывать необязательно Виртуализированы OS ID3D10Buffer ID3D10Texture1D ID3D10Texture2D ID3D10Texture3D ID3D10TextureCube ID3D10Resource

Copyright © NVIDIA Corporation 2005 Типы доступа к ресурсам D3D10_USAGE_DEFAULT Обновляется редко, маппинг невозможен D3D10_USAGE_DYNAMIC Обновляется часто, CPU имеет прямой доступ D3D10_USAGE_IMMUTABLE Никогда не обновляется D3D10_USAGE_STAGING Используется для получения данных из GPU

Copyright © NVIDIA Corporation 2005 Представления (view) Позволяют по-разному интерпретировать данные в ресурсах Рендеринг в VB/IB Рендеринг в константы шейдера Использование stencil-буфера как текстуры Позволяют получить доступ к суб-ресурсам Рендеринг в отдельные mip-уровни ID3D10ShaderResourceView ID3D10RenderTargetView ID3D10DepthStencilView

Copyright © NVIDIA Corporation 2005 Методы Draw() в D3D10 Draw(…) DrawInstanced(…) DrawIndexed(…) DrawIndexedInstanced(…) DrawAuto(…) Используется вместе с StreamOut

Copyright © NVIDIA Corporation 2005 Инстансинг в D3D10 Полноценная поддержка в API Рендеринг без инстансинга – просто частный случай Другие возможности D3D10 делают инстансинг еще более полезным Геометрические шейдеры Массивы текстур Stream Out Instance ID (x 0 y 0 z 0 ) (n x0 n y0 n z0 ) (x 1 y 1 z 1 ) (n x1 n y1 n z1 ) … (x 99 y 99 z 99) (n x99 n y99 n z99 ) 0 1 … Вершины worldMatrix 0 worldMatrix 1 … worldMatrix … Атрибуты объектов

Copyright © NVIDIA Corporation 2005 Геометрический шейдер (GS) Программируемость на этапесборки примитивов Можно создавать новые примитивы! Имеет доступ к соседним примитивам Может использовать семантику SV_PrimitiveID Triangles with adjacency Lines with adjacency

Copyright © NVIDIA Corporation 2005 Геометрический шейдер (GS) [MaxVertexCount(10)] void GS_Simple(lineadj VSOut In[4], inout TriangleStream Stream) { GSOut v; … Stream.Append(v); … Stream.Append(v); … Stream.RestartStrip(); … Stream.Append(v); }

Copyright © NVIDIA Corporation 2005 Примеры использования GS Генерирование shadow volume на лету Определяем ребра силуэта, генерируем грани Motion Blur Считаем локальные скорости, генерируем дополнительную геометрию Изо-поверхности на GPU GDC06, Practical Metaballs and Isosurfaces

Copyright © NVIDIA Corporation 2005 Геометрический шейдер (GS) Количество выходных атрибутов ограничено Максимум скалярных атрибута в D3D10 Не используйте для тесселяции! Старайтесь не использовать большие значения MaxVertexCount

Copyright © NVIDIA Corporation 2005 Stream Out Возможность записи результатов работы GS в вершинный буфер Или VS если GS отсутствует Всегда выводятся списки примитивов Дает возможность повторно использовать результаты работы GS/VS Вершинный шейдер Видеопамять Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA) Геометрический шейдер Stream Out

Copyright © NVIDIA Corporation 2005 Массивы текстур Могут быть динамически индексированы из шейдеров Текстуры для инстанцируемых объектов SV_InstanceID можно использовать в качестве индекса

Copyright © NVIDIA Corporation 2005 Рендеринг в массив текстур Массивы текстур могут использоваться как RT через ID3D10RenderTargetView В GS переменная с семантикой SV_RenderTargetArrayIndex определяет индекс render-текстуры в массиве Можно использовать для рендеринга в cubemap в одном прохоже Не то же самое, что MRT! Каждый примитив из GS проходит растеризацию и PS

Copyright © NVIDIA Corporation 2005 Прощай, Fixed Function! Нет тумана......Эмулируем в VS/PS Нет point-спрайтов......Используйте GS для создания геометрии Нет плоскостей отсечения......Используйте семантику SV_ClipDistance[n] в VS/GS Нет альфа теста!...Используйте инструкцию clip() в пиксельном шейдере См. пример FixedFuncEMU в DX10 SDK

Copyright © NVIDIA Corporation 2005 Предикативный рендеринг Условное выполнение вызовов Draw() Без остановки конвейера... по результату occlusion query Эффективный occlusion culling... при переполнении буфера stream out

Copyright © NVIDIA Corporation 2005 Предикативный рендеринг m_pPredicateQuery->Begin(); //… // Здесь рисуем простую геометрию //… m_pPredicateQuery->End(NULL); pD3D10Device->SetPredication(m_pPredicateQuery, FALSE); //… // Здесь рисуем сложную геометрию //… // отключаем предикативный рендеринг pD3D10Device->SetPredication(NULL, FALSE);

Copyright © NVIDIA Corporation 2005 Заключение DX10 – большой шаг вперед в функциональности и гибкости Начинайте изучать DX10 уже сегодня! Документация/примеры в февральском DX9 SDK

Copyright © NVIDIA Corporation 2005 Наши следующие лекции 16:00 – 16:50Инструменты для разработчиков от NVIDIA Raul Aguaviva/Филипп Герасимов 17:00 – 18:00Расчет физики на GPU Simon Green

Copyright © NVIDIA Corporation 2005 Есть идеи? Пишите -