Version:

Release Notes for Open 3D Engine 23.10.0

Open 3D Engine (O3DE) 23.10 release levels up the authoring experience for game creators and robotics simulation developers. In addition to improvements to the core engine, robotics users in O3DE now have an updated ROS2 Gem, a Gem that provides integration with the Robot Operating System (ROS2) , which provides drivers, state-of-the-art algorithms, and developer tools for robotics simulations.

Highlights

Here are some highlights of O3DE 23.10, followed by a detailed list of features broken down by Special Interest Group (SIG).

  1. New and Improved Authoring Experiences: Added compact nodes to Script Canvas. These are nodes that handle simple operations and utilize less visual space, making for a more compact and easier to debug graph.

  2. New Document Property Editor (experimental): Default Disabled, The Document Property Editor (DPE) is a new framework that allows tool creators to write editors without having to dive into the complexities inherent in Qt-based UI, element sorting, or user-driven filtering. The DPE allows developers to specify the layout, editing behavior, and general properties of a user interface in an XML-like “document”, which the DocumentPropertyEditor widget interprets to create the desired user experience. O3DE’s “Console Variables” editor is the first tool to be written using the DPE framework, with experimental support for a DPE-based Entity Inspector debuting in this release, capable of visualizing prefab overrides. How to enable: https://docs.o3de.org/docs/learning-guide/tutorials/entities-and-prefabs/override-a-prefab/#prefab-overrides-in-entity-inspector

  3. New Prefab Overrides (experimental): Default disabled, requires DPE to be enabled. Added support for prefab overrides in the new Document Property Editor (DPE) inspector. Prefab overrides are now visible as blue dots in the inspector. Users can see and manipulate overrides on entities at property and component levels. (RFC: https://github.com/o3de/sig-content/issues/112 ) How to enable: ( https://docs.o3de.org/docs/learning-guide/tutorials/entities-and-prefabs/override-a-prefab/#prefab-overrides-in-entity-inspector )

  4. Installation and Gem Improvements: Automation to create remote object repos (gems, templates, and projects), making it easier than ever for users to access other users content in O3DE. Linux Snap packages for both Ubuntu 20.04 and 22.04 support, making it easier to install an already compiled version of O3DE on Linux. Many fixes to the installation and setup experience for Linux when utilizing Debian, Snap, or GitHub installation.

  5. Improved ability to export projects created with O3DE for Windows, Linux, Linux Server, and iOS, making it easier to distribute apps privately and publicly. Android project exporting coming soon. Documentation https://development--o3deorg.netlify.app/docs/user-guide/packaging/project-export/

  6. Many visual and performance improvements to Atom (O3DE graphics and rendering system) including the start of mobile support for iOS/Android.

  7. Enhanced Robotics Features: Substantial improvements to robotic Project Templates. Manipulation template has been added to enable quick start with robotic arms. Templates now also include mini-tutorials that help to guide users through running them with Robot Operating System 2 (ROS 2) packages. Robotic manipulation components have been redesigned for modularity. Added support for prismatic joints. Camera sensor component has improved performance, configurability, and supports adding of noise. Two grippers are now available, finger gripper and vacuum gripper. Added Contact sensor component.

Features and bug fixes

sig-build

sig-content

  • Features

    • Prefab Overrides: Added prefab override support on procedural prefabs. Users can make edits in DCC tools that immediately get reflected in the editor while also retaining existing override edits: https://github.com/o3de/o3de/pull/15760
    • Prefab: Added component type-name aliases for components in prefabs: https://github.com/o3de/o3de/pull/15256
    • Editor: Added operation name in undo/redo: https://github.com/o3de/o3de/pull/15146
    • Asset Browser: Added context menu and hotkeys for delete, rename, move, and duplicate operations to table and thumbnail view
    • Asset Browser: Prompt the user to rename a newly created asset
    • Asset Browser: Updated the icons to support high resolutions
    • Asset Browser: Added multi-selection support
    • Asset Browser: Added the asset inspector panel which provides all the details on a selected asset
  • Bug fixes

sig-core

sig-graphics-audio

  • Large impact

    • Hybrid SSR-RayTraced Reflections - Added a raytracing pass for high quality hit detection and fallback data for the SSR pass.
    • Vulkan Memory Allocator support - Add VMA library for managing all GPU memory allocations on RHI_Vulkan. This means that that all memory allocations (buffers, images, transient and streaming images) now goes through VMA.
    • Mesh instancing work - This involved creating a new MeshInstanceManager for managing draw packets, adding support for instanced object transforms in shaders, adding support for VisibleObjectLists in the RPI Culling and enabling instanced draw calls in the MeshFeatureProcessor
    • Half float support to the shader pipeline to help with performance on mobile hardware
    • DX12MA support - Enables O3DE to use AMD’s D3D12MemoryAllocation library as a replacement for our page sub-allocators for buffer pools.
    • Add support to allow directional cascades to avoid rendering objects that are completely covered in a smaller cascade
    • Support to get screenshot comparison testing for Atom working through the pytest framework.
    • Parts of the Initial framework for multi-gpu work for core RHI backend.
  • Medium impact

    • Expanded Bindless support to be data driven amongst other things
    • Emplicit render resolution support for render pipeline which renders to a swapchain.
    • Shadow cascade pass optimization by rejecting more meshes based on frustum intersection between light and camera.
    • Add support to use the PipelineViewTag of a parent pass in the pipeline hierarchy
    • Refactor shading rate image initialization for OpenXr
    • Shader pipeline Optimizations made to the pipeline such that whenever the original *.shadervariantlist file changes, let’s say because the user added a new variant, or because the user modified an existing variant, only the new/updated variant will be rebuilt.
    • Shader Management Console - Add support to List all materials which use the selected option as well as added the functionality to process user-provided system option setting files, extension “.systemoptions”, live in the same path as the “,shader” file.
    • Volume Texture Support for AttachmentReadback
    • Added Volume(3D) Texture support to StreamingImage
    • Added support for initial visible geometry bus with mesh component controller bindings
    • Adds suport to setup tags on models and textures, which can then be queried and are used here to control min LOD
    • Added Bilateral Filtering to the SSR roughness blur.
    • Added Downsampled Linear Depth passes.
    • Added support for callable shaders to the RayTracing PipelineState and ShaderTable.
    • Several optimizations and improvements for transparency handling in the DiffuseProbeGrid.
  • Low impact

    • Add support for indirect ray tracing to Dx12 and Vulkan RHI backend
    • Add OnObjectSrgCreated event
    • For terrain use ray traced geometry that should exactly match the geometry in the forward pass
    • MeshMotionVector pass optimization to only render moved or always dynamic meshes to MeshMotionVector pass.
    • Enable the RHI to dump a data file containing the current state of gpu memory allocations in response to asserts & other events.
    • Allow to unregister a View from a pipeline
    • Add API to enumerate RHI factories
    • Add ShadingRate 4x1 and 1x4 support for variable rate shading
    • Add support to consider emissive intensity unit for raytracing materials
    • Add support for the user to switch render pipelines at runtime via Editor and GameLauncher viewport.
    • Refactor Vulkan validation layer loading
    • Add support for multiple shaders in one source file which is applicable to Dx12 RayTracing
    • Add better suport for calculating size of attachments within passes
    • Add support for handling app suspend/resume for Android
    • Add callback when RHI system has been initialized
    • Add progress bar for ddgi bake textures
  • Bug fixes

    • Various fixes for cached shadows.
    • Fix material editor/canvas viewport settings inspector data corruption
    • Fix various Vulkan validation errors across multiple pipelines and multiple features.
    • Various fixes related to MSAA
    • Fixing terrain mesh manager cleanup
    • Fix light accumulation in SSR raytraced fallback
    • Fix window resize related crashes on Vulkan
    • Atom Tools: Prevent asset selection widgets from displaying non existent assets
    • Atom Tools: Change file enumeration to add logging and use extension checks instead of wild cards
    • Atom Tools: Change cmake configuration files to create applications instead of executable
    • Fix “Device Lost” error when creating a UI Canvas with a texture larger than the window size.
    • Fix various vulkan crashes for Intel GPUs
    • Remove DX12 descriptor heap compaction as well as disable descriptor allocation if unbounded arrays are not supported
    • Fix the first-time Editor crash bugs
    • Fix issues with Vulkan instance creation if it failed due to a layer or an extension not being present.
    • Fixed indirect indexed draw for DX12
    • Add support to normalize the direction of simple spot lights on the CPU
    • Added AZ Event to notify Directional Light component config changes
    • Fix various issues related to iOS build to be able to run ASV samples on Iphone 8
    • Fix various rendering issue with high DPI
    • Added suport to not crash if a framegraph attachment is unused
    • Improve error-messages for Pass::ProcessConnection
    • Fix a diffuse probe grid issue when frame update count > 1

sig-network

  • Features:

    • Added sv_versionMismatch_check_enabled, allows disabling the server side checking the versions of network components for debugging purposes.
    • Added multi-threaded connection updates on the server to client updates allowing for higher performance. This is turned off by default but can be enabled with sv_multithreadedConnectionUpdates.
  • Bug fixes:

    • Fixed an incorrect state on clients when an entity is destroyed.
    • Fixed a crash in NetBindComponent in certain scenarios.
    • Small logging improvements.
    • Fixed code generator for Authority->Server network properties for certain configurations.

sig-platform

sig-simulation

Robotics gems (o3de/o3de-extras): Over 100 PRs merged in total for 23.10.

Known issues