October 23, 2017

Unreal Engine 4.18 Released!

By Jeff Wilson

From desktop to mobile in virtual reality or augmented reality, Unreal Engine 4.18 gives you the tools to deliver the types of content users demand. With expanded and improved platform support, you can deliver content wherever users consume it. In our relentless pursuit of a more efficient and streamlined development process, we continue to make updates and improvements to all of our tools so that you can deliver content faster than ever before.

With new lighting features like Volumetric Lightmaps and multi-bounce indirect lighting from Skylights, your worlds can achieve a greater sense of realism and believability. You can even bring the real world into yours with the new Media Framework features that enable real-time compositing. Or, build your world on top of the real world for the ultimate in immersion using Apple's ARKit and Google's ARCore.

Your potential audience is constantly evolving and getting content from new and different platforms. Unreal Engine 4.18 puts your content on every major platform with greater fidelity and higher performance than ever before. We made the desktop forward renderer available on recent iOS devices to enable high quality mobile and AR content that runs blazing fast. WebAssembly is now the default for HTML 5 projects so you can create complex games for the web that load quickly and run smoothly.

Unreal Engine 4.18 enables you to focus your time on the things that matter most. With the new global Find in Blueprints search functionality, you'll never waste time looking for something in multiple Blueprints ever again. We have also added improved Clothing tools, a new Physics Asset Editor, and advanced Material Editor preview support along with a host of other quality of life improvements that significantly speed up the development process.

In addition to hundreds of updates from Epic, this release includes 98 improvements submitted by the incredible community of Unreal Engine developers on GitHub! Thanks to each of these contributors to Unreal Engine 4.18:

Akihiro Kayama (kayama-shift), Alan Edwardes (alanedwardes), Alec Kosik (akosik), Andrey Yamashev (ayamashev), Artem (umerov1999), aziot, Cameron Angus (kamrann), Carsten Neumann (cneumann), Cengiz Terzibas (yaakuro), Chris Conway (Koderz), Christopher Reed (christopherreed), Cody C. (Mumbles4), Courtland Idstrom (Frugality), DaveC79, DavidNSilva, getnamo, Grant Peters (ggpeters), Guillaume Buisson (monsieurgustav), Harry Kim (shuaiharry), Ian Huff (IanMatthewHuff), IHappyDayI, Ilya (ill), Isabela Schulze (Ereski), Jason Calvert (jasoncalvert), Jesse Yeh (jesseyeh), John McBroom (jimbomcb), Jørgen P. Tjernø (jorgenpt), Josef Gluyas (Josef-CL), Kalle Hämäläinen (kallehamalainen), karanseqwb, Konstantin Nosov (gildor2), Kostas Nakos (jubanka), lwdingNT, Masanori Shinkawa, Mathias Hübscher (user37337), Matt Hoffman (LordNed), Maurice Laveaux (mlaveaux), Michael Allar (Allar), Michael Kösel (TheCodez), Mikayla Hutchinson (mhutch), minichris, Nick Pearson (Nick-Pearson), Nick Verenik (nverenik), Patrice Vignola (PatriceVignola), projectgheist, Rama (EverNewJoy), Roman Chehowski (RChehowski), Roman Maksymyschyn (miracle7), Sam Hocevar (samhocevar), Scott Freeman (gsfreema), Sébastien Rombauts (SRombauts), Sertaç Ogan (SertacOgan), steelixb, stfx, Triplelexx, Vivid Games - Engine Team (enginevividgames), Vladimir Ivanov (ArCorvus), XueBing (DarkSlot), Yujiang Wang (Luoshuang), yhase7, YuchenMei, Zeblote

Major Features

New: Volumetric Lightmaps

The new Volumetric Lightmaps enable high quality lighting on movable objects from low cost precomputed lighting! Characters, particle systems, instanced foliage, and other dynamic objects appear more grounded to the environment than ever before.

image alt text image alt text

Volumetric Lightmaps store precomputed lighting at all points in space by covering the entire Lightmass Importance Volume with 4x4x4 bricks of lighting samples. Bricks are placed with higher density near static geometry, where indirect lighting is changing the most. This data structure allows efficient interpolation of indirect lighting to any point in space on the GPU. The Volumetric Lightmap is interpolated to each pixel instead of once for the whole component and has more reliable detail than our previous Indirect Lighting Cache method, resulting in fewer cases of light leaking.

