3 заметки с тегом

software

Dev-C++ — история продолжается

В 2015 году я писал о том, что среда разработки Bloodshed Dev-C++ продолжает развиваться в виде форка Orwell Dev-C++ 5. К сожалению, этот проект довольно быстро заглох, и долгое время казалось, что полюбившаяся многим IDE безвозвратно канула в лету. Однако этим летом меня ждал сюрприз: продолжением разработки Dev-C++ занялась компания Embarcadero!

Для тех, кто не в курсе: Dev-C++ — это свободная IDE под Windows, работающая с компилятором GCC, легковесная и интуитивная в использовании, прекрасная альтернатива Visual Studio для работы над небольшими проектами (или если вы просто не хотите использовать тулчейн от MS). Поскольку я являюсь давним пользователем Dev-C++, меня эта новость весьма порадовала: в руках Embarcadero, нынешнего владельца Delphi, проект просто обязан получить второе дыхание.

Как и форк Orwell, форк Embarcadero основан на TDM-GCC 4.9.2 и полноценно поддерживает компиляцию в 64-битном режиме. Среда официально поддерживает Windows 10. Из ключевых изменений стоит отметить обновленные пакетный менеджер Packman и линтер AStyle, также были улучшены локализации на некоторые языки.

На момент написания этого текста я тестировал Embarcadero Dev-C++ 5.50. Я не рекомендую устанавливать программу в Program Files — многолетняя практика показала, что среда лучше всего работает из C:\Dev-Cpp. После установки вы можете увидеть ошибку при попытке запуска, но не пугайтесь: запускать нужно не devcpp.exe, а devcppPortable.exe. В остальном IDE работает как обычно, никаких существенных изменений в интерфейсе я не заметил.

Скачать форк можно в GitHub-репозитории: https://github.com/Embarcadero/Dev-Cpp

 Нет комментариев    1   2 дн   devcpp   ide   programming   software

Обзор возможностей WebGPU

После выхода Vulkan в 2015 году мы рассуждали о том, сможет ли новый графический API полностью заменить OpenGL, и сделали вывод, что в обозримом будущем этого не произойдет. Масса запутанного boilerplate-кода, непривычные для прикладной разработки концепции, множество вариантов неопределенного поведения, отсутствие нативной поддержки на macOS — все это делает Vulkan менее привлекательным выбором для написания типовых приложений. Vulkan более пригоден для машин, а не людей — он используется в бэкендах некоторых графических движков, но писать на нем напрямую слишком сложно и дорого. Отдельно стоял вопрос о судьбе Vulkan в браузерах — сейчас уже ясно, что WebVulkan не появится. Ну а после новости о том, что Apple прекращает поддержку OpenGL на macOS в пользу Metal, всем стало очевидно, что нужен новый абстрактный графический API, адаптированный под современные видеокарты, но при этом более дружественный к пользователю, чем Vulkan или Direct3D 12 — и, конечно, способный работать на всех платформах.

Стать таким API имеет все шансы WebGPU — новый веб-стандарт, предложенный W3C, основное применение которого — высокопроизводительный рендеринг и параллельные вычисления на GPU. В отличие от WebGL, WebGPU не является портом OpenGL или какого-то иного нативного API — по уровню абстракции он значительно выше Vulkan, но ниже OpenGL.

WebGPU создается, в первую очередь, для браузеров, и на момент написания этой статьи доступен лишь в Safari Technology Preview. Тем не менее, попробовать новый API вы можете уже сейчас в его нативной реализации в рамках проекта wgpu. Для сборки нужен тулчейн языка Rust, скомпилированную же библиотеку можно использовать в любом C-совместимом языке. wgpu работает на Windows, Linux и macOS, в качестве бэкенда используя Vulkan, Metal или Direct3D 12.

Особенности

Основным принципом WebGPU является сокращение вызовов API при изменении состояния конвейера и привязке ресурсов. Параметры конвейера создаются и валидируются заранее, что значительно снижает покадровую нагрузку. Заметна тенденция к сокращению числа функций в пользу больших и разветвленных инициализирующих структур, которые в терминологии WebGPU называются дескрипторами.

