SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Ферапонтов Олег Владимирович
Возраст: 27 лет.
Место жительства: Россия, г. Брянск.
Электронная почта: oleg.osiris.ferapontov@gmail.com
Образование: Неполное высшее
2006 – 2008 гг. - Брянский Государственный Технический Университет. Факультет
экономики и информатики. Кафедра: «Программное обеспечение». Специальность -
«Математическое обеспечение и администрирование информационных систем».
Иностранный язык: разговорный английский.
Профессиональные навыки:
- Большой опыт работы с C++, STL.
- Опыт работы с C#, NET.
- Опыт работы с MFC, WinForms, wxWidgets.
- Опыт работы с репозиторием.
- Большой опыт работы с DirectX 9, 10, 11.
- Опыт работы OpenGL.
- Опыт разработки игровых движков.
- Havok Physics, PhysX.
- Havok Animations.
- Angel Script, Lua.
Проекты:
Более 8 лет в качестве разработчика игрового движка в составе команды Totem Games
(http://totemgames.ru/).
2006 – 2008 – Разработка пошаговой морской стратегии «Ironclads: American Civil War»
для PC.
http://en.wikipedia.org/wiki/Ironclads:_American_Civil_War
Все технические работы выполнялись мной, был написан трехмерный движок, с простой
графической системой, написана игровая логика, пользовательский интерфейс, редактор и
дополнительные утилиты.
2008 – 2009 – Разработка морского симулятора реального времени «Ironclads: High Seas»
для PC.
http://en.wikipedia.org/wiki/Ironclads:_High_Sea
Релиз для стим:
http://store.steampowered.com/app/46710/
Мною был значительно переписан графический движок, улучшена картинка. Добавлены
shadow maps, поддержка post process. Разработана самостоятельно физическая система для
симуляции движения, плавучести и столкновения кораблей с учетом волнения моря.
Значительно изменена система частиц, ускорено ее отображение. Написана гибкая
система пользовательского интерфейса.
2010 — 2014 — Разработка новой технологии для игр внутри студии. Написание системы
рендера, утилит, игровых редакторов, внутри-игрового интерфейса и прочее.
2015 – Разработка стратегической военно-морской игры «Ironclads 2: American Civil War».
Релиз для стим:
http://store.steampowered.com/app/414260/
Была написана уникальная игровая механика для стратегического игрового режима.
Опыт работы с графикой:
По последней версии движка я написал ряд статей с общим описанием идей и методов,
которые реализовывались в рамках в основном графической системы движка.
http://www.gamedev.ru/pages/totem4_engine/articles/
Система рендера полностью вынесена в отдельный поток, синхронизация производится
между потоками игры и рендера независимо от других потоков, без использования
критических секций и прочих алгоритмов системной синхронизации. Использование
атомарных переменных для флагов синхронизации так же не показало своей
необходимости по тестам. Используется обычная bool переменная, которую считывает
основной поток движка.
Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article1
Сама система рендера представляет собой многопроходный цикл. Проходы генерируются
на основании конфига рендера движка, для каждого приложения можно реализовать
полностью уникальную систему.
Для управления ресурсами используются менеджеры, каждый ресурс представлен умным
указателем с простым или управляемым счетчиком ссылок для особых схем управления
освобождением ресурса (например некоторые ресурсы могут оставаться в менеджере для
быстрого доступа или же быть полностью выгружены из памяти).
Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article2
Для всех проектов реализовывался прямой рендер с одним основным источником света и
несколькими локальными источниками на объект (макисимум 10 omni, 4 spot). Для
реализации теней использовалась технология CSM (cascaded shadow maps) с фильтрацией
для смягчения по технологии VSM (variance shadow maps), экранная фильтрация с учетом
карты глубины.
Отложенный рендер не был реализован в силу избыточности технологии для данного
проекта.
Отображение моделей сделано по технологии Phong lighting model с учетом карты
нормалей (normal map) и свечения (specular map) для металлических поверхностей.
Два точечных источника
света и простая тень от
направленного источника
света в тестовой программе.
Из крупных систем эффектов реализовано небо по технологии atmosherical scattering:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article4
И поверхность океана с динамически изменяемыми погодными условиями, в основе
лежит технология предложенная Тессендорфом и ряд примеров по этой технике:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article5
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article6
В ходе реализации много работал с D3D11 и Compute Shaders, разбирался в примерах
nVidia Ocean11 и Island11. Перекладывал технологию на D3D9. В процессе работы
остался очень доволен написанной многопроходной системой рендера, позволяющей
реализовывать нужное число проходов для FFT преобразований.
динамический расчет волн с текстурой 256х256 и партикловые облака
Системы частиц заняли большое время в разработке, три раза модель обработки была
полностью переписана. Изначально алгоритм базировался на физической моделе. Каждая
частица имела массу и действующие на нее импульсы или силы, но наличие большого
числа динамических сил приводило к большому числу циклов, что сильно сказывалось на
скорости обработки. В результате решил перейти на систему интерполяции
трансформаций частиц: линейную интерполяцию, сплайновую (по кривой Безье). В
результате у эмиттера в обработке статическое число эффекторов, что устраняет лишние
циклы, а интерполяция позволяет реализовывать сложные эффекты.
Рендер частиц реализован за один DIP для одного атласа текстуры, все данные о частицах
собираются в буфер вершин, который используется с технологией Hardware Instancing.
Для частиц реализован редактор.
Не самая важная часть, но, к сожалению, очень громоздкая — GUI. Интерфейс реализован
на основе вывода примитивов при ортогональной проекции, используется точечная
фильтрация текстур для избежания искажения изображения. Все алгоритмы обработки
реализованы самостоятельно. Рендер за один DIP (один VB и IB) для одного атласа
текстур.
Небольшая статья о реализации:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article3
Опыт работы с физикой:
Был опыт написания своего движка по обработки физики, но стал использовать готовую
технологию, чтобы не решать проблемы быстрого расчета столкновений выпуклых тел
решил не целесообразным, выбирал из PhysX и Havok, последний мне показался наиболее
приемлемым, так как имелось множество примеров реализации, что помогало обучению.
Кроме использования основных методов физической системы, связанной с определением
контакта тел (collisions) и нахождения пересечений (ray casts), была написана симуляция
плавучести твердого тела на основе метода точечных объемов. Он заключается в
разделении модели объекта (корпуса) на боксы, равные примерно по объему участку
корпуса модели и дальнейшему просчету контакта бокса с поверхностью воды для
определения погружения и следовательно выталкивающей силы.
Программа использует просто алгоритм расчета пересечения плоскости воды в текущей
точке (построение плоскости по трем точкам на основании карты высот) с гранями
объемного бокса, для ускорения просчетов плоскость строится в локальном пространстве
модели.
Алгоритм позволяет реализовать плавучесть
любого тела в воде, расположение центра
тяжести и метоцентрическая высота судна
определяет остойчивость, масса тела и его
размеры определяют стабильность
артиллерийской платформы.
Для расчета игровой модели судна с учетом реальных характеристик корпуса,
сопротивлению пробития от механического воздействия (таран, снаряд) или фугасного
(взрывная волна) была реализована система конструкции судна, с учетом разделения на
отсеки.
В заключении пример тестовой сцены рендера

Weitere ähnliche Inhalte

Was ist angesagt?

Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Ontico
 

Was ist angesagt? (20)

ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
 
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 
Разница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментомРазница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментом
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
Boost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуBoost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почему
 
Робототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть IРобототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть I
 
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотекиНа что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
 
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звукиКружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
 
Справка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектовСправка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектов
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
Intel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибкамиIntel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибками
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
 

Andere mochten auch (10)

CubeiTz Brochure
CubeiTz BrochureCubeiTz Brochure
CubeiTz Brochure
 
Cubeitz 1 Million Bit Encryption
Cubeitz 1 Million Bit EncryptionCubeitz 1 Million Bit Encryption
Cubeitz 1 Million Bit Encryption
 
Flood saver
Flood saverFlood saver
Flood saver
 
Accenture
AccentureAccenture
Accenture
 
Cubeitz 1 Million Bit Encryption
Cubeitz 1 Million Bit EncryptionCubeitz 1 Million Bit Encryption
Cubeitz 1 Million Bit Encryption
 
смешарики и-математика
смешарики и-математикасмешарики и-математика
смешарики и-математика
 
Presentación1
Presentación1Presentación1
Presentación1
 
ghbhnjk
ghbhnjkghbhnjk
ghbhnjk
 
смешарики и-математика
смешарики и-математикасмешарики и-математика
смешарики и-математика
 
Призначення і бойові властивості гранат
Призначення і бойові властивості гранатПризначення і бойові властивості гранат
Призначення і бойові властивості гранат
 

Ähnlich wie Ферапонтов_Резюме

Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
Media Gorod
 
2011 Kurosh MSc presentation
2011 Kurosh MSc presentation2011 Kurosh MSc presentation
2011 Kurosh MSc presentation
RF-Lab
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
HappyDev
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
Михаил Кокорев
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
Alex Tutubalin
 
Программный комплекс "НейроКС"
Программный комплекс "НейроКС"Программный комплекс "НейроКС"
Программный комплекс "НейроКС"
kulibin
 

Ähnlich wie Ферапонтов_Резюме (20)

Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
 
Mind map
Mind mapMind map
Mind map
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Developing our own rendering
Developing our own renderingDeveloping our own rendering
Developing our own rendering
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 
2011 Kurosh MSc presentation
2011 Kurosh MSc presentation2011 Kurosh MSc presentation
2011 Kurosh MSc presentation
 
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)
 
