Skip to content

v0.7

Latest

Choose a tag to compare

@eduardodoria eduardodoria released this 24 Aug 23:25
· 1 commit to main since this release

New Doriax version v0.7, with a new backend architecture, project-level scene and bundle management, custom build hooks, and high DPI support.

Native backends

The editor and the engine now share the same backends. The editor used to be a separate layer with its own backends, and only touched the engine's real backend when a project was exported. It now runs on native backends (X11, Win32 and Cocoa) that the engine uses too. The editor is aware of the engine, but the engine is not aware of the editor, the API still runs completely on its own.

Editor Export
Windows OpenGL OpenGL, Vulkan, Direct3D11
Linux OpenGL OpenGL, Vulkan
macOS Metal Metal, OpenGL

Vulkan is implemented for the editor on Windows and Linux (GRAPHIC_BACKEND=vulkan) but is not the default yet, since sokol_gfx.h is still incomplete for Vulkan. Vulkan on macOS is not enabled: MoltenVK does not yet implement VK_EXT_descriptor_buffer, which our renderer uses to bind textures, buffers and samplers.

Bundles window

Bundles (.bundle files) used to be tied to a scene: to instantiate one at runtime, some scene had to reference it beforehand. The exported engine can't read bundle .yaml files, so during editing bundles are converted into C++ code that scenes can instantiate.

Project -> Bundles... now lets you mark bundles that are always built into the project, making them available to any scene at runtime, referenced or not.

Scenes window

Project -> Scenes... does the same for scenes. Adding a scene used to mean dropping the file in the project folder and double-clicking it, and removing it meant deleting the file. Now you add and remove scenes from the project in one place, without touching the files.

In the Resources window, scenes and bundles that aren't part of the project are now greyed out.

Script directories

Project Settings -> Directories -> Script Directories. Add a folder inside your project and it becomes both an include root and a compile root.

As an include root, headers under it are included by the path below the folder. With Source/Public added:

#include "Player/Script.h"    // instead of "Source/Public/Player/Script.h"

As a compile root, every .cpp under it is built even when no entity references it, so you can split your code into module-style folders and just drop files in. Only the folders you add behave this way, the rest of the project is untouched. Add as many roots as you want, and they apply to editor builds and to exports.

ProjectBuild.cmake

For anything the setting doesn't cover, like linking a third-party library or adding defines, create ProjectBuild.cmake in your project root. The editor never writes that file, so your changes survive a rebuild, and exports pick it up too.

Attach to ${DORIAX_TARGET} rather than typing your project name, since the target is named differently in exported builds. ${DORIAX_SCRIPTS_DIR} is the root your script paths are relative to.

target_link_libraries(${DORIAX_TARGET} PRIVATE mylib)
target_include_directories(${DORIAX_TARGET} PRIVATE ${DORIAX_SCRIPTS_DIR}/Source/Public)

High DPI

The editor now works with different DPI scales, and restores its window and dock layout at the current scale. This was a fundamental issue affecting many people who use high-resolution monitors.

Text and fonts

TextComponent now supports up to three fallback fonts. When the main font is missing a character, Doriax automatically checks each additional font in order. Configure them from the new layers button beside the Font property. It can also be used for multilingual text and broader Unicode support.

Text rendering also gained Arabic and RTL support through HarfBuzz and SheenBidi, with glyphs now rasterized on demand instead of a fixed ASCII range.

Also in this release

  • The editor idles when nothing changes, plus a dense component type index, a shared Jolt job pool, glTF texture deduplication and a compacted shadow atlas
  • Projected spotlight masks, hardware PCF for projective shadows, a Render in Probes flag on reflection probes, and graphic backend selection in the Export window
  • Image viewer window, folder import in Resources, Save as Bundle in the Structure context menu, parent scene navigation, and an editor log file with a crash report and backtrace
  • Terrain LOD and crack fixes, glTF skinning and animation fixes, vec3 vertex colors, and submesh edits preserved across model reloads
  • New System.quit, body pose accessors, an editable sensor flag on Body3DComponent, a Mirror object class, and scene raycasts that ignore specific entities
  • On macOS the menu is now part of the system, following the design standard for every Mac application

⚠️ Potential breaking changes

Every texture and Lua script must now be located relative to its Assets or Lua directory, set in Project Settings. This happens automatically once you configure those directories, but existing projects that changed either setting may break. To fix it, reconfigure them.