Важнейшая концепция WebGPU — группы биндинга (bind groups), которые похожи на descriptor sets в Vulkan. Это особые контейнеры, предназначенные для привязки данных к шейдерам — о них удобно думать как о наборах uniform-параметров. Вместо того, чтобы явно передавать значения каждому параметру, как это делалось в классическом OpenGL (до появления UBO), все данные в группе передаются единым буфером, что значительно быстрее и проще. Кроме того, можно заранее создать несколько готовых групп биндинга с разными данными, а потом просто переключаться между ними, что также очень эффективно.

Еще одной особенностью API является повсеместное использование буферов для обмена данными с приложением. WebGPU использует неструктурированные байтовые буферы, отображаемые в пользовательскую память, так что на стороне API даже не требуется уточнять типы uniform-данных — они задаются только в шейдере (но, разумеется, нужно следить за тем, чтобы структура в шейдере совпадала со структурой uniform-буфера). Также создание буфера необходимо для передачи данных в текстуру и для хранения вершинных атрибутов и индексов. Преимуществом API является единообразие — для хранения любых данных используется один и тот же тип буферного объекта (в отличие от того же OpenGL, где есть множество разных типов буферов).

Приложение WebGPU выглядит как предельно сжатый аналог приложения на Vulkan — инициализация устройства, определение лэйаутов групп биндинга, создание буферов и текстур, инициализация конвейера, свапчейна и аттачментов. В главном цикле — обновление uniform-буферов, установка текущих конвейера, группы биндинга, вершинного буфера — и, наконец, отрисовка. Все вызовы отрисовки (как и другие команды видеокарте) не выполняются немедленно, а заносятся в специальный command encoder, который затем отправляется в очередь на выполнение — таким образом, можно вызовы отрисовки определить заранее, до начала цикла (если, конечно, логика программы не предполагает изменений порядка рисования объектов).

Шейдерный язык WebGPU черновиком стандарта пока не определен, но существующие реализации используют SPIR-V, благодаря чему можно легко использовать готовые шейдеры на GLSL 4.5. Как и Vulkan, WebGPU не оперирует символьными именами и требует явного указания layout-спецификаторов set, binding и location для входных и выходных данных. Вероятнее всего, стандарт будет включать некий язык на основе HLSL — к примеру, Apple уже предложила Web High Level Shading Language (WHLSL).

Чего не будет в WebGPU

Серебряной пули не существует. Будучи переносимым, WebGPU неизбежно окажется более ограниченным, чем Direct3D и OpenGL. Вот несколько важных фич, которые, по всей видимости, не войдут в ядро стандарта: transform feedback, occlusion queries, тесселяция, сжатие текстур (только как расширение).

Итог

WebGPU — не только для более быстрых браузерных игр. Думаю, не будет преувеличением сказать, что нативные реализации WebGPU в будущем начнут частично занимать нишу десктопного OpenGL, а в совокупности с WebAssembly позволят писать единый код для нативных платформ и веба. Это означает, что графические приложения (3D-пакеты, графические и видеоредакторы, CAD-системы и пр.) можно будет запускать в браузере на всех платформах. WebGPU — это еще один шаг к стандартизации графических API, столь же значительный, каким в свое время стал OpenGL.

 Нет комментариев    53   3 мес   gamedev   gpu   software   webgpu

Blender 2.80

После почти двух лет разработки вышел новый релиз Blender — лучшей свободной программы для работы с 3D-графикой. На нашем старом сайте и в журнале «FPS» мы уже достаточно много писали обо всех изменениях и нововведениях Blender 2.80, так что сейчас обойдемся перечислением основных фич:

  • • Новый пользовательский интерфейс. Изменения коснулись, главным образом, панелей инструментов в окне вьюпорта
  • • Новый рендер-движок Eevee, работающий в реальном времени во вьюпорте
  • • Обновленный набор инструментов для работы с 2D-анимацией
  • • Слои и коллекции
  • • Новые возможности в Cycles, включая шейдеры Principled Hair, Principled Volume и поддержку Cryptomatte

Список всех изменений читайте в официальном чейнджлоге. Скачать Blender 2.80 для всех платформ можно на https://www.blender.org.

 Нет комментариев    228   2019   blender   blender 2.80   modeling   software