Invisible
InvisibleInvisible
Invisible
 
Net framework
Net frameworkNet framework
Net framework
 
С.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEС.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSE
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Программный комплекс "НейроКС"
Программный комплекс "НейроКС"Программный комплекс "НейроКС"
Программный комплекс "НейроКС"
 

Ферапонтов_Резюме

  • 1. Ферапонтов Олег Владимирович Возраст: 27 лет. Место жительства: Россия, г. Брянск. Электронная почта: oleg.osiris.ferapontov@gmail.com Образование: Неполное высшее 2006 – 2008 гг. - Брянский Государственный Технический Университет. Факультет экономики и информатики. Кафедра: «Программное обеспечение». Специальность - «Математическое обеспечение и администрирование информационных систем». Иностранный язык: разговорный английский. Профессиональные навыки: - Большой опыт работы с C++, STL. - Опыт работы с C#, NET. - Опыт работы с MFC, WinForms, wxWidgets. - Опыт работы с репозиторием. - Большой опыт работы с DirectX 9, 10, 11. - Опыт работы OpenGL. - Опыт разработки игровых движков. - Havok Physics, PhysX. - Havok Animations. - Angel Script, Lua. Проекты: Более 8 лет в качестве разработчика игрового движка в составе команды Totem Games (http://totemgames.ru/). 2006 – 2008 – Разработка пошаговой морской стратегии «Ironclads: American Civil War» для PC. http://en.wikipedia.org/wiki/Ironclads:_American_Civil_War Все технические работы выполнялись мной, был написан трехмерный движок, с простой графической системой, написана игровая логика, пользовательский интерфейс, редактор и дополнительные утилиты. 2008 – 2009 – Разработка морского симулятора реального времени «Ironclads: High Seas» для PC. http://en.wikipedia.org/wiki/Ironclads:_High_Sea Релиз для стим: http://store.steampowered.com/app/46710/ Мною был значительно переписан графический движок, улучшена картинка. Добавлены shadow maps, поддержка post process. Разработана самостоятельно физическая система для симуляции движения, плавучести и столкновения кораблей с учетом волнения моря.
  • 2. Значительно изменена система частиц, ускорено ее отображение. Написана гибкая система пользовательского интерфейса. 2010 — 2014 — Разработка новой технологии для игр внутри студии. Написание системы рендера, утилит, игровых редакторов, внутри-игрового интерфейса и прочее. 2015 – Разработка стратегической военно-морской игры «Ironclads 2: American Civil War». Релиз для стим: http://store.steampowered.com/app/414260/ Была написана уникальная игровая механика для стратегического игрового режима. Опыт работы с графикой: По последней версии движка я написал ряд статей с общим описанием идей и методов, которые реализовывались в рамках в основном графической системы движка. http://www.gamedev.ru/pages/totem4_engine/articles/ Система рендера полностью вынесена в отдельный поток, синхронизация производится между потоками игры и рендера независимо от других потоков, без использования критических секций и прочих алгоритмов системной синхронизации. Использование атомарных переменных для флагов синхронизации так же не показало своей необходимости по тестам. Используется обычная bool переменная, которую считывает основной поток движка. Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article1 Сама система рендера представляет собой многопроходный цикл. Проходы генерируются на основании конфига рендера движка, для каждого приложения можно реализовать полностью уникальную систему. Для управления ресурсами используются менеджеры, каждый ресурс представлен умным указателем с простым или управляемым счетчиком ссылок для особых схем управления освобождением ресурса (например некоторые ресурсы могут оставаться в менеджере для быстрого доступа или же быть полностью выгружены из памяти). Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article2 Для всех проектов реализовывался прямой рендер с одним основным источником света и несколькими локальными источниками на объект (макисимум 10 omni, 4 spot). Для реализации теней использовалась технология CSM (cascaded shadow maps) с фильтрацией для смягчения по технологии VSM (variance shadow maps), экранная фильтрация с учетом карты глубины. Отложенный рендер не был реализован в силу избыточности технологии для данного проекта. Отображение моделей сделано по технологии Phong lighting model с учетом карты нормалей (normal map) и свечения (specular map) для металлических поверхностей.
  • 3. Два точечных источника света и простая тень от направленного источника света в тестовой программе. Из крупных систем эффектов реализовано небо по технологии atmosherical scattering: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article4 И поверхность океана с динамически изменяемыми погодными условиями, в основе лежит технология предложенная Тессендорфом и ряд примеров по этой технике: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article5 http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article6 В ходе реализации много работал с D3D11 и Compute Shaders, разбирался в примерах nVidia Ocean11 и Island11. Перекладывал технологию на D3D9. В процессе работы остался очень доволен написанной многопроходной системой рендера, позволяющей реализовывать нужное число проходов для FFT преобразований. динамический расчет волн с текстурой 256х256 и партикловые облака
  • 4. Системы частиц заняли большое время в разработке, три раза модель обработки была полностью переписана. Изначально алгоритм базировался на физической моделе. Каждая частица имела массу и действующие на нее импульсы или силы, но наличие большого числа динамических сил приводило к большому числу циклов, что сильно сказывалось на скорости обработки. В результате решил перейти на систему интерполяции трансформаций частиц: линейную интерполяцию, сплайновую (по кривой Безье). В результате у эмиттера в обработке статическое число эффекторов, что устраняет лишние циклы, а интерполяция позволяет реализовывать сложные эффекты. Рендер частиц реализован за один DIP для одного атласа текстуры, все данные о частицах собираются в буфер вершин, который используется с технологией Hardware Instancing. Для частиц реализован редактор. Не самая важная часть, но, к сожалению, очень громоздкая — GUI. Интерфейс реализован на основе вывода примитивов при ортогональной проекции, используется точечная фильтрация текстур для избежания искажения изображения. Все алгоритмы обработки реализованы самостоятельно. Рендер за один DIP (один VB и IB) для одного атласа текстур. Небольшая статья о реализации: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article3
  • 5. Опыт работы с физикой: Был опыт написания своего движка по обработки физики, но стал использовать готовую технологию, чтобы не решать проблемы быстрого расчета столкновений выпуклых тел решил не целесообразным, выбирал из PhysX и Havok, последний мне показался наиболее приемлемым, так как имелось множество примеров реализации, что помогало обучению. Кроме использования основных методов физической системы, связанной с определением контакта тел (collisions) и нахождения пересечений (ray casts), была написана симуляция плавучести твердого тела на основе метода точечных объемов. Он заключается в разделении модели объекта (корпуса) на боксы, равные примерно по объему участку корпуса модели и дальнейшему просчету контакта бокса с поверхностью воды для определения погружения и следовательно выталкивающей силы.
  • 6. Программа использует просто алгоритм расчета пересечения плоскости воды в текущей точке (построение плоскости по трем точкам на основании карты высот) с гранями объемного бокса, для ускорения просчетов плоскость строится в локальном пространстве модели. Алгоритм позволяет реализовать плавучесть любого тела в воде, расположение центра тяжести и метоцентрическая высота судна определяет остойчивость, масса тела и его размеры определяют стабильность артиллерийской платформы. Для расчета игровой модели судна с учетом реальных характеристик корпуса, сопротивлению пробития от механического воздействия (таран, снаряд) или фугасного (взрывная волна) была реализована система конструкции судна, с учетом разделения на отсеки.
  • 7. В заключении пример тестовой сцены рендера