For more information and details on using Volumetric Lightmaps in your project, see the Volumetric Lightmaps documentation.

Precomputed lighting on Volumetric Fog

Volumetric Fog now interpolates precomputed lighting to its position in space using Volumetric Lightmaps enabling Stationary lights - which have their indirect lighting stored in lightmaps - to affect fog. Static and Emissive lights affect fog without costing anything, since they're all merged into the Volumetric Lightmap.

image alt text

Skylights are also now shadowed properly, preventing indoor areas from becoming over-fogged.

image alt text

1 - Skylight on fog is shadowed properly, 2 - Uniform skylight on fog has leaking

Performance

  • Volumetric Lightmaps on a third person character cost .02ms of GPU time on PlayStation 4. All Indirect Lighting Cache Rendering thread cost is removed.
  • Memory usage in Paragon's Monolith map went from 5Mb with the Indirect Lighting Cache up to 30Mb with Volumetric Lightmaps at default DetailCellSize settings. Memory usage can be seen under 'stat memory'.


Detailed Comparison

Volumetric Lightmap Precomputed Light Volumes / Indirect Lighting Cache
Efficient interpolation on GPU Costly interpolation on CPU
Per-pixel interpolation Per-object interpolation, even on instanced components
Applied to Volumetric Fog Cannot affect Volumetric Fog
Placed with high density around all static surfaces Placed with high density only on top of static surfaces, frequent leaking from low density samples
Border voxels are stretched to cover area outside Importance Volume Black indirect outside Importance Volume
Does not currently support level streaming Supports level streaming

 

New: Improved Static Skylight Directionality

Skylights used to be represented to Lightmass with a third order Spherical Harmonic, which didn't capture the detail present in a sunrise or sunset. We are now using a filtered cubemap with much higher resolution by default. Lightmass chooses the appropriate mip of the cubemap based on the size of the Final Gather rays to avoid aliasing. You can see the most difference in heavily occluded scenes, with a skylight cubemap that has a lot of brightness and color variation.

image alt text

1 - New filtered cubemap Static Skylight, 2 - Original Static Skylight

The smaller the opening, the more directional sky lighting will become. It is even possible to recreate a pinhole camera effect with a small enough opening.

 

image alt text

image alt text

Skylight source cubemap

Resulting sky lighting

New: Multi-bounce Indirect Lighting from Skylights

We now have support for multiple indirect lighting bounces from static and stationary Skylights through a new 'Num Sky Lighting Bounces' setting in World Settings -> Lightmass. Thanks to forum user Luoshuang for the first implementation of this feature.

image alt text

1 - Multiple skylight bounces, 2 - Single skylight bounce

Your materials need to have a high diffuse value for multiple skylight bounces to be noticeable in most cases. For example, with a diffuse value of .18 (18% grey), the second skylight bounce will only contribute .18^3 = .006 of the light's emitted energy which is very subtle. With a diffuse value of .5, the second skylight bounce will contribute .125 of the light's emitted energy and be noticeable.

As a bonus we also get multiple bounces from Emissive meshes:

image alt text

Lightmass uses a Radiosity Solver to compute multiple bounces for Skylights and Emissive meshes. Each bounce increases non-distributable build times, so use with care.

New: Apple ARKit iOS 11 Support

Unreal Engine 4.18 includes production-ready support for Apple's ARKit in iOS11 based on our collaborations with partners for Apple's keynote announcing the iPhone 8 and iPhone X.

image alt text

image alt text

We've streamlined workflows making use of existing framework components, added robust handling of the passthrough camera, and increased fidelity by improving performance and prediction. Download the updated ARSample project to see what's changed for 4.18.

Note: There have been significant changes since the experimental support for ARKit in Unreal Engine 4.17. ARKit projects created using 4.17 will require updating to work in 4.18.

Getting started

Getting started in now super easy. All you need to do is:

  1. Enable the appropriate ARKit plugin for your project.
  2. Check the bStartInAR property in Project Settings.
  3. Make sure you have a Pawn with a CameraComponent.

