Сегодняшняя сборка 0.990.36.1665 выпущена в бета-ветке, поэтому, не стесняйтесь присоединиться к бете. Изменения:

  • Многопоточное сохранение скриншота
  • Многопоточное сохранение видеокадров
  • Сохранение скриншотов/видеокадров на диск теперь многопоточное, то есть с использованием всех ядер ЦП. Больше нет долгой задержки при сохранении скриншота в формате png (которое может занять несколько секунд в разрешении 4k!). Захват видео в виде набора png кадров также теперь осуществляется намного быстрее (не так быстро, как сохранение в tga, но png всё же снижает требования к свободному пространству на диске в 2-3 раза).

    Обновленное меню записи видео:

  • Возможность автоматического запуска скрипта одновременно с началом захвата видео
  • Захват видео останавливается автоматически после завершения скрипта
  • Параметры, позволяющие свернуть или закрыть SpaceEngine после завершения захвата видео
  • В инструмент записи видео добавлена возможность автоматического запуска указанного скрипта при нажатии кнопки записи. Запись останавливается автоматически после завершения скрипта. Существует также возможность выйти из SE или свернуть окно SE после завершения записи, чтобы снизить нагрузку на ЦП и видеокарту (SE в свернутом состоянии находится в режиме ожидания, не нагружая вашу систему). Таким образом, вы можете запустить длинную задачу захвата видео и уйти, не беспокоясь о том, что ваш компьютер расплавится, пока вас нет 🙂

    Хорошим примером использования автозапуска скрипта является запись сложной анимации. Например, я сделал это видео о созвездиях путем написания скрипта, запустив его и запустив захват видео одновременно. Теперь это можно делать одним нажатием кнопки.

  • Текстуры эмиссии и цвета ландшафта хранятся в одном массиве для экономии видеопамяти
  • Текстуры температуры и высот ландшафта хранятся в одном массиве для экономии видеопамяти [эксперимент]
  • Это оптимизация использования видеопамяти текстурами ландшафта. Как я объяснял в одном из предыдущих блог-постов, ландшафтный движок SE использует несколько текстурных массивов разных форматов. В релизной сборке я решил использовать отдельный массив для каждого типа текстуры, а не для каждого формата. То есть карты высот, карты цвета, карты свечения и т.д. хранятся в своих массивах – всего 10 типов текстур (но только 4 формата). Это было необходимо, потому что OpenGL имеет ограничение на размер текстурных массивов – 2048 слоёв. Если хранить текстуры по форматам, это ограничит движок всего 4096 текстурами, что недостаточно даже для LOD -1.

    Но главный недостаток этого – огромные требования к видеопамяти: 1,9 ГБ для сжатых текстур и 3,7 ГБ для несжатых (для 2048 слоёв). В системах с меньшим количеством видеопамяти размер массивов уменьшается до всего 256 слоев. Этого достаточно только лишь чтобы завершить загрузку планеты на поверхности при LOD -1 и разрешении экрана 720p. Вот почему на низких и средних настройках графики я был вынужден ограничить LOD и «разрешение ландшафта».

    Основными потребителями видеопамяти являются массивы текстур рельефа и температуры – они занимают по 340 МБ каждый. Объединив их в один массив, я сократил требования к видеопамяти на 340 МБ. Всё ещё возможно загрузить планету в LOD 0 при 1080p, но при более высоком LOD/разрешении может начаться бесконечная циклическая загрузка. Не все планеты имеют тепловые карты (активные вулканы или лава), поэтому это хороший компромисс, но требуется больше тестов. Я также могу сделать эту оптимизацию отключаемой в системах с большим объёмом видеопамяти.

    Точно так же я объединил в один массив текстуры свечения с картами цвета поверхности. Свечение в настоящее время используется только на Земле и Ио (это ночные огни городов и вулканы), и сжатый массив текстур для них занимал 170 МБ, а несжатый – целых 680 МБ! Какая трата памяти, особенно если вы не планируете посещать Землю или Ио! Эта оптимизация заставляет Землю перезагружать свои текстуры немного чаще (карта свечения городов имеет не очень высокое разрешение), зато экономит уйму видеопамяти, поэтому я думаю, что это оптимизация должна остаться.

    Теперь в системах с небольшим объёмом видеопамяти SE может использовать больше слоёв для других текстур, что делает генерацию рельефа более стабильной и, вероятно, позволит использовать больший LOD. Требуется больше тестов.

    Другие изменения – визуальные:

  • В фоторежиме “HDR” полярные сияния исчезают с расстоянием, чтобы не портить внешний вид планеты из космоса [эксперимент]
  • Улучшен внешний вид красных гигантов
  • Улучшено цветовое разнообразие атмосфер планет [эксперимент]
  • Красные гиганты теперь похожи на мод Дока:

    Некоторые багфиксы, в том числе проблемы с изменением цвета атмосферы планеты после перезапуска SE:

  • Исправления в каталогах
  • Уменьшены тайлинг некоторых текстур ландшафта
  • Исправлен баг с несохранением файла базы данных пользовательскими именами и описаниями объектов
  • Исправлен баг с изменением цвета атмосферы планеты после перезапуска
  • Исправлены сухие озёрные планеты
  • Исправлено полное отсутствие террас на горах
  • Также я обновил руководство по созданию текстур планет и выпустил новую версию утилиты CubeMap (v1.15). Теперь она многопоточная, использует до шести процессорных ядер для генерации шести граней кубической карты, и 64-битная, поэтому может загружать достаточно большие текстуры в память целиком, что очень существенно повышает производительность. Ссылка для загрузки утилиты – на странице руководства.