Rust GameDev: This Month in Rust GameDev #2 – September 2019

Welcome to the second issue of the Rust GameDev Workgroup’s
monthly newsletter.

Rust is a systems language pursuing the trifecta:
safety, concurrency, and speed.
These goals are well-aligned with game development.

We hope to build an inviting ecosystem for anyone wishing
to use Rust in their development process!
Want to get involved? Join the Rust GameDev working group!

Game Updates 

Veloren 

Town surrounded by a wall

Veloren is an open-world, open-source multiplayer voxel RPG.
The game is in an early stage of development, but is playable.

Some of the September’s improvements:

  • Improved multi-staged towns generation;
  • Improved inventory system and character creation;
  • Massive progress on water, water physics, lakes, and rivers!
  • New chunks data structure;
  • Three-dimensional map and minimap;
  • First-person view;
  • Bows and arrows;
  • Performance optimization;

New video: “24 Minutes of Alpha Gameplay”.

Full weekly devlogs “This Week In Veloren…”:
#31,
#32,
#33,
#34,
#35.

Zemeroth v0.6 

fighters smash demons in fire and poison clouds

Zemeroth is a minimalistic 2D turn-based tactical game.

This month Zemeroth v0.6 was released.
Main features of this release are:

  • renown and fighter upgrades,
  • possessions,
  • sprite frames and flips,
  • status effect icons.

Read the full devlog post or watch the video version.

Twenty Asteroids 

space ship destroys enemies and asteroids with plasma beams

@VladZhukov0 published a few devlogs about their
“Twenty Asteroids” game:

Updates include:

  • New enemies: a ship with a big pinball-like bullet and a laser-mesh ship;
  • New upgrades: laser range and bullets reflection;
  • Explosion size now depends on asteroid’s size;
  • Improved main menu, upgrade and death screens;
  • Better color contrast;
  • New AI behaviors: follow and circle around;
  • Debugging performance plots;

Amethyst Games 

Other Game News 

Library & Tooling updates 

gfx-rs & wgpu-rs: Project Update 

gfx-rs rusty logo

gfx-rs is a Rust project aiming to make low-level GPU programming
portable with low overhead.
It’s a single Vulkan-like Rust API with multiple backends that implement it:
Direct3D 12/11, Metal, Vulkan, and even OpenGL.

wgpu-rs is a Rust project on top of gfx-rs that provides safety,
accessibility, and even stronger portability.

  • gfx-rs was slimmed down: “magical” deps (like failure and derivative)
    were removed and it sped up the fresh gfx-hal build by a factor of 8.5X;
    the “typed” layer of gfx-hal got removed.
  • Backend features were removed from wgpu-rs;
  • An entirely new swapchain model was prototyped and implemented.

Discussions:
/r/rust

Mun and Hot Reloading Experiments 

Mun text logo

Mun is a scripting language for gamedev
focused on quick iteration times that is written in Rust.

Mun’s pillars:

  • Hot Reloading.
    Mun natively supports hot reloading – the process of changing
    code and resources while an app is running –
    on all target platforms and consoles with marginal runtime overhead.
    Its runtime has useful error messages,
    and can easily be embedded into other languages.
  • Static Typing.
    Mun’s type system eliminates an entire class of runtime errors
    and provides powerful IDE integration with
    auto-completion and refactoring tools allowing developers
    to focus on writing code.
  • Performance.
    Mun uses LLVM to compile to machine code that can be natively executed
    on any target platform, guaranteeing the best possible runtime performance.

The driving force behind the development of Mun is natively supported
hot reloading for functions and data.
As such, the language and its syntax will keep growing at the rate
in which hot reloading-supported semantics is added.
Currently, the language looks like this:

fn main() {
    let sum = add(a, b);

    // Comments: Mun natively supports bool, float, and int
    let is_true = true;
    let var: float = 0.5;
}

// The order of function definitions doesn't matter
fn add(a: int, b: int): int {
    a + b
}

The source code of the project
is available on GitHub
under the MIT or Apache licenses.

Mun’s runtime is implemented in Rust.
Check out a GIF demo of the Rust hot reloading functionality
that shows:

  • Catching and logging of errors (e.g. type mismatch),
  • hot reloading of a shared library’s symbols (used for reflection) and method logic,
  • runtime invocable methods and type/method reflection.

Discussions:
/r/rust

Rust Roguelike Toolkit and Roguelike Tutorial 

Minimal pathfinding and FoV example

rltk_rs by @herberticus is a Rust implementation of
C++ Roguelike Toolkit (what is a “roguelike?”).

