Unreal Engine 4.15 Preview


A Preview of the upcoming 4.15 release is available now on the Launcher and Github. We have made this Preview available so that our developer-community can help us catch issues before the final release. As fixes are implemented, we will release updated previews throughout the development cycle. Please be aware that the preview releases are not fully quality tested, that they are still under heavy active development, and that they should be considered as unstable until the final release. Developers should not convert their projects for active development on preview releases. Please test on copies of your project instead.

We encourage users to check out the preview to try new features and inform us of any issues which we may not have caught. Links to known and fixed issues for this release are provided below. If you discover any additional issues with this preview release, please report them using the guidelines in the link: How to Report a Bug.

Known & Fixed Issues

4.15 Preview Summary

This list provides a brief summary of updates in this Preview which may benefit from additional testing. Full release notes will be made available with the final 4.15 release. We may not be able to provide additional information about updates at this time.

  • Rendering Updates:

    • Finalized Texture Streaming Optimizations that were started in 4.13 and 4.14.

      • Textures used by non visible & hidden components are streamed with one less mips, as a prefetch.

      • Reducing time taken for the visible textures to stream in.

      • Reducing the CPU time taken by the streamer.

      • Mesh UV densities are now computed per material instead of per mesh. New data also takes into account lods. This resolved most issue were texture would appear low resolution. Also, there is now a wider texture streaming support from component, including particle systems and instanced meshes. That resolved other low resolution issues and sometime high memory consumption.

      • The texture streamer can now automatically fit to different memory budgets, without manual tweaks. The streamer will select which textures need to be reduced using different heuristics to minimize visual impact.

      • New visualization tools for debugging.

    • New Nodes have been added to the Material graph

      • Commonly request mathematics nodes: Sine, Cosine, Tangent, Arcsine, Arccosine, Arctangent, Arctangent2, ArcsineFast, ArccosineFast, ArctangentFast, Arctangent2Fast, Round, Truncate, Saturate

        • The nodes marked with the “Fast” tag will execute approximations instead of the real instructions. These can give a worthwhile performance improvement to materials but have input restrictions and precision tradeoffs.

      • PreviousFrameSwitch has been added to allow specific overrides for world-position offsets in complex materials used during motion vector generation.

      • Pre-Skinned Local Normal works in a similar way to the Pre-Skinned Local Position node added in the 4.14 release but returns the local surface normal for skeletal and static meshes. This opens the door to more local-space, mesh aligned effects or advanced use-cases such as writing dynamic surface data to a mask read-back in another material.

    • Metal support has been extended to use many of the new API & shader language features added by Apple in macOS 10.12 Sierra & iOS 10.

      • Enabling the new Metal v1.2 standard allows all Metal platforms to use Unordered Access Views in pixel shaders

      • Full support for Unreal Engine’s tessellation features has been implemented

      • Experimental support for HDR rendering on Macs with an appropriate display built in

  • Sequencer Updates:

    • Animation Blending by weight is supported.

      • You can add weight by expanding each track, and key the value in the desired timeline

      • There is no limit to how many animations it can blend at the same time but as for full body animations, the weights will be normalized, so that it doesn’t under/over scale the mesh. For additive animations, the weights will be kept.

    • Audio volume and pitch curves have been added.

  • Blueprint Updates:

    • Cooking Blueprints to C++ is no longer an “experimental” feature.

      • This is enabled in the editor through your project’s Packaging Settings: Blueprints => Blueprint Nativization Method.

      • It can also be invoked by passing -NativizeAssets as a parameter to the UAT BuildCookRun script.

      • Generated source is saved as a plugin in your project’s intermediate folder, under: …\Intermediate<TargetPlatform>\NativizedAssets

      • More information is available in the documentation.

    • Map & Set containers are now available in blueprints. They are a collection of items which guarantee they contain only unique items, with no repeating entries.

      • The Variable Type control is now a drop down, allowing you to select ‘Single Variable’, ‘Array’, ‘Set’, or ‘Map’. When ‘Map’ is selected a second drop down for the ‘value’ type appears.

      • For maps the following operations are available to blueprint users: Add, Remove, Find, Contains, Keys, Values, Length, and Clear.

      • Set supports: Add, AddItems, Remove, RemoveItems, ToArray, Clear, Length, Contains, Intersection, Union, and Difference.

      • Set and map variables declared in C++ can now be exposed to Blueprints.

      • NOTE: Replication of map and set properties is not yet supported in C++ or Blueprints.

  • Framework Updates:

    • A Raw Input plugin has been checked in to provide support in Windows for steering wheels, flight sticks, and other non-XInput supported devices.

      • All of the Vehicle templates and Vehicle Game* have been configured to work with the Logitech G920. (*Vehicle Game not yet updated for 4.15 Previews)

      • Adding new devices is as easy as setting up a configuration for them in the project settings or editing DefaultInput.ini. (Vendor and Product ID can be discovered from the driver properties)

      • We need your help! - After you successfully configure your devices (figuring out what axes represent brake, gas, steering wheel and necessary modifiers to represent brake/gas as 0 to 1 and the wheel as -1 to 1), please share your .ini settings back with us so we can ensure these devices work without additional setup in the future.

    • A Force Feedback Component can now be added to Actors and exist in the world. It can have attenuation properties to determine the intensity of the playback of the force feedback pattern based on the distance between the player and the effect. The attenuation properties can either be specified directly on the component or you can create a Force Feedback Attenuation asset in the content browser and reuse it for multiple components. Force Feedback Components can also be spawned into the World from blueprints in a similar way that audio, decals, and emitters can.

    • PhysX Vehicle Support is now an optional plugin. This makes it easy for games that are not using vehicles to exclude this feature and save disk space and memory. This work also adds several useful physics extension points to Engine (e.g. OnPhysSceneInit/Term, OnPhysSceneStep) to make it easier for other developers to write their own similar systems.

    • The Blendspace Editor has been overhauled with an updated UI and internal rework.

    • Save Pose Snapshot has been added to capture a runtime skeletal mesh pose in blueprints. Once the pose has been saved, you can use it in the anim-blueprint like any other pose, or save it to a variable.

    • You can Link a Curve to a specific Bone in the skeleton. This supports LOD and Layer Blending, and can be accomplished in the Anim Curves window.

    • Physics objects now have Mass Properties debugging visualizers to see center of mass and inertia tensor. (Show -> Advanced -> Mass Properties)

    • Gameplay Tags have been improved and are now fully supported. They are implemented by the GameplayTag structure in the GameplayTags module and are registered in a central dictionary, which can be accessed from the new GameplayTags project settings view. If you enable the “Import Tags from Config” option, tags can be added from the editor through the Gameplay Tag List on this page, or from the UI used to select tags. Once you have added Tag properties to your data, you can query them from either Blueprint or C++ and use them to change functionality. The BlueprintGameplayTagLibrary has several useful functions. To actually set up tags, add GameplayTag or GameplayTagContainer variables to your data or functions, then you can set the tags from selection UI.

  • Mobile Rendering Updates:

    • ES 3.1 / Metal / Vulkan editor feature level preview no longer experimental. This mode will emulate the feature set available to iOS Metal, Android GLES3.1 and Android Vulkan devices.

    • Mobile devices can now use Custom Stencil in post-processing materials. This requires MobileHDR option enabled and non-Mosaic device. To enable this feature in your project go to Project Settings -> Rendering -> Postprocessing and set ‘Custom Depth-Stencil Pass’ to ‘Enabled with Stencil’.

    • You can now disable shader permutations for lighting setups that your mobile game does not require. The settings available under Project Settings -> Rendering will reduced shader memory usage and App package size.

    • Android applications can now be packaged to support a third-party Graphics Debugger. You can choose from either the Mali Graphics Debugger or Adreno Profiler depending on your device’s GPU. Graphics Debugger options can be found in Project Settings -> Android. You first need to download and install these debuggers from the GPU vendor’s website, and they each require some small amount of additional setup to configure your device for debugging. Be sure to to follow the directions that appear after selecting the debugger type. Also note that if you package your app to support a particular GPU debugger, it may not function correctly when run on a device with a different GPU.

  • Editor Updates:

    • Reroute nodes have been added to the Material Editor.

    • Font Asset Improvements have been made to address issues with memory consumption and stability of Font assets using runtime-cached fonts. Font assets have been split in two: Font and Font Face.

    • Font Face is now the asset that stores the font data, and these assets are simply referenced by the Font assets. This means that the same font data can be re-used for multiple font assets, or even multiple typefaces within a Font asset. Existing Font assets will automatically upgrade their internal font data into embedded Font Face assets during load. You can use the Font Editor to split these embedded assets out into real Font Face assets that may be edited and shared.
    • (Experimental) Content Hot-Reloading is available for testing. To enable it you need to go to your “Editor Preferences”, and enable “Content Hot-Reloading” under the “Experimental” section. Once enabled all of the in-editor source control operations that affect assets will use content hot-reloading. You also gain a “Reload” option under “Asset Actions”. This can be used to forcibly reload a package from disk.

  • Build Updates:

    • The codebase has been converted to a “include what you use” model, where every header includes other headers it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Existing game code can continue to include those files as before, but we measure the engine compiling 25-50% faster!

      • Every header now includes everything it needs to compile.

      • Every .cpp file includes its matching .h file first.

      • No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.

      • No engine code explicitly includes a precompiled header any more.

  • Platform Updates:

    • New Location Services now provides access to GPS data for Android and iOS. A new OnLocationChanged delegate is available and Blueprint nodes are provided under Services->Mobile->Location.

    • Streaming audio for iOS has been implemented.

    • Remote notifications for IOS are now supported. This includes callbacks in the game for handling the notification as well as properly setting up all plist information needed by the application for the app store.

    • We have added support for ARM64 (AArch64) devices running. Right now only boards with desktop GL are supported.

    • ‘Launch On’ to Remote Machine from the Editor or UFE.

  • VR Updates:

    • The PlayStationⓇVR Aim Controller is now supported through the new AimController plugin. To activate, simply change the “Hand” value to “Gun” on your Motion Controller component.

    • (Experimental) Monoscopic Far Field Rendering for mobile VR is available for testing. With content that has many distant objects, this can benefit performance. To enable, select the checkbox under Project Settings -> Rendering -> VR. We don’t currently support both mobile multi-view and monoscopic far field simultaneously and mobile HDR needs to be disabled.

  • VR Editor Updates:

    • Updated Quick Menu and Radial Menu to quickly access editor functionality.

    • The new number pad menu appears when you click on an editable text field.

