Окт 16 2014

Выложил ряд старых демок

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

  • Magelan (05.2006) – про неё есть отдельный пост, кроме того для неё выкладываю исходники, но больше как пример того, как программировать не надо ни в коем случае
  • Megatexture (17.01.2011) – тестирование одной реализации мегатекстуры (файл сжат RAR5 и разжимается в 48,6 ГБ!)
  • Sky (15.06.2011) – реализация неба с рассеиванием 2-го порядка

Авг 20 2014

Разработка SkyLA завершена

Сегодня была полностью завершена работа над SkyLA. Имеется весь необходимый функционал для реализации BCC, хотя пара вещей, может быть, будет добавлена в будущем (а может и нет, т.к. есть большие сомнения в том, что они вообще нужны). Возникли предпосылки для появления CFW 0.6 в начале-середине осени.

Июл 20 2014

Вывод изображения на экран в SkyLA

Для формирования изображения окна запускающего приложения SkyLA использует внутренний софтварный рендер, в том числе и шрифтов. Далее уже сформированное во внутреннем буфере изображение передаётся операционной системе для вывода на экран. Такое решение позволяет полностью не зависеть от операционной системы в вопросе подготовки изображения, в том числе от наличия шрифтов и кодировки символов. Однако в работе SkyLA есть один неприятный момент – SkyLA осуществляет рендеринг в классическом RGBA8 формате, а вот операционные системы (Windows и Linux) почему-то хотят изображение в формате BGRX8 (т.е. даже не задом наперёд, а с перестановкой местами нечётных каналов).

Т.к. в Linux других вариантов не было, то сразу была написана функция для перестановки каналов (благо там ничего сложного – прогон массива байтов через PSHUFB с заранее подготовленной маской). А вот в Windows оказалась возможность передавать изображение операционной системе в формате RGBX8 (через указание в поле compression структуры BitmapInfoHeader значения BI_BITFIELDS с последующей задачей битовыми масками расположения каналов R, G, B). Как мне показалось, если ОС принимает изображение в указанном формате, то и заморачиваться не стоит. Сделал и забыл. Но тут что-то понесло меня проверить быстродействие этого вывода и оно меня слегка шокировало. Вывод картинки 1024*576 занимал 26 миллионов тактов. ДВАДЦАТЬ ШЕСТЬ МИЛЛИОНОВ!!! Там всего 2,25МБ данных, куда столько вычислений?! И тут у меня начали закрадываться нехорошие мысли по поводу реализации работы с флагом BI_BITFIELDS, и я проверил скорость вывода BGRX8 изображений (конвертирует моя программа). Результат – 2,6 миллиона тактов, включая конвертацию. В 10 раз меньше. Как говорится, без комментариев.

P.S. После таких приколов, желание полагаться в чём-либо на “стандартную реализацию” убивается начисто.

Июн 20 2014

В SkyLA добавлена поддержка Linux

С добавлением новой платформы SkyLA стал кроссплатформенным. Т.к. для меня это первый опыт работы с кроссплатформой (обе платформы мне были близко знакомы, но опыта с графическими приложениями под Linux у меня тоже не было), то мне было крайне интересно какие из проблем предсказанных мной аналитически реально встретятся в процессе разработки, какие не встретятся и какие проблемы я не смог предсказать.

Подробнее »

Май 22 2014

Релиз: Cat Framework 0.4 + Cat Server Platform 0.4

Сегодня состоялся второй релиз нашего фреймворка Cat Framework. Релиз в первую очередь содержит исправления и улучшения сделанные во время работы над SkyEngine2 и лишь несколько новых возможностей. Как обычно приведу некоторою статистику.

От релиза CFW 0.2 релиз CFW 0.4 отделяют 76.5 часов, 3 закрытые задачи в Redmine (в основном этот релиз состоял из мелких правок и исправлений для которых не пораждались отдельные задачи с учётом времени), 28 ревизий SVN. Размер фреймворка составляет 2116+401КБ (в 147+51 файлах). Фреймворк насчитывает 36789+8024 строк кода.

Май 16 2014

Оптимизация кода компилятором FreePascal`я

Мы все привыкли слышать о том, что Pascal медленнее C от 2-х до 5-ти раз. Это мнение глубоко укоренилось в головах большей части людей. Однако это не совсем так. Во первых корректно сравнивать конкретные компиляторы, а не языки в целом (т.к. у обоих языком компиляторов хватает). Во вторых в подавляющем большинстве тестов которые я видел сравнения проводятся некорректно, т.к. для того же gcc обычно выставляются параметры вроде таких: -c -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse3, в то время как для FPC бывает даже простое -O1 (при котором запрещено даже использование регистров для хранение переменных). Даже в лучшем случае мы просто имеет -O3. Например, тест N-Body с известного сайта benchmarksgame.alioth.debian.org для С код компилируется с приведёнными выше ключами, FPC получает лишь ключи -O3 -XXs.

Подробнее »

Апр 02 2014

Завершена работа над tone-оператором

Наконец был завершен довольно старый R&D-проект по созданию хорошего тонового оператора для SkyEngine2. Путь данного проекта от задумки до завершения был достаточно долог и тернист. Первые работы по нему начались ещё в середине 2011 года, затем последовал почти 2-х летний перерыв, который принёс кардинальный пересмотр концепции оператора, и вот сейчас его наконец удалось завершить.

В данном посте в наглядной форме производится сравнение тонового оператора этого проекта с таковым из игры Uncharted 2.

Подробнее »

Мар 11 2014

Нет оккупации Украинских земель интервентами!!!

Единая страна

Никогда бы не подумал, что буду вынужден делать пост на политическую тему. Однако оккупация части моей родины российскими войсками и угрозы нападения на восточные области страны не позволяет остаться в стороне. Я искренне надеюсь, что мировое сообщество сможет вразумить Путина и объяснить ему, чем могут закончиться такие “аншлюсы”. Такое поведение России не может принести нам ничего, кроме ненависти к этой стране. История Украины это непрерывная борьба нашего народа с разными оккупантами – поляками, литовцами, турками, немцами. Искренне хочется надеяться, что русские не пополнят этот список, и мы останемся братскими народами, а не станем заклятыми врагами. Кроме того хочу выразить поддержку нашим храбрым солдатам и офицерам, которые, сейчас, защищают Крым от российской интервенции.

Фев 27 2014

Потоки в Windows и Linux для игр

Т.к. 3D-игра является приложением мягкого реального времени, то требует соответственного отношения к себе со стороны ОС. Конечно ни Windows, ни Linux (без специальных патчей) не являются ОС реального времени в полном понимании этого слова. В то же время основным врагом плавного FPS являются отнюдь не обработчики аппаратных прерываний (в Windows, по моим замерам, на неё тратится 1-2% времени с редкими пиками до 5%, аналогичная ситуация с DPC, только пики до 15% и могут быть до 5 сек). Основные проблемы доставляют другие приложения, запущенные параллельно нашему. Ведь даже если внешне в системе запущенна только наша игра, то на самом деле в системе болтается целая куча пользовательских процессов. И не все из них постоянно спят, некоторые просыпаются и начинают что-то делать.

Подробнее »

Фев 15 2014

RnD-проект по сжатию изображений завершён

После почти 3-х месячной разработки RnD-проект по сжатию изображений по сжатию изображений завершился успехом. Все поставленные цели были достигнуты и даже сверх то – полученные результаты позволяют смотреть с оптимизмом на использования сжатия изображений с потерями для тайлов мегатекстуры.

Подробнее »

Предыдущие сообщения «

» Более новые сообщения