It provides all the basic functionality one needs to write a roguelike game,
as well as mouse support, an embedded resource system, Web Assembly support,
and more.

All examples are linked to browser WASM to try.

The back-end uses glow to abstract OpenGL between versions.
API for embedding assets directly into your binary.

If you’d like to see a functional roguelike that uses rltk_rs,
check out Rusty Roguelike.


The Roguelike Tutorial includes more than 20 chapters now
and continues to grow.

It covers topics from “hello rust” and “what is an ECS?” to adding monsters,
equipment, nice menus, save/load, multiple levels, bloodstains, particle effects,
magic mapping scrolls, and more.

The tutorial has Web Assembly links to all examples
so you can run them in your browser.

EmbarkStudios/texture-synthesis 

Generated textures samples

Embark has open-sourced their texture synthesis crate texture-synthesis.
It’s an example-based non-parametric image generation algorithm
written in Rust.

The repo also includes multiple
code examples along with test images,
and a compiled binary with a command-line interface
can be found under the release tab.

Also, see a great long recorded talk
“More Like This, Please! Texture Synthesis and Remixing from a Single Example”
which explains this technique and the background more in-depth.

Full list of stuff that Embark has released so far:
embark.rs.

Discussions:
twitter


Also,

Iced – a Renderer-Agnostic GUI Library 

All widgets tour demo: radio buttons, sliders, debugging view, etc

Iced is a renderer-agnostic GUI library focused on simplicity and type-safety.
It was originally born as an attempt at bringing the simplicity of Elm
and The Elm Architecture into Coffee 2D game engine.

Features:

  • Simple, easy-to-use, renderer-agnostic API;
  • Responsive, flexbox-based layouting;
  • Type-safe, reactive programming model;
  • Lots of built-in widgets and custom widget support.

Check out the design overview in the repo’s README.

Discussions:
/r/rust

Amethyst 

amethyst logo

Amethyst is a game engine and tool-set
for ambitious game developers.
It enables game developers to make complex games without getting
into too much trouble, by means of data-driven design
and the ECS architecture.

Tooling:

Godot and Rust 

Recall Singularity's ship base

Tom Leys is working on a “The Recall Singularity” game
about designing autonomous factory ships and stations
and this month they published a few posts
about using the Godot engine with Rust:

Use Prebuilt Rooms with Rust Macros for More Interesting Procedural Dungeons 

Top-down view on a generated dungeon

@whostolemyhat published the fourth part
of their tutorial series on procedural generation with Rust.
In this tutorial, the room generation is updated so it can pick from a selection
of pre-built room patterns as well as create the standard empty room.

Discussions:
/r/rust

Other Library & Tooling News 

Popular Workgroup Issues in Github 

Meeting Minutes 

See all meeting issues including full text notes
or join the next meeting.

Requests for Contribution 

Bonus 

Just an interesting Rust gamedev link from the past. 🙂

a scene with sand, water, a tree, flowers, and fire

Sandspiel is a falling sand game by @MaxBittker
built in late 2018 using Rust (via WASM), WebGL,
and some JS glueing things together.

Sandspiel is a pixel physics simulation sandbox where
you can paint with elements, conduct experiments and build your own world!

Elements include Ice, Water, Sand, Lava, Fire, Oil, Plant, Fungus,
and many more!

The goal was to produce an cellular automata environment that’s
interesting to play with and supports the sharing and forking
of fun creations with other players.
Ultimately, I want the platform to support editing and uploading
of your own elements via a programmable cellular automata API.

The history of the game and the development process are documented in a great
“Making Sandspiel” blog post.

The source code is available on GitHub.

The game’s community is still active: check
@sandspiel_feed feed of uploads.

Discussions:
/r/rust,
/r/programming,
hacker news


That’s all news for today, thanks for reading!

Want something mentioned in the next newsletter?
Send us a pull request.

Also, subscribe to @rust_gamedev on Twitter
or /r/rust_gamedev subreddit if you want to receive fresh news!

Discussions of this post:
/r/rust,
twitter.

Libre Arts: Week recap — 24 September 2019

Week highlights: Inkscape 1.0 beta released, GIMP is getting built-in Normal Map filter, Krita team brings more improvements and bugfixes, darktable team is wrapping up v3.0 development, new versions of OBS Studio and Shotcut.

Graphics

It’s been a few interesting weeks over at GIMP and GEGL.

