Wednesday, April 5, 2017
NGTech into Android. Building dependencies for NGTech(RU)
В прошлом, я уже предпринимал попытки портировать движок на Android, поэтому большая часть кода была уже переведена, за исключением подсистем физики, звука, окна и подсистемы потоков, но в этот раз я настроен более чем серьезно. Тогда даже был получен рабочий билд, который рисовал картинку на экране, и остальные подсистемы работали судя по тестам, но прям поиграть было нельзя.
Сейчас же хочется получить полноценный билд. Поэтому 3 дня назад я начал полноценное портирование, перед этим произведя код-ревью части компонентов, фиксинга части горячих багов и подготовка соответствующей инфраструктуры. За эти дни я активировал весь отключенный функционал, кроме собственно указанных подсистем.
Проблема отсутствия поддержки необходимых функций для функционирования файберов в тред библиотке будет решаться методом молотка - будет внедрена их ASM реализация. Притом примечателен тот факт, что их функционал еще был реализован в 2012 году, но они так и не попали в финальную сборку Android. Напомню, что с момента 2012 года, прошло уже 3 мажорные версии.
Т.к большинство зависимостей движка уже собрано, осталось собственно:
1) OpenAL
2) PhysX
3) Devil
Если со вторым все ясно - там скорее всего все соберется из коробки, ибо NVidia же, сценариев под VS конечно нету, но никто не отменял командную строку
С первым все гораздо сложнее - в интернете пишут постоянно, что необходимо использовать специальную версию openal(ссылка будет приложена ниже), но на практике структура у OpenAL такая, что нужные участки кода можно включать макросами, поэтому нам надо всего лишь получить правильный config.h под нашу платформу, во всяком случае я надеюсь этим дело и ограничится. Иначе придется лезть diff'ом и искать изменения, это немного усложняет сам процесс, ибо у меня используется мало того, что более новая версия чем все тут представленные, так еще и своя ветка, в которой я попытался избавиться от данной структуры(что бы можно было одновременно переключаться между типами API).
С третьим ситуация осложняется следующим образом - банально неизвестно собирается ли она(там файлов много, а выборочно я просто устану компилировать - поэтому просто отложим это сейчас).
По итогам сегодняшнего дня и сегодняшней ночи... осталось только собрать эти библиотеки и слинковать это все добро. - Ну или найти бинарный вариант OpenAL Soft, но это уже завтра все.
Оконная система будет реализована самостоятельно(надо же учиться работать и без кроссплатформенных либ) - вариант с SDL пока не рассматривается, т.к еще и мало времени. Инпут будет осуществляться через NVGamepadLib - я все равно ее собирался внедрять.
В общем завтра я буду плотно разбираться с этим вопросом.
Пока уделяю по максимуму времени, ибо в итоге не хочется оказаться ... ну вы поняли
Да и добить это уже надо
Ссылки по работе с OpenAL Soft Android:
1
2
3
4
5
6
7
8
BinRepo?
Ссылки по Fibers:
Aros/Platforms/Support for *nix
Boost.Context
boost context class
LIGHTWEIGHT COOPERATIVE MULTITASKING WITH BOOST.CONTEXT
Асинхронность: назад в будущее
FiberTaskingLib
Сейчас же хочется получить полноценный билд. Поэтому 3 дня назад я начал полноценное портирование, перед этим произведя код-ревью части компонентов, фиксинга части горячих багов и подготовка соответствующей инфраструктуры. За эти дни я активировал весь отключенный функционал, кроме собственно указанных подсистем.
Проблема отсутствия поддержки необходимых функций для функционирования файберов в тред библиотке будет решаться методом молотка - будет внедрена их ASM реализация. Притом примечателен тот факт, что их функционал еще был реализован в 2012 году, но они так и не попали в финальную сборку Android. Напомню, что с момента 2012 года, прошло уже 3 мажорные версии.
Т.к большинство зависимостей движка уже собрано, осталось собственно:
1) OpenAL
2) PhysX
3) Devil
Если со вторым все ясно - там скорее всего все соберется из коробки, ибо NVidia же, сценариев под VS конечно нету, но никто не отменял командную строку
С первым все гораздо сложнее - в интернете пишут постоянно, что необходимо использовать специальную версию openal(ссылка будет приложена ниже), но на практике структура у OpenAL такая, что нужные участки кода можно включать макросами, поэтому нам надо всего лишь получить правильный config.h под нашу платформу, во всяком случае я надеюсь этим дело и ограничится. Иначе придется лезть diff'ом и искать изменения, это немного усложняет сам процесс, ибо у меня используется мало того, что более новая версия чем все тут представленные, так еще и своя ветка, в которой я попытался избавиться от данной структуры(что бы можно было одновременно переключаться между типами API).
С третьим ситуация осложняется следующим образом - банально неизвестно собирается ли она(там файлов много, а выборочно я просто устану компилировать - поэтому просто отложим это сейчас).
По итогам сегодняшнего дня и сегодняшней ночи... осталось только собрать эти библиотеки и слинковать это все добро. - Ну или найти бинарный вариант OpenAL Soft, но это уже завтра все.
Оконная система будет реализована самостоятельно(надо же учиться работать и без кроссплатформенных либ) - вариант с SDL пока не рассматривается, т.к еще и мало времени. Инпут будет осуществляться через NVGamepadLib - я все равно ее собирался внедрять.
В общем завтра я буду плотно разбираться с этим вопросом.
Пока уделяю по максимуму времени, ибо в итоге не хочется оказаться ... ну вы поняли
Ссылки по работе с OpenAL Soft Android:
1
2
3
4
5
6
7
8
BinRepo?
Ссылки по Fibers:
Aros/Platforms/Support for *nix
Boost.Context
boost context class
LIGHTWEIGHT COOPERATIVE MULTITASKING WITH BOOST.CONTEXT
Асинхронность: назад в будущее
FiberTaskingLib
Saturday, March 11, 2017
Про С++11 на русском
Введение в C++11: auto, decltype, nested templates и range-based for
Введение в C++11: nullptr и нововведения в системе инициализации
Введение в C++11: лямбда-функции
Введение в C++11: умные указатели
Новые спецификаторы в C++11
Пользовательские литералы в C++11
Const-методы и способы борьбы
и попутно реализация mutable на C++11(англ) тык
Полезное:
STL и операторы сравнения
Return value optimization в C++
Пару слов о значениях по-умолчанию в производных классах
C++ стиль написания алгоритмов
Вызов некоторого метода у всех элементов контейнера в C++
Введение в C++11: nullptr и нововведения в системе инициализации
Введение в C++11: лямбда-функции
Введение в C++11: умные указатели
Новые спецификаторы в C++11
Пользовательские литералы в C++11
Const-методы и способы борьбы
и попутно реализация mutable на C++11(англ) тык
Полезное:
STL и операторы сравнения
Return value optimization в C++
Пару слов о значениях по-умолчанию в производных классах
C++ стиль написания алгоритмов
Вызов некоторого метода у всех элементов контейнера в C++
Tuesday, February 7, 2017
Useful extenssioins for Visual Studio
SQL
Entity Visualizer – Entity Framework Debugger Visualizer to display SQL source code generated by Entity Framework.
Entity Developer for LINQ to SQL – is a powerful ORM designer – modeling and code generation tool for LINQ to SQL.
C# WPF
WPF Office 2010 Silver Theme – Office 2010 theme for official Microsoft WPF controls
Time Tracking
VSJira – adds tools to the IDE to interact with JIRA servers.
Scrum Sprint Monitor – Scrum Sprint Monitor provides the Agile team with hands-off, always up-to-date status of the current Sprint, both at the individual and team level.
Code Style
Indent Guides – Adds vertical lines at each indent level
Editor Guidelines – Adds vertical lines at each indent level
Indent Guides Spell Checker – Adds vertical lines at each indent level
Monday, January 23, 2017
PBR Impmentation in NGTech
Я не хотел публиковать свой черновик, но надо сделать его открытым
Real shading in UE4
https://nickgalko.blogspot.ru/2016/07/modern-render-techniques.html
http://diaryofagraphicsprogrammer.blogspot.ru/
http://joker-ru.livejournal.com/
http://blog.selfshadow.com/publications/s2013-shading-course/#course_content
https://www.unrealengine.com/blog/physically-based-shading-on-mobile
http://blog.selfshadow.com/publications/s2013-shading-course/
https://gist.github.com/galek
Real shading in UE4
https://nickgalko.blogspot.ru/2016/07/modern-render-techniques.html
http://diaryofagraphicsprogrammer.blogspot.ru/
http://joker-ru.livejournal.com/
http://blog.selfshadow.com/publications/s2013-shading-course/#course_content
https://www.unrealengine.com/blog/physically-based-shading-on-mobile
http://blog.selfshadow.com/publications/s2013-shading-course/
https://gist.github.com/galek
Monday, August 15, 2016
Sunday, July 17, 2016
Modern Render Techniques - Links(Updated 1.08.16)
Simple Alternative to Clustered Shading for Thousands of Lights
Temporal Reprojection and SAO
Shaders:
Tone mapping
Deep G-Buffers for Stable Global Illumination Approximation
Screen-Space Ambient Occlusion by Unsharp Masking of the Depth Buffer
Temporal Reprojection and SAO
Shaders:
Tone mapping
Deep G-Buffers for Stable Global Illumination Approximation
Screen-Space Ambient Occlusion by Unsharp Masking of the Depth Buffer
Subscribe to:
Posts (Atom)