суббота, 15 апреля 2017 г.

Модульная архитектура

  В очередной раз решил поэкспериментировать с модульной архитектурой движка. Для начала немного теории о том как я вижу реализацию такой архитектуры. После завершения разработки движка (или прототипа) напишу как все получилось в итоге.

вторник, 7 февраля 2017 г.

OpenCL vs OpenGL vs CUDA

  Небольшое сравнение функционала этих API для GPGPU. Тестов на производительность не будет, только удобство использования API.

четверг, 12 января 2017 г.

Просто скриншоты с работы

  Недавно была добавлена поддержка карт высот и рисование ландшафта. Так как предполагается работа на мобилках, то детализация неочень.

среда, 4 января 2017 г.

Разбор багов компиляторов и программистов

  Периодически сталкиваюсь с различными ошибками программистов и особенностями различных компиляторов, поэтому решил это залогировать, не факт, что все вспомню, но как минимум буду пополнять новыми ошибками.

воскресенье, 13 ноября 2016 г.

Долгий путь борьбы с глобальными переменными

  Основано на моем опыте написания своих движков, приложений. В сторонних проектах видел все те же способы и ничего оригинального припомнить не могу.

пятница, 4 ноября 2016 г.

Shadertoy!

  Сначала я хотел написать про алгоритмы которые я использую для генерации, но ничего оригинального в них нет и материалов таких полно, а вместо скриншотов и листингов кода намного интереснее смотреть как оно реально работает. Поэтому создал аккаунт на Shadertoy и буду туда выкладывать примеры, а сюда только финальные скриншоты и видео как оно смотрится на ландшафте.

вторник, 25 октября 2016 г.

Перезапуск

  За последний год я обновил движок, поэкспериментировал с системами частиц, разобрался с distance field, рейтресом, процедурной генерацией. Теперь пришло время опробовать все это в большом проекте, поэтому буду периодически выкладывать результаты.
  А пока немного скриншотов и видео:

среда, 19 февраля 2014 г.

Долгий анализ входящего смс

  В процессе улучшения работы анализа смс сообщения наткнулся на одну проблему в работе BroadcastReceiver'а: при долгом анализе сообщения в функции onReceive процесс прибивался и не получалось отфильтровать ненужное сообщение.
  На версии до 2.3.3 (API 10) на работу внутри onReceive выделялось больше времени, в версии 3.0 (API 11) время сократили, но появилась функция goAsync() возвращающая BroadcastReceiver.PendingResult, что позволяет делать тяжелую обработку в параллельном потоке и не нагружать главный. На работу в параллельном потоке дается 10 секунд, этого вполне достаточно. Следующий в очереди BroadcastReceiver не будет вызван до вызова BroadcastReceiver.PendingResult.finish(), так же есть функция BroadcastReceiver.PendingResult.abortBroadcast() чтоб прервать дальнейшую обработку события.

  Вариант с выносом обработки в Service для меня не подошел из-за невозможности вызвать другие обработчики смс. Для эмуляции прихода нового сообщения необходимо разрешение BROADCAST_SMS которое доступно только системным приложениям. Был вариант с имитацией получения смс, для этого нужно было показать уведомление и добавить во входящие (остальные изменения имитировать не получится), но по приведенной выше причине, а также из-за возможных проблем на версии 4.4, этот вариант не подошел.
  Ну и ссылка на приложение: SMS Spam Filter ))

среда, 10 июля 2013 г.

среда, 9 января 2013 г.

Некоторые особенности OpenGL

 За время использования OpenGL последних версий (3.3 и выше) накопилось не мало особенностей в его использовании, а так же отличия реализаций от nVidia и AMD, поэтому сформировал небольшой (пока) сборник.

среда, 3 октября 2012 г.

Двухсторонняя карта смещения.

Сейчас пишу игру на конкурс шутеров на gamedev.ru. В игре планирую использовать несколько интересных техник и по мере реализации буду писать о них здесь.
Первая техника - двухсторонняя карта смещения (dual-sided dismplacement map) используется для создания разрушаемых стен, полов и других аналогичных поверхностей (далее для простоты буду называть такие поверхности стенами).