First off, the master branch of GIMP can now optionally be built with Meson thanks to Félix Piédallu. There are more bugs to flesh out, but it basically works. For developers, this decreases local build times. Most users will probably be unaffected.

Ell continued his work on the out-of-canvas feature set, adding an option requested from users — making it possible to preserve canvas padding color instead of using the checkerboard when the Show All option is on. You can either set it on per-image basis or make it used by default.

Michael Natterer and Jehan continued working on plugins API. In particular, Michael started addressing a few 17 years old feature requests asking for a way to make plug-in settings be persistent across sessions and a Reset button. An existing patch for the former is yet to be pushed to the main development branch, the latter already works in the old Despeckle filter used as a testbed.

Another new feature added by Ell is changing compression type for tile swap. It looks puzzling and overly technical until you know what his intention is:

I have a long standing plan of automatically ramping up the compression when you’re running out of swap space, to buy you more time to save everything and regroup 🙂 Right now, this option is there mostly for experimenting/extra control.

Ell also contributed a new GEGL operation, Normal Map, currently sitting in the workshop, which means it’s not yet built by default. Basically it’s because he’s not done with it yet. Some features like filter type choice are still missing.

It’s hard to say if this will make it to GIMP 2.10.4 (if, like me, you build GIMP with workshop enabled, you don’t need to worry). We’ll see.

The Krita team recently released version 4.2.6 mostly with bugfixes (over 120 people participated in beta-testing). Two new features are: ‘New layer from visible’ command now available in layer’s right-click menu, and Angle is now used as the default renderer on Windows.

The master branch is seeing some good action too. Agata Cacko added a simple progress bar for saving KRA files to improve visual feedback. Thanks to Lynx3d, screen color picker can now pick from reference images too. Oh, and Boudewijn Rempt fixed a crapton of resource and memory leaks.

Wolthera continues hacking on SAI files support in a dedicated branch of Krita. Recently, she added some tests to validate correctness of loading the data, then added basic layer style support, basic masks support (more fixes to follow), implemented the Binary blending mode, fixed clipping groups to load correctly, and added support for reading/applying the DPI value.

Inkscape 1.0 beta is finally out! This has been years and years in the making, and it will hopefully soon be completed.

Some of the highlights of the upcoming release are:

  • Optional coordinates origin in top left corner
  • Canvas rotation and mirroring
  • Better HiDPI display support
  • Centerline tracing
  • Tons of live path effects improvements
  • Variable fonts support

MacOS users will also love native UI and signed/notarized .dmg files.

One of the interesting aspects of the beta release is the new multicolor icon theme and advanced theming options.

Basically, the theme is designed around several key colors that can be changed in the Preferences dialog (the red, the green, and the sky blue colors on the screenshot above).

Downloads are up at https://inkscape.org/release/1.0beta1/platforms/.

Photography

The darktable team seems to have started wrapping up writing new code. The next release, v3.0, is likely to be done around winter holidays time.

Aurélien Pierre finally merged tone equalizer, a darktable module he’s been working on for a good part of the year. The module is essentially another take at separating lightness into zones (blacks, shadows, midtones etc.) and adjusting them selectively.

The module has some on-canvas interaction seen on both screenshots: hover over a region that belongs to a zone, then scroll the mouse wheel up or down to adjust EV. Adjacent zone will be compensated for, and unrelated zones won’t be affected at all.

There’s slightly more advanced UI that displays zone and the histogram and allows “painting” right over the EQ curve to tweak it.

For a background information on this feature, there is probably no better source than a dedicated thread over at Pixls.us. (One more important change, filmic v3, is better left for the next weekly report).

Speaking of which, another new fun project is ART, or Another RawTherapee. It’s a friendly fork of the well known photography application, also announced at Pixls.us. Alberto Griggio started it to flesh out some ideas for the original project. He ended up sticking to his fork because of how far the changes went.

So far, Alberto seems more inclined to focus on local editing tools, in particular advanced masking tools, reusing darktable code/ideas where applicable (his tone equalizer is based on an earlier version of the darktable’s module), and streamlining the pipeline to his liking.

Source code is over at BitBucket.

Franco Comida merged the librtprocess integration code into the main development branch of Luminance HDR. If you want to know, how this affects tone mapping in terms of rendering quality, see his old/new previews from a thread on GitHub. The improvement is quite spectacular.

3D and VFX

Blender news are nicely packed in another Blender Live session by Pablo Vazquez:

As usual, more stuff from Pablo Dobarro:

And more:

