1 / 16

Разработка языка сценариев для систем виртуальной реальности

Разработка языка сценариев для систем виртуальной реальности. А.А. Безгодов А.Ю. Тропченко. Проблема. Рост сложности приложений Рост времени компиляции ( > 30 мин ) Рост сложности и времени разработки Рост стоимости Необходимость расширения функциональности приложения после выпуска.

aloha
Download Presentation

Разработка языка сценариев для систем виртуальной реальности

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Разработка языка сценариев для систем виртуальной реальности А.А. Безгодов А.Ю. Тропченко

  2. Проблема • Рост сложности приложений • Рост времени компиляции (>30 мин) • Рост сложности и времени разработки • Рост стоимости • Необходимость расширения функциональности приложения после выпуска

  3. Решения • Распределенная сборка проектов • У конечных пользователей нет исходных текстов • Сложность разработки • Программные модули (plug-ins) • Сложность разработки модулей • Языки сценариев • Низкая производительность • Совместное использование всех 3-х подходов

  4. Языки сценариев • Lua • MEL (Maya embedded language) • Unreal Script • Angel Script • Quake C • Python • и др.

  5. Применение в системах виртуальной реальности • Сценарии • Поведения объектов • Системы частиц • Материалы • Структурные описание данных

  6. Цели и требования • Синтаксис С • Динамическая типизация • Типы данных: • Null • Float, Integer • Vector • String • Поддержка типов данных на уровне VM • Легкость встраивания в главное приложение

  7. Пример кода 0! = 0 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = 5040 8! = 40320 9! = 362880

  8. Типы данных

  9. Память и адресация • Основная память • Стек • Общее адресное пространство: • [ 0 | address ] – основная память • [ 1 | offset ] - стек

  10. Система команд

  11. Выполнение выражения: c=a+2*b IP 0001: a = 4 LDAD, c 0002: b = 3 LOAD, a 0003: c = null 0003: c = 10 LOAD, b 0004: … CONST, 2 2 MUL 3 6 ADD 10 4 STORE TOP 0003 BASE

  12. Local 3 Local 2 Local 1 Arg 1 Arg 2 Arg 3 FN Ptr Вызов функций LOAD FN Ptr LOAD arg3 LOAD arg2 LOAD arg1 LOAD FN Ptr LOAD arg3 LOAD arg2 LOAD arg1 Result CALL 3 CALL 3 STKRES 3 STKRES 3 … … LOAD Result LOAD Result TOP RETURN RETURN BASE …

  13. Векторные операции • Поддержка на уровне команд VM: • ADD • SUB • MUL • Библиотеки функций: • vector(x, y, z, w) • dot(v1, v2) • cross(v1, v2)

  14. Встраивание в host-приложение

  15. Дальнейшее развитие • Массивы, списки, деревья и другие контейнеры • Структуры данных • Формат данных для векторов и матриц • Параллельное выполнение • Инструменты: • Отладчики • Профайлеры

  16. Вопросы?

More Related