Содержание
- 2. DX10 Много новой функциональности Не только геометрические шейдеры Возможность перестроить ваш графический движок Мотивация к созданию
- 3. Outline D3D10 API Ресурсы и представления Инстансинг Геометрические шейдеры и stream out Массивы текстур и другие
- 4. 10 > 9 ! Новый, компактный API Меньше HRESULT, больше void Стейт-объекты Новая модель драйвера Позволяет
- 5. D3D9 Вершинный шейдер Видеопамять Текстуры/RT Текстуры/RT VB/IB VB/IB Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером
- 6. D3D10 Вершинный шейдер Видеопамять Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером кадра
- 7. D3D10 Вершинный шейдер Видеопамять Сборка примитивов Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA)
- 8. D3D10 Вершинный шейдер Видеопамять Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA) Геометрический шейдер
- 9. D3D10 Вершинный шейдер Видеопамять Растеризация Пиксельный шейдер Операции с буфером кадра Input Assembler (IA) Геометрический шейдер
- 10. D3D10 API ID3D10Device::IA… ? Input Assembler ID3D10Device::VS… ? Vertex Shader ID3D10Device::GS… ? Geometry Shader ID3D10Device::SO… ?
- 11. Забудьте про CapsBits! Вся функциональность всегда присутствует Большинство форматов всегда поддерживается есть исключения ? блендинг RGB32F
- 12. Настройка конвейера D3D10 Настройки конвейера сгруппированы в стейт-объекты Больше нет SetRenderState(…) Драйвер может эффективно кэшировать состояния
- 13. Ресурсы D3D10 Буферы ~Последовательный доступ Элементы могут быть разного типа/размера Текстуры Произвольный доступ Состоят из суб-ресурсов
- 14. Типы доступа к ресурсам D3D10_USAGE_DEFAULT Обновляется редко, маппинг невозможен D3D10_USAGE_DYNAMIC Обновляется часто, CPU имеет прямой доступ
- 15. Представления (view) Позволяют по-разному интерпретировать данные в ресурсах Рендеринг в VB/IB Рендеринг в константы шейдера Использование
- 16. Методы Draw() в D3D10 Draw(…) DrawInstanced(…) DrawIndexed(…) DrawIndexedInstanced(…) DrawAuto(…) Используется вместе с StreamOut
- 17. Инстансинг в D3D10 Полноценная поддержка в API Рендеринг без инстансинга – просто частный случай Другие возможности
- 18. Геометрический шейдер (GS) Программируемость на этапе “сборки примитивов” Можно создавать новые примитивы! Имеет доступ к соседним
- 19. Геометрический шейдер (GS) [MaxVertexCount(10)] void GS_Simple(lineadj VSOut In[4], inout TriangleStream Stream) { GSOut v; … Stream.Append(v);
- 20. Примеры использования GS Генерирование shadow volume “на лету” Определяем ребра силуэта, генерируем грани Motion Blur Считаем
- 21. Геометрический шейдер (GS) Количество выходных атрибутов ограничено Максимум - 1024 скалярных атрибута в D3D10 Не используйте
- 22. Stream Out Возможность записи результатов работы GS в вершинный буфер Или VS если GS отсутствует Всегда
- 23. Массивы текстур Могут быть динамически индексированы из шейдеров Текстуры для инстанцируемых объектов SV_InstanceID можно использовать в
- 24. Рендеринг в массив текстур Массивы текстур могут использоваться как RT через ID3D10RenderTargetView В GS переменная с
- 25. Прощай, Fixed Function! Нет тумана... ...Эмулируем в VS/PS Нет point-спрайтов... ...Используйте GS для создания геометрии Нет
- 26. Предикативный рендеринг Условное выполнение вызовов Draw() Без остановки конвейера ... по результату occlusion query Эффективный occlusion
- 27. Предикативный рендеринг m_pPredicateQuery->Begin(); //… // Здесь рисуем простую геометрию //… m_pPredicateQuery->End(NULL); pD3D10Device->SetPredication(m_pPredicateQuery, FALSE); //… // Здесь
- 28. Заключение DX10 – большой шаг вперед в функциональности и гибкости Начинайте изучать DX10 уже сегодня! Документация/примеры
- 29. Наши следующие лекции
- 31. Скачать презентацию