First appleseed 2.1.0 beta is released, featuring things like OSL shaders compilations on the fly, full support for Cryptomatte, and render checkpointing i.e. resuming multi-pass renders after they were interrupted.

Video

Hugh Bailey et al. finally made a much anticipated new release of OBS Studio, the free/libre video broadcasting and screencasting software. Some of the highlights:

  • Ability to pause recording
  • New option to automatically adjust bitrate instead of dropping frames
  • Ability to select multiple sources on the preview
  • Browser sources can now have their volume adjusted via the audio mixer
  • Fixed hardware acceleration support for decoding media files

Get it from the project’s website.

More than that, Twitch joined NVIDIA and Logitech in sponsoring Hugh’s work on the project and committed to an unannounced annual donation that (it is safe to assume) surpasses 50 grand. The team will also have a booth (first time ever) at TwitchCon 2019 in San Diego.

Dan Dennedy released Shotcut v19.09.14 featuring multi-select for playlist and timeline, new default shortcuts, six new video filters, some other improvements, and a bunch of bugfixes. See the news post for more details.

Matt completed the transform effect in Olive, then went on setting up continuous integration including automatic builds for Windows, macOS, and Linux (AppImage). Hint: you can now grab Windows builds in the Artifacts section at Appveyor, but be warned that it’s alpha quality code. Great new features. But not ready for production yet. But so tempting… And yet… Oh well.

Alexandru Băluț created a merge request for Pitivi, that adds editing nested timelines — a new feature developed by project’s GSoC student Swayamjeet Swain over the summer. It looks like there’s some cleaning up to do before this can be merged.

Not a ton of things going on over at Cinelerra GG, but they recently removed a timebomb placed by Adam Williams over 10 years ago. It made Cinelerra unusable if the currently installed copy was too old (and thus there was a chance that any reportable bugs were already fixed in newer releases).

Meanwhile, Einar Rünkaru is single-handedly working on Cinelerra CVE. Most of the work is low-level under-the-hood stuff, although the keyframable Crop effect sounds end-userish enough to me.

Audio and music

Andrew Belt keeps expanding the ecosystem of VCV Rack. The modular synth now has a separate Chords module which is a quad-note chord sequencer, and you can now write new modules in JavaScript (support for more languages is coming).

Nils Hilbricht et al. announced initial schedule for this year’s Sonoj convention that is taking place on October 26-27 in Cologne, Germany. Some of the topics are JACK, Qtractor, Vital (a new synth), recording sample libraries from acoustic instruments etc.

Tutorials

New Krita timelapse from grafikwork:

New Blender tutorial by Nita Ravalj covers the topic of modeling fur:

Rositsa Zaharieva posted a new the-making-of timelapse for a painting she recently did with Krita.

Inkscape basics with Nick Saporito:

Artworks and showcases

The most impressive, hilarious and god knows what else showcase this past week was an attempt by Grant Wilk to create a microprocessor with Blender. Not model one, actually create one.

Some more information:

Or just follow Grant on Twitter, this is fun!

Atheris Hispida might indeed one of the inspirations for dragons as creatures, as suggested in a BlenderArtists thread for this Cycles render of one, made by

Lucas Falcao posted a few close-ups from his recent personal render that looks like taken out from a very cool animated movie. All done with Blender/Cycles.

Raghavendra Kamath posted another artwork made with Krita:

Marcelo Queiroz‎ has been posting his renditions of DC superheroes on Inkscape‘s Facebook group for a while now, all work done with Inkscape and GIMP:

Libre Arts: Week recap — 10 September 2019

Week highlights: out-of-canvas pixels now possible in GIMP, Krita team goes on a bugfixing spree, lots of changes in upcoming Blender 2.81 and FreeCAD 0.19, GSoC project for OpenGL rendering in LibreCAD v3 now completed, more work-in-progress goodness in Olive.

Graphics

There’s more under-the-hood work on GIMP’s plugin system, but there have been user-visible changes too, and you are likely to love those. Ell contributed a new feature: showing all pixel data outside the canvas boundary. It comes with an optional canvas boundary display (red dotted line).

When enabled, the padding around canvas gets replaced with common alpha checkerboard, and all content outside the canvas is revealed.

Ell also made it possible to use several tools outside the canvas. For now, it’s painting and cloning tools. Adding support for selection tools will probably bring GIMP considerably close to a full-blown implementation of unbounded layers.

Alessandro Francesconi released another new version of BIMP, visual batch processing plug-in for GIMP. Two latest updates feature improved GUI flexibility and HiDPI support (contributed by one of Pencil2D developers), as well as support for WebP and HEIF.