Known ARKit Issues

  • Device rotation is not fully supported yet. At the moment you should select Landscape Right as the only supported orientation for your project.
  • The only exposed function for hit-testing is HitTestAtScreenPosition_TrackingSpace. This returns the results in the CameraComponent's parent's space. In the default setup, that is the Pawn's space. To translate to world space we currently need to multiply the result by the parent's (e.g. Pawn's) world transform.
  • The function HitTestAtScreenPosition_TrackingSpace ignores the Types parameter; it will always hit-test against all the available surfaces and return results that can be manually filtered by checking the Types field of the FAppleARKitHitTestResult struct.
  • FAppleARKitHitTestResult does not populate the Anchor property; it is always nullptr.
  • World Scale is currently assumed to be default, and cannot be changed.

New: Google ARCore Developer Preview Support

Unreal Engine 4.18 contains official support for Google's ARCore developer preview which takes advantage of common augmented reality functionality in the engine and features improved handling of the passthrough camera.

SteamVR Support on Mac

We're happy to announce that as of 4.18, UE4 officially supports VR on Mac through SteamVR! All the same interfaces that you're used to on the PC are available on the Mac, so it's easy to transfer your project to Mac to give it a spin. The update comes alongside support for Metal 2 and many other runtime optimizations. Update to the latest release of SteamVR and give it a try!

image_24.png

New: Clothing Tools

We have added a completely revamped toolset for creating and configuring clothing in the Skeletal Mesh Editor!

There is now a Clothing pane for editing an expanded set of clothing-specific properties that provide more control over clothing constraints, self collision vertex culling, inertia scaling. Enhanced paint tools enable painting per-vertex clothing parameters directly on the mesh. The new paint tools include: Brush, Gradient, Smooth, Fill. Painted parameters can be switched out instead of overwriting to aid iteration.

The clothing tools have been Integrated with Physics Assets for collision authoring. A new LOD pipeline for creating and replacing simulation meshes in a Clothing Data object that includes a parameter mapping system for mapping your painted parameters onto new LODs or replacement geometry which estimates lower detail LOD parameters from higher detail LOD parameters! It is also much easier to create clothing data in the Skeletal Mesh Editor by right clicking the mesh section to convert.

This is in addition to all of the smaller bugfixes and improvements highlighted while the tool was experimental / beta.

Note: APEX file import still available for those preferring a DCC pipeline

New: Media Framework Improvements

Media Framework in 4.18 has been significantly updated and extended to support upcoming advanced use cases, such as real-time video compositing, time synchronization, simplified workflows, capture hardware & video-over-IP support, online media streaming, integration with Unreal Editor, and improved stability and performance!

The Media Framework API has been streamlined to improve compile times and updated to make use of modern features in C++11. In addition, high-level media player logic has been refactored from a push-based paradigm to a pull-based methodology and moved into reusable Engine-agnostic classes that enables better separation of concerns in media player interfaces.

Latency and Performance is improved due to a timecode-based sample processing pipeline with high-frequency ticking for time-sensitive samples - such as audio, camera tracking, and face tracking - and multi-stage ticking that can be used by any object for better frame utilization and predictable timing.

Audio playback is now integrated with new Audio Mixer API and makes use of new Media Sound Components (replaces Media Sound Waves) that are built on top of Synth Components which can be attached to level actors and used in UMG widgets. Media sample rate converter (previously supported only 16-bit @ 44.1kHz) now supports int8, int16, int32, float, double input samples and any sample rate (including variable rates) with up to 8 audio input channels and 1 and 2 output channels (surround sound is scheduled for 4.19). Spatial audio is also supported via Media Sound Components on Actors

On the video side, Media Framework now uses an external texture sampler API which enables video frame rendering without memory copies. This is currently only implemented for Android, but we plan to expand it to other platforms. We replaced problematic triple-buffering mechanism with sample queues and added better support for exotic video and pixel formats, and faulty encoders.

The Media Player Editor has been updated with a new Track format selector menu, audio/video capture device selector, cache state visualization (for player plug-ins that support it), Playlist controls, and the ability to save playlists. In addition, scrubbing is now more responsive and information overlays have been improved. There is also experimental support for text overlay visualization and 360 video viewport controls. Per-platform media player overrides for Media Source assets are also now functional.

Blueprint functionality has been added for querying media player tracks and track formats, enumerating audio, video and webcam capture devices, and adding files and URLs to media playlists.

All media player plugins have been updated to enable support for all of the dramatic new features available in the Media Framework in Unreal Engine 4.18.

Note: Some of this work, such as Sequencer integration, stereoscopic & 360 video support, and hardware accelerated 4K playback is still under active development.

New: Sequencer Improvements

We made several 'quality of life' improvements to Sequencer including:

  • Improved FBX import by adding the ability to import static/default transforms, add cinematic cameras if a corresponding camera doesn't exist in the map, and the option to force front x axis
  • More efficient track, keyframe and path trajectory drawing. Overlapping keys now draw with a red border.
  • Editing tools including slip editing for audio, skeletal animation, shot tracks.
  • More drag and drop support - You can now drag onto shot tracks, subscene tracks camera cut tracks and sequence recorder.
  • Warmup on shot boundaries when movie recording from a master sequence.
  • Added the ability to rerun construction scripts in editor while scrubbing.
  • Cine camera look at with roll

Sequence recorder improvements such as interpolation and tangent settings for animation recording keys and drag and drop support.

New: Improved Physics Asset Editor

The Physics Asset Editor (formerly known as PhAT) has been completely overhauled to significantly improve usability and expand functionality! The UI has a new look and feel with an upgraded Skeleton Tree view that provides better filtering and display of all scene elements and a new Graph view for setting up constraints between bodies visually using nodes. You can even set up of loops of constraints - something that was not possible before.

image alt text

UI elements have been sanitized. Many things have moved or changed to more logical locations. For example, the Show menu now allows access to animation-related settings like in the Animation Editors. Animations can now be chosen at any time, paused, scrubbed etc. (previously this was only available once simulation had started). Simulation can also be engaged and disengaged at any time while animating and works in a similar way to the Level Editor, with a single prominent "Simulate" button and options underneath.

Additional Updates and Improvements:

  • Time dilation works with animation and physics together and is quickly set in the viewport menu, like in the Animation Editors.
  • Recording is now controlled from the transport controls like in other Animation Editors.
  • Physical animation and constraint profiles have a revamped UI. This allows easy selection, assignment and management of constraint and physics profiles.
  • Constraint & body mode are no more. We now display constraints and bodies together. Rendering of each can be enabled/disabled and filtered in the tree view & viewport.
  • New body creation has been moved to a new 'Tools' tab instead of the modal dialog we had before. This improves iteration times on new assets, removing 3 clicks each time. The same widget is re-used when we create new Physics Assets, as before.
  • Physics Assets can now be created directly from the Content Browser. Previously they could only be created from a hidden context menu option of Skeletal Mesh assets.
  • Operations that can be performed on bodies/constraints are now in all context menus, in addition to the keyboard shortcuts required previously.


New: Multi-Convex Generation for Physics Asset Bodies

You can now auto-generate physics bodies using multiple convex hulls per bone. This allows non-convex geometry to be approximated using multiple convex hulls.

image alt text

New: Animation Montage Time Stretch Curve

You can now add a Time Stretch Curve track to an Animation Montage to control the play rate! This enables you to maintain the normal playback speed of your Montage while selectively slowing other parts of the Montage. For example with the Time Stretch Curve, you can author just a single attack animation and control and optimize its looks for a great range of playback times.

To use the Time Stretch Curve, create a Float Curve named MontageTimeStretchCurve in your Montage and add keys to define your curve. If you need a bit more control, you can use the Time Stretch Curve properties inside the Asset Details panel to determine how the curve is sampled as well as for debugging purposes, inspect the number of markers created under the hood.

New: RigidBody Anim Node Improvements

The RigidBody node now supports a root bone simulation space option. This is useful for the case where an attached Skeletal Mesh is counter rotated from a player capsule. We've also exposed inertia scaling and constraint dominance in the Physics Asset Editor which greatly improves stability and jitter.

New: Blendspace Editor Usability Improvements

You can now drag the Previewing Pin (green) across the grid instead of having the pin follow the cursor while holding down the Shift key. State-sensitive tips on the actual Blend Space Grid have been added to provide in-context explanations of features and functionality.

New: Global Find in Blueprints

It is now possible to perform a "Find in All Blueprints" search without also requiring a Blueprint Editor window to be open. Up to 4 global “Find in Blueprints” tabs can now remain open and/or docked in a different window at any time. These are now available in the main “Window” menu.


In the Blueprint Editor menu, choosing Edit->Find in Blueprints (or pressing CTRL-SHIFT-F with the Blueprint Editor window in focus) will also now open a new global Find in Blueprints tab (or switch to the first global tab that's open and unlocked). This tab will remain open even after the Blueprint Editor's window is closed if the tab is open or docked somewhere outside of the Blueprint Editor's window.

The global Find in Blueprints tab also includes a Lock button so that the current set of results can be locked to the current tab. Invoking Edit->Find in Blueprints from the Blueprint Editor will open up a new global Find in Blueprints tab if any of the currently-open tab(s) are locked.

Choosing Edit->Find (or pressing CTRL-F) in the Blueprint Editor menu will still open a local Find Results tab for performing a search within the current Blueprint only. Clicking the "Find in all Blueprints" button will allow you to perform the same search over all Blueprint assets in a global Find in Blueprints tab.

The new behavior can be switched off if necessary by unchecking the option titled "Host Find in Blueprints in Global Tab" in Editor Preferences->Blueprint Editor->Workflow.

New: Improved Cross-level Actor References

Cross-level Actor references are now better supported using Soft Object References, which were previously called Asset IDs/AssetPtrs. If you create a Soft Object Reference property pointing to an Actor, they now have an improved UI that will show rather they are unloaded or broken, as well as the full Actor ID they point to:

image alt text

Cross level references like this will now correctly be fixed up if the referenced Actor is renamed or moved using the "Move to current level" option. It will attempt to check out and resave any other levels/sequences that point to that specific Actor. It will also warn you before deleting Actors that are referenced in this way. They also now work correctly in Play In Editor with level streaming. Newly created Sequencer Actor references are now Soft Object References, but older Sequences will have to be fixed up with "Rebind Possessable References" and resaved first.

Note: As part of this update, the native types FStringAssetReference and TAssetPtr were renamed to FSoftObjectPath and TSoftObjectPtr.

New: In-Editor Localization Preview

We have added the ability to preview your game's localization when Play in Editor (PIE) is running and in the UMG editor to preview widgets in different languages!

  • This is configured by the "Preview Game Culture" setting ("Editor Preferences" -> “Region & Language”), and will automatically be active when Play in Editor (PIE) is running. The preview language is also passed to any standalone games that are launched via the editor.
  • While a preview is running, all editable text fields are locked-down (read-only) to prevent accidentally overwriting source data with translation data. You can also use this new lock-down feature to prevent any localization changes in your project by setting "LockLocalization" to "True" under the "Internationalization" section of either your DefaultGame.ini or DefaultEngine.ini configuration files.

 

New: Array Reordering

You can now drag and drop elements to reorder them within an array! All arrays set up through Blueprints and C++ are reorderable by default. To opt out of the default behavior and create a fixed order array in C++, use the EditFixedOrder metadata.

New: Advanced Material Preview Viewport

The Material Editor and Material Instance Editor now have Advanced Preview Scenes for previewing your material in the viewport. This enables you to change view settings such as the scene lighting and environment cube map, as well as to rotate the environment around your preview mesh in the scene.

You can change the settings for the preview under Window > Preview Scene Settings.

image alt text image alt text

New: Platform SDK Upgrades

In every release, we update the engine to support the latest SDK releases from platform partners.

image alt text

  • IDE Version the Build farm compiles against
    • Visual Studio: Visual Studio 2015 Update 3
    • Xcode: XCode 9.0
  • Android:
    • NDK 12b
    • Installer 1r6u1
  • HTML5: emscripten toolchain to 1.37.19
  • Linux: v10_clang-5.0.0-centos7
  • Steam: 1.39
  • Oculus Runtime: 1.17
  • SteamVR: 1.39
  • Switch: 1.7.0, 3.5.1 + NEX 4.2.0; Firmware Version 3.0.1-1.0
  • PS4:
    • 4.508.111
    • Firmware Version 4.730.001
    • Supported IDE: Visual Studio 2015, Visual Studio 2013
  • Xbox One:
    • XDK: June 2017 QFE3 for all all Xbox consoles (XB, XB1-S, XB1-X)
    • Firmware Version: October 2017 Preview 3 (versuib 16291.1000.170913-1900)
    • Supported IDE: Visual Studio 2015
  • macOS: Support for macOS 10.13 High Sierra has been added as a fully supported platform!
  • iOS: SDK 11
  • tvOS: SDK 11

 

New: Visual Studio Code Supported on Windows, Mac and Linux

You can now use Visual Studio Code to write code on all UE4 host platforms. To use it, select "Visual Studio Code" as your preferred IDE from the editor preferences dialog, or add the -vscode argument when generating project files on the command line. All platforms are also required to have the .NET Core 2.0 runtimes installed, which can be obtained from the Microsoft .NET Core website .

To use Visual Studio Code to build and debug all project types, some additional extensions are required. On all platforms, make sure the Microsoft C/C++ extension, and the C# extension are installed. On Linux and Mac, the "Mono Debug" extension is required to debug C# projects, and the “LLDB Debugger” extension is required to debug C++ projects. Also, in order to debug C# projects, the mono runtime must be installed:

  • On OS X: brew install mono
  • On Linux: sudo apt-get install mono-complete

image alt text

New: Simplified iOS certificates and signing

When using the remote toolchain to build iOS on a remote Mac from your PC, the certificate and provisioning setup in from the Project Settings on your PC. This means it's no longer necessary to install your private key or certificates using Keychain Access on the remote Mac.

New: Desktop-Class Forward Renderer on iOS (Experimental)

Unreal Engine 4.18 contains the Desktop-class Forward Renderer used in the Wingnut AR demo at WWDC 2017! It is supported on iOS devices with an A9 or later processor running iOS 10.3 or newer, with an A10X or better running iOS 11 strongly recommended.

image alt text

This rendering technology brings the same support physically based shading, reflections, lighting, and shadowing to the latest iOS devices. These features are more demanding than the existing mobile renderer on the hardware and are experimental so some features may not function correctly on all devices & OS revisions. The following features are known not to work: GPU skin-cache, GPU morph-targets, Atmospheric Fog and Multi-Sample Anti-Aliasing.

New: Gradle Enabled by Default for Android

Gradle is now the default for packaging Android APKs. Ant is still available if necessary by disabling the "Enable Gradle" Android project setting, but it is recommended to transition to Gradle since Ant is considered depreciated.

Note: If you previously did not accept the Android SDK license agreement by checking "Enable Gradle", you will need to do so by clicking on the “Accept SDK License” button in the Android Project Settings. An error will be shown if you try to package or launch on without accepting the license.

New: Android Camera Plugin

Unreal Engine now has an optional plugin to expose access to the front and back cameras on Android devices. Enabling the plugin adds a new Android Camera plugin Project Settings panel to select Android Manifest requirements.

image alt text

New: HTML5 Optimized Browser WebAssembly is now set to default

WebAssembly is now enabled by default for HTML5 projects. With support for the WebAssembly standard from many of the major browser makers, you can realize massive improvements on asset sizes, browser load time, and runtime performance when publishing to the web. The previous optimized HTML5 output ASM.js has been decommissioned and removed from the code base.

Note: Multi-threading is not yet available on WebAssembly. While ASM.js did support this, WebAssembly (for now) can only run in single threaded mode. However, multi-threading is a major feature push for all browser makers in the next coming months.

New: LLM Low Level Memory Tracker

The new LLM Low Level Memory Tracker enables you to track all memory once and only once,* with nothing missed and nothing counted twice!

image alt text

Every allocation made by the engine or game is assigned a tag value identifying the category to which it belongs. The total of all of the categories will add up to the total amount of memory used for the game. The tags are applied using tag scope macros. Any allocation made within that scope will be given the specified tag.

LLM stats can be viewed in game using 'stat LLM' or 'stat LLMFULL'. The current total for each tag will be shown in MB. LLM also writes out the stat values to a csv allowing the values to be graphed over time.

Due to its nature, LLM requires support to be added for each platform. Currently LLM supports PS4 and XboxOne. Windows is supported as an experimental release.

New: Improved XGE (Incredibuild) Shader Compiler Support

We've made improvements to the XGE (Incredibuild) shader compiler, which have greatly reduced the stalling and latency seen in the old system and allow us to stream new shader jobs asynchronously into XGE.

The new system performs much more efficiently, and can greatly accelerate shader compilation in all situations, including cook on the fly, cook by the book, and iterating on shaders within the editor.

These improvements are enabled by default, but require at least Incredibuild version 8.01 or higher. The engine does a version check on startup and falls back to the legacy XGE shader compiler if a supported installation is not found. As with the old system, the XGE shader compiler itself must be enabled on the command line via "-xgeshadercompile", or by setting “r.XGEShaderCompile” to 1 in ConsoleVariables.ini.

Unreal Audio Engine (Beta Preview)

Development continues on the new Unreal Audio Engine. This release brings support to more platforms, an updated plugin architecture, and some exciting new features. These new Unreal Audio features should still be considered beta. We will be focusing on performance and stability in coming releases.

Along with Windows, Mac, iOS, Android, XboxOne, and PS4; we have added support for the new Unreal Audio Engine on Nintendo Switch, Linux and HTML5. The new Unreal Audio Engine has been enabled by default for Linux. Significant fixes and improvements were also made to all the other backends first released in 4.17 and 4.16.

Audio Plugin Architecture Improvements (New Unreal Audio Engine Only)

Audio plugins are useful for audio effects that need to override or extend core features of the audio engine. Object-based binaural source spatialization, source occlusion, and master reverb are best achieved through a much deeper integration into the core mixing engine. These effects require special audio plugin support.

image alt text

  • Enhanced Audio Plugin architecture enabling a smoother integration for 3rd party developers wishing to override core mixing features
  • Empowering projects to mix and match plugins overriding: Source Spatialization, Source Occlusion, and Reverb
  • Can now swap out different plugins without restarting the Editor!

 

New: Source Bus (New Unreal Audio Engine Only)

Source Buses are a powerful new feature which demonstrates the flexible routing capabilities of the New Unreal Audio Engine and allows multiple Sound Sources to send and sum into a single real-time Source. Source Buses are derived from Sound Base which allows them to be played and utilized in the same way Sound Waves or Sound Cues are employed—whether spatialized as a 3D mix bus or as a means to maintain Source Effect persistence, Source Buses will become a invaluable tool for Audio Designers and will set the stage for exciting features in the future.

  • Source Buses allow any audio source to route their audio to a 3D audio source, including other source buses (including themselves, creating a runtime Audio feedback system).
  • Source Buses are a new USoundBase type, so they can be played as if they are another sound in our normal sound BP and C++ APIs, audio components, and ambient actors and can have their duration specified to become either a one-shot bus or, if specified as 0.0, will be treated as a looping source with indefinite duration.
  • Source Effects and Submix Sends can be used with Source Buses like normal sound sources
  • Other Sources send their audio to buses in an analogous way to Submix Sends and can opt to only send their audio to Source Buses vs. also sending their audio to Submixes.


New Submix Effects (New Unreal Audio Engine Only)

We have updated our Synthesis Plugin with brand new time-based Submix Effects ranging from a simple Delay to a flexible computationally efficient reverb allowing you to create complex and interesting interactive spatial effects:

  • Delay: Simple multichannel delay line that can be modulated at runtime from Blueprints. This effect simulates a simple broadcast delay on audio sent to the given submix which is running with this effect applied and can be used for sub-millisecond synchronization with animation or other gameplay systems.
  • Tap Delay: Complex multichannel delay effect that allows for an arbitrary amount of taps ("echoes") that can be independently added, modified, and removed through a powerful Blueprint API during runtime. Each tap is parameterized by tap attenuation, tap azimuth, and tap delay. This is useful for simulating the doppler effect, emulating early reflections, and many other delay-based mix effects.
  • Flexiverb: Computationally inexpensive single-channel reverb algorithm optimized for maximizing echo density with as few multiplies as possible. This effect is best suited for emulating small room reverberation on platforms where CPU resources are limited.

 

Improved Attenuation Settings

We have improved Attenuation Settings with much needed attention given to clarity and organization. Improvements include displaying Attenuation Settings according to Categories with special Edit Conditions to clarify which Attenuation Settings features are currently utilized.

image alt text

New: Refactored VR / AR Camera System

Unreal Engine 4.18 now contains a default camera implementation for both Camera Components and raw view that includes late-update automatically handled by the engine. This default camera implementation displaces itself (relative transform) equal to the real-world displacement of the device from its calibrated origin when there is a CameraComponent in the view target. As a result, the API that hardware developers have to implement has a much smaller footprint, resulting in a huge efficiency boost.

Note: All existing platforms have their camera implementations stripped out and replaced by the default camera implementation.

The full list of release notes is available on the forums.