REMEMBER: Please report any new bugs you find by following the How To Report a Bug Guide

Nice! :cool:

Is it wrong I’m most excited about faster engine compile times? :smiley:

So, no ARM64 for Android ? :frowning:

Sweet! Will you eventually (4.16 perhaps?) support both multi-view and monoscopic rendering working at the same time to maximize performance with and without mobile HDR ?

Oh baby, too bad it wasn’t a true stability release…

I am surprised no fix for the Motion Controller replication bug still? Even though there’s been a community plugin available for 6 months that fixes it and a few PRs?

Feature wise it seems rather small… experimental now real…updates to API’s. Does sound like stability release to me…? Let’s hope though…!

Epic team, could you patch BSP in 4.15 to mesh conversion so that “Light Map Coordinate index 0 to 1” is default and “Light Map Resolution” changes to default value of static mesh. This is useful for those who use BSP to create simple meshes so they wont stumble onto black mesh. This is good simple suggestion until Geometry 2.0 replaces BSP.

Best regards.

Are the unresolved issues in 4.15 things that will absolutely get fixed in the final 4.15 update? Mostly curious about this one specifically - Unreal Engine Issues and Bug Tracker (UE-39884)
Edit: Nvm, somehow missed the targeted for 4.15 release bugs :smiley: Thank you for fixing this issue :smiley:

Could probably go into a bug report on AnswerHub w/ post in the Feedback section for a good measure :wink: This way it will get more traction.

Looks like awesome update. Epic, thanks again! :slight_smile:

• Reroute nodes have been added to the Material Editor!!!

i know there is a lot of technical wizardry going on in these updates but things like this make smile! THANK YOU!

Have they updated their Oculus SDK support to version 1.10.1 yet? I’m going nuts waiting for proper Oculus Avatar support in a launcher version of the engine…


Oh, that’s some awesome news, can’t wait to give it a try !!

Great stuff! Epic never fail to deliver fantastic updates.

What does the vehicle code moving into plugin mean for a existing mixed (cpp+blueprints) project centered on vehicles? How much work should I brace myself for when 4.15 gets stable?

Will try this asap, very excited as usual :slight_smile:

This sounds great, but why limit it to mobile VR? PC VR could benefit from this too.

  • Dave

Haha oh wow, did you make that? Really cool