Before HiDPI fix:

After HiDPI fix:

Dmitry Kazakov, Boudewijn Rempt, Wolthera, and Lynx3d fixed probably a dozen of memory leaks in Krita and twice as many general bugs here and there. There’s more progress by Wolthera in adding support for SAI files: fixes for layer blending modes, masks support.

Meanwhile, Kuntal Majumder continues working on his GSoC project, the Magnetic Lasso tool. Recently, he added an ability to cancel selection and start anew, as well as edit checkpoints. He then implemented basics of lazy filtering.

Some members of the GNOME team are now promoting Obfuscate, a new program created by Bilal Elmoussaoui, specifically designed to blur and redact sensitive information on screenshots and images, like in this case part of tabs in Chrome:

3D and VFX

Pablo delivered another great recap of recent changes in Blender, there’s not much need in repeating that, just watch the video 🙂

You are going to love this extra though:

Or maybe this update on the eyedropper tool in Grease Pencil?

Check out a new photogrammetry add-on for Blender. There’s nice coverage over at Blendernation.

One more important topic here is free distribution of paid add-ons for Blender. This was an interesting conversation to watch:

The Wordpress ecosystem has had this controversy ages ago, Blender is comparatively late to the party, and yet it’s a conversation we needed to have.

CAD

LibreCAD’s only GSoC project, OpenGL rendering, is now complete. Kartik Kumar continues working with Florian Roméo and Armin Stebich on cleaning up the code. For details, see his final report.

Interesting things are going on with FreeCAD. There’s a newly introduced Points workbench by Jean-Marie Verdun, that provides tools for working with point clouds. The Check Geometry tool (verifies if you have a valid solid) got more settings.

More interesting things, courtesy by Victor Titiov, are going on with the Show module. Apparently, you can now have multiple temporary visualizations in arbitrary order and a plugin system. As the first tangible outcome, this helps allowing another workbench to do sketch editing.

The OpenSCAD workbench now supports extrusion with an angle, and the DraftFillet tools got a new option to change fillet to a chamfer, courtesy by vocx-fc. Finally, there’s a ton of updates in the FEM workbench by Bernd Hahnebach.

Video

I find it hard right now to report on Matt’s progress with Olive, because the master branch is pretty much unusable. So here is an unordered list of recent changes:

  • OpenImageIO support (cheap access to OpenEXR, DPX, Cineon etc.)
  • Lots of color management work done
  • Functions for alpha dis/re/association
  • Alpha over and opacity nodes are functional, transform (2D, 3D, and 4D) node is partially functional
  • Node caching and render caching improvements
  • New slider widget that can handle both integers and floats
  • New playback controls

Really, I can’t wait to see all this in a usable state.

Jonathan Thomas continues doing good work with OpenShot. There hasn’t been a release since March yet. But most recently, the program got support for Blender 2.80. This is where I just have to quote Jonathan:

On a side note, I really love the new version of Blender. It is very inspiring, the entire Blender story leading up to this release. It will continue to be an inspiration for OpenShot and myself. 👍 Good job Blender devs!!!!!

Cinelerra-GG now uses libdav1d for AV1 support by default instead of libAOM, which is part of the most recent release. It also got a new crop plugin and timeline bars, which aren’t in any release yet.

GNOME Subtitles is seeing more activity lately again, both new releases, v1.5 and v1.6, have bugfixes and small enhancements rather than new features.

Tutorials

A good introduction to darktable, made for PetaPixel readers:

New photography postprocessing tutorial for GIMP users by Davies Media Design:

GDquest explains using file layer in Krita to make game art mockups:

And here is a timelapse showing how to make a low-poly eagle logo with Inkscape:

Artworks and showcases

I’ll never get tired posting new artworks by Philipp Urlich, made with Krita. This one is based on a Gaugan render that he did.

More speedpainting with Krita from Sylvia Ritter:

Urban environments by James O‘Brien, made with Blender, are always good solid stuff.

‘Puffin spotting on Cannon Beach’ is a short animated film by Zale, made with Blender and based on a Zoe Persico’s illustration.

New FreeCAD showcase is a gas turbine for a radio-controlled model aircraft, based on a 1992 design by Kurt Schreckling. It was designed with upcoming FreeCAD 0.19, although no assembly workbench was used as there was no need for it, or so the author claims.

Random things

The funniest thing made with Blender I’ve seen in a while:

But procedural designs go even further:

Libre Arts: Week recap — 3 September 2019

Week highlights: Krita team begins working on SAI files support, new releases of StereoPhotoView, Blender Power Sequencer, and Flowblade, even more sculpting awesomeness in Blender.

Graphics

For GIMP, Michael Natterer and Jehan Pages spent the entire week porting plug-ins to new APIs, so not much fancy stuff going on.

One of the most interesting things going on with Krita right now is 3rd party funding to support SAI files via newly developed library called libsai (apparently, made by someone from Epic games). Only loading is likely to happen because of this:

Writing probably isn’t going to be possible… The file format is completely crazy, a kind of virtual file system with encryption keys. The work done at https://gitlab.com/Wunkolo/libsai is amazing.

It looks like this is FreeHand all over again.

Wolthera is currently adding decryption support to make it possible loading actual bitmap data, not just the layer tree.

Other than that, the team is mostly fixing bugs and preparing for the release of Krita 4.2.6 (beta is available, and the team needs your feedback).

Photography

Alexander Mamzikov released a new version of StereoPhotoView application that allows viewing and basic editing of stereoscopic images and videos. New features: variable alignment (scene depth) in the stereoscopy video content, gallery display and navigation when opening a photo from separate sources, automatic rotation when loading JPEG as per Exif orientation tag.

3D and VFX

Pablo Dobarro does a lot with sculpting tools in Blender, this is one of the most amazing recent changes:

For even more Blender changes, here’s a new weekly video review:

Blender team is also looking for a UX and web designer. See if you are interested and fit the criteria.

Nathan Letwory released a new version of his .3dm (Rhino) importer for Blender, with preliminary curves support.

Stephen Agyemang, appleseed’s second GSoC student, posted his report on implementation of practical path guiding in the renderer, that he worked on over the summer. This technique allows improving renders where indirect lighting is involved. See here for more details.

Frédéric Devernay cut another release candidate for Natron 2.3.15.

CAD

Yorik van Havre posted his monthly update about the work he and fellow team members did on FreeCAD, mostly in BIM and Arch department.

Some of the highlights:

  • BuildingParts now have a built-in, implicit section plane.
  • Various TechDraw ArchView and DraftView improvements.
  • DXF importing/exporting is now done with correct line color and style.

Even more importantly, the Link branch has been merged to the main development branch and allows FreeCAD to share object data (e.g. geometry) with other objects, inside or outside the file. This is pretty much a prerequisite for assemblies.

See the full report for more info.

Video

The GDquest released Blender Power Sequencer 1.3:

Version 1.4 already in the works, if you missed some of the new features announcements:

Nathan Lovato is also giving a talk about VSE at Blender Conference in October.

Janne Liljeblad released Flowblade 2.2. Some of the new features are: RotoMask and FileLumaToAlpha filters, LumaToAlpha compositor, and some UI updates for the titler and the keyframe edit tool. See here for more details. And here is a video that demonstrates using the roto mask.

The Pitivi team started merging GSoC code. The marker bar is now part of the master branch in Git.

As for Shotcut, Dan Dennedy introduced multiselection to the timeline (as well as Select All/None actions) and added several new video filters: Blend Mode, Elastic Scale, Threshold, Posterize, Halftone, and Dither.

Audio and music

Will Godfrey released a new version of Yoshimi, a free software synth. Some of the highlights are: extensions to AddSynth voices and modulators, a new AddSynth noise type, extra mute options, a global bank search entry.

Robin Gareus added pYIN support to Ardour for frequency estimation in audio. The change was introduced after looking at what David Healey has been doing with Lua scripts in Ardour:

Robin also added progress notification for Lua scripts execution and introduced support for new LV2 extensions (backgroundColor, foregroundColor, and scaleFactor) that allow a host to inform plugins on host color theme and UI scale factor to play better with non-default themes and on HiDPI displays.

The change requires patching both the host and LV2 plug-ins code. Here is what you get with default Ardour theme in upcoming version 6 and Robin’s limiter plug-in:

And the same with a brighter theme called Blueberry Milk:

Among other noticeable changes in the program, Nikolaus Gullotta of Mixbus fame added sortable Time Span, Length, and Range name columns to exporting dialogs. And Len Ovens continues his work on the foldback bus.

JP Cimalando made the initial release of an LV2 effect called stone-phaser, a phaser similar to the original vintage Small Stone pedal from the 70s.

Tutorials

Nathan Lovato explains how to create a tileset for a game in Krita with file and clone layers:

Xavier Shay explains how to recreate a Juno-60 with VCV Rack.

New Inkscape timelapse from grafikwork, this time on drawing chocolate icong donut:

Art and showcases

Barandanduen posted a new artwork made with GIMP:

New artwork by Ray Waysider, made with Krita:

Fenec fox render by Kanishk, made with Zbrush and Blender:

Felipe Torents did a new lighthearted animation with Blender:

There’s more Blender goodness on Bart’s weekly review of best artworks.

Libre Arts: Week recap — 28 August 2019

Week highlights: lots of under-the-hood work in GIMP, new features in Krita and Blender, new release of Kdenlive, CUPS changes the license, a variety of projects are wrapping up their GSoC participation for this year and post updates.

Graphics

Part of the GIMP team met at Chaos Communication Camp near Brandenburg (Germany) for a hackfest. They spent most of the week improving the new plug-in API and making plug-ins use it.

Additionally, Michael Natterer rewrote memory management for plug-ins, and Jehan (not present at CCC) merged his branch that adds object-oriented like approach (discussed in the previous week recap). He continued working on submission of signals from core to plug-ins in a separate git branch though.

There’s also some talk on IRC about adding a user preference for associated/non-associated alpha as a switch in the Image menu. Let’s wait for this to be actually delivered, but it’s good to know this is on the radar.

There haven’t been many feature changes in **GEGL **(save for the Meson port), but Øyvind Kolås added a proper greyscale color spaces support to the babl library and made a new release.

A few people asked me for an opinion on the fork of GIMP called Glimpse.

At first, I considered posting in detail about Glimpse but then thought better of it. Here is what I can say on the matter, and since I’m a GIMP contributor, please take this with an extra bag of salt.

  • GIMP team has been suggesting to fork it in extreme cases (such as rebranding) for years. It is perfectly fine to do so as per terms of GNU GPL, although, so far, most attempts have been unsuccessful.
  • Contributors to Glimpse have never been GIMP contributors in the first place, they aren’t known in the GIMP community, and they don’t seem to have any experience programming digital content creation software, so there is no real fragmentation so far.
  • I spent ca. two weeks on Glimpse communication channels to figure out if they are the real deal. There is a clear and rather disturbing difference between how Glimpse contributors/moderators claim they treat the upstream project and what they actually do and say about GIMP. This is the opposite of impressive.
  • The mutual hostility between supporters and haters of Glimpse doesn’t bring any value to the overall community. If you are among haters of Glimpse, please consider leaving them alone and letting them give it their best shot. Likewise, you are not getting anywhere by annoying GIMP developers.

The Krita team has been mostly fixing bugs. E.g. Dmitry Kazakov fixed absolute brush rotation on rotated canvas.

However, Boudewijn Rempt also reverted the removal of JPEG2000 support via OpenJPEG library that he did in 2016, and updated the code to use present-day API of the library. This is currently in a branch.

Miguel Lopez better known as Reptorian contributed Spiral and Reverse Spiral modes for the Gradient tool. This is really fun! I witnessed Reptorian going from being hard on developers on Reddit a few years back to becoming a valuable code contributor (delivering quadratic blending modes and a high pass filter). Take notes, people! 🙂

Nathan Lovato submitted GDquest’s Batch Export add-on to Krita for review and inclusion as part of the upstream project. Speaking of which, there’s another interesting merge request by Dmitrij Antsevich, adding an ‘Export Group as Layer’ switch for the exporting plug-in, so that each layer group would be flattened into a single respective layer for exporting.

The FontForge team is taking a new approach to communicating to users. Fred Brennan picked up the stale Twitter account and started turning it into pure gold by showing new features and recording quick video tutorials explaining the basics of using the font editor.

CUPS 2.3.0 is out and now ships under the terms of Apache 2.0 license rather than GPL/LGPLv2, although Michael Sweet added a GPL/LGPL exception that you can read at the bottom of the NOTICE file. This shouldn’t come as a surprise given that Apple has been owning the project since 2007.

Back in July 2007, when Michael revealed the acquisition, he stated:

CUPS will still be released under the existing GPL2/LGPL2 licensing terms, and I will continue to develop and support CUPS at Apple.

Well, this lasted a whopping 12 years.

On the code level, the new release adds support for IPP presets and finishing templates, brings a variety of bugfixes, and includes a new ippeveprinter utility (based on the old ippserver sample code). For more info, see the release log (some new features are mentioned in respective release logs of betas and release candidates).

Animation

Synfig had a successful Google Summer of Code participation. Here are reports from their students:

It’s been a while since I last posted anything about Pencil2D. Most work these days is done by Oliver Stevns and someone known as scribblemaniac. Over the summer, they improved the UI here and there, added configurable constraint rotation, and fixed some bugs. The work isn’t very fast but rather steady which is great. Their latest release was done at the spring/summer edge, you can read more about it here.

The OpenToonz team has been applying pull requests on GitHub in batches lately. This may or may not mean there is a new release coming.

3D and VFX

Pablo Vasquez did another awesome review of recent changes leading up to Blender 2.81: outliner changes, Intel’s denoiser, voxel remesher, Math node etc.

Some of the other new things in Blender are:

  • White Noise node
  • New snap options: Edge Center and Edge Perpendicular
  • New Grease Pencil operator Merge by Distance

Even more, there’s a new proposal for updated particle nodes UI which deals with issues pointed out in the previous proposals, namely, the connection between particle types and their behaviors not being obvious enough, and many (potentially) disorganized floating nodes in the node tree.

Soft8Soft finally released Verge3D 2.14 for Blender 2.80, featuring augmented reality support (WebXR), morph target controls and a parametric models demo, font loading and texture-from-text features, normal map generator and more.

Gray Olson posted the final update on her GSoC project for appleseed for which she created a unified viewport in appleseed.studio displaying several possible views of a scene, allowing to switch between them and overlay data and widgets on top of it.

Jeremy HU, who also got Epic MegaGrant in July, keeps posting updates on Dust3D.

Game design and programming

Godot’s: 8 Google Summer of Code students are doing fine. Here is the latest report.

There’s also a very much welcome update from Hugo Locurcio:

CAD

WandererFan added an alpha version of a welding symbol editor to the master branch of FreeCAD and is looking for input from users. Some nightly builds are available.

The OpenOrienteering Mapper team have been steadily releasing new development version with new features and bugfixes. Some of the changes over the summer are: mobile version for Android, experimental OCD 2018 importing and new OCD exporting (version 8-12, including georeferencing), GeoTIFF support, improved CMYK PDF exporting. Have a look for yourself and maybe give it a spin.

SolveSpace is getting long overdue development love from contributors who are now taking over the project from whitequark. This is not an easy process, you probably shouldn’t expect releases any time soon, but we’ll see.

Video

Kdenlive 19.08 was out earlier in August. Some of the release highlights:

  • 3-point editing (at last!)
  • Simple speed adjustment by Ctrl+dragging edges of the clip
  • Configurable number of channels and sample rate in the audio capture settings
  • Clip transcoding re-enabled
  • Default fade duration is now configurable

For more information, please see release notes.

New features never stop arriving to Blender Power Sequencer:

Music

There was an interesting discussion about UI on Ardour’s IRC channel after last week’s interview with Oleg Kapitonov, and the immediate result was that Robin Gareus replaced text captions with icons on buttons in plug-in windows. So when you use plug-ins with narrow natrive UIs, the dialog won’t be as wide as before.

Tighter plugin window UI in Ardour 6 alpha

Robin keeps improving icon-related code ever since. He also bundled x42-tuner with Ardour and dropped rule-based midifilter.

Meanwhile, Len Ovens resumed his work on the foldback bus. Essentially it’s a software implementation of stage monitoring where an output is tailored for a performer to help them hear themselves. The new code is, um, really, really new. A lot more will follow.

And yes, all this new stuff will eventually be part of Ardour 6.

New version of VCV Rack is out with bugfixes and new API features.

Tutorials

The Blender team continues releasing videos on 2.80 features (there’s a separate playlist on YouTube for that). The most recent addition is a video on sculpting tools:

New kickass 1-minute Blender tutorial from Ian Hubert, this time on creating post-apocalyptic cities:

Chris Kearford posted a ‘Non-photorealistic explosions with Blender’ tutorial with a few videos.

Chris Kearford, NPR explosions in Blender

New tutorial from GDquest on using physics layers and masks in Godot:

Fred Brennan posted a tutorial on changing the ascender, cap height, x-height, & descender:

Ramon Miranda explains 10 tricks to paint faster and better in Krita:

Art and showcases

Great work by Philipp Urlich, made with Krita:

Philipp Urlich, Krita, Tree Brothers

More speedpainting with Krita by Sylvia Ritter:

Sylvia Ritter, Krita, speedpainting

Financials

Last Sunday, I woke up to a whopping 600 euro donation from Simon Repp. Simon works in multiple disciplines, both graphics and music. So I think I probably didn’t entirely mess up by going beyond the topic of image editors and 3D 🙂 Thank you, Simon!