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

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



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

Разработка языка сценариев для систем виртуальной реальности А.А. Безгодов А.Ю. Тропченко.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Представление чисел в памяти компьютера. Язык машинных команд.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Проблемы обеспечения безопасности приложений Тема 20.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Подбор материала и презентация: Сазонов Д.О. Кафедра ПМиЭММ ВГТА Динамические объекты, ссылки.
Тестирование функциональности, не зависящей от истории взаимодействия системы с окружением Занятие 3.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 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! = ! = ! =

8 Типы данных 20 байт 4 байта16 байт NULL INTint DOUBLEdouble VECTORfloat Float STRINGindex FUNCTIONindex REFERENCEindex

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

10 Система команд Стек и памятьДанныеПоток выполнения LOAD, address LDAD, address STORE CONST, operand STKRES, n REM ADDSUBMUL DIVMODNEG BIN_AND BIN_OR BIN_XOR BIN_NOT LOG_AND LOG_OR LOG_NOT IS_EQ IS_UNEQ IS_GRTR IS_LESS IS_GEQ IS_LEQ CALL, n RETURN JMP, addr JMPC, addr JMPNC, addr

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

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

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

14 Встраивание в host-приложение Interface IScriptInterface IVar voidCompileFile(char *name) voidCompileString(char *str) voidRunProgram() IVar*CallFunction(IVar *f) IVar*GetVar(char *name) voidRegisterFunc(func_t *f) void*Self() Int Argc() IVar*Argv() IVar*Return() Проверка типов: IsNull, IsInt, IsFloat, … Установка значений: SetNull, SetInt, SetFloat, SetString… Взятие значения: ToString, ToFloat, ToInt…

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

16 Вопросы?