We’re excited to share a few of the new features now available on the Master branch on GitHub. To be able to try out these new features, you will need to download the source code for the Master branch and build the Engine yourself. For more information about how to build the Engine from source code, please see this page. The Master branch on GitHub is constantly being updated and is not quality tested so it may be potentially unstable. We do not recommend using the Master branch for project development. If you wish to wait, these features will be made available to all in an upcoming official release.
Ray Traced Distance Field Soft Shadows
There is a new dynamic shadowing method which works by tracing a ray through the mesh distance fields (the same data used by DFAO) to the light.
You can enable it with ‘Use RayTraced DistanceField Shadows’ on a light, in projects which have the GenerateMeshDistanceFields Project setting enabled.
The nice thing about distance fields is that when you do a ray trace, you get approximate cone occlusion too for about the same cost.
This means we get soft area shadows with sharp contacts!
Here’s a directional light with LightSourceAngle of 2. The self-shadowing in the distance is still detailed, and long shadows get softer.
Directional lights can combine these Ray traced shadows with the usual Cascaded Shadow Maps to get the best of both approaches.
CSM will cover up until ‘Dynamic Shadow Distance’, and Ray Traced Distance Field shadows will be used from there to ‘DistanceField Shadow Distance’.
This is ideal because Cascaded Shadow Map cost goes up incredibly fast as you increase the shadow distance, and it has biasing / leaking issues in the distance as well.
This is using CSM up to a distance of 4500, and Ray traced shadows up to 30,000 in a fully dynamic scene.
Point and spot lights work too. ‘Source Radius’ is used to control how large the light source is and therefore how large the shadow penumbras are.
Distance fields only support uniform scaling at the moment (mirroring is ok). Deformation through world position offset can’t be represented, eg animated foliage.
Only static mesh components generate distance fields currently. Other component types can still cast shadows by using ‘Cast Inset Shadow’.
Body Mass Override
You can now override the body mass of a component!
The default behavior of auto-computing it using physical material will still work, but you can now specify mass manually.
This also works in PhAT where you can specify the mass of each individual body in the ragdoll.
New BP Menu System
The new Blueprint menu system is now enabled!
What has changed?
Ideally your workflow changes for the better, and you now have more accurate results presented to you in the context menu.
Honestly though, you should not see too many changes. The nodes you expect to be there should be there.
There are also, now, some settings you can tweak to customize your menuing work flow. They are found in the Blueprint editor preferences.
Why the refactor?
The old system was fragile and entries would disappear as new ones were added (and we would not catch it until a month or so later).
The new system is more straight-forward and (hopefully) more versatile.
What actions do I need to take?
Game teams will have to adapt any game nodes they have created. Besides that, nothing.
You can switch back to the old system with the “Use Legacy Menuing System” setting (in Blueprint Editor preferences).
BP Editor Orthographic View
Components mode within the Blueprint editor now has orthographic view options!
We have also switched the view options drop-down to the down arrow icon.
Fixed Function Layer Blend Node
There is now a new node for blending material layers called MatLayerBlend_TenLayerBlend!
This is a node that should make working with material layers more straight forward.
This is a fixed function node that supports blending of a maximum of 10 layers.
If you do not use a layer input or it’s mask the compiler will optimize it out.
Here is what the node looks like:
Hopefully this is easier to read and understand which layers draw on top. Before you had to follow the order of operations.
Now you find the bottom most layer and work your way up.
Added event when an import fails, with extension information.
Adding original key code to keyboard events and exposed AreCapsLocked from input events.
This will be needed for the web browser module so that keys like delete can processed as their character code comes through as 0.
Created new icons for the various Play in Editor modes.
Created an accessor and mutator for ForwardAxis in SplineMeshComponent.
Changed Emscripten setting read function to handle comments. Also added more logging, changed autoSDK setup.bat to output helpful variables into emscripten file.
Files being overwritten or removed are now properly verified before backing up.
Switched off commandline overrides for cook on the fly deploys.
- Change GetBoneLocation, GetBoneQuaternion to use space enum instead of ints.
Added a tooltip to show multi-line descriptions in the source control history.
Added line break iterator to text display on template project tiles.
- Made starter content button on New Project dialog a real drop down.
**Behaviour Trees **
Disabled Delete and Rename entries in Blackboard editor for inherited keys.
Prevented Blackboard rename and delete hotkeys from operating on invisible widgets.
Sub-graphs for composite decorators and run Behavior nodes are now 'complex' preview tooltips.
Added proper material picker to BSP surfaces.
Moved Material Instance parameters category to the top of the Details tab in the Material Editor.
Curve graph min and max are now preserved during blueprint changing/saving.
Static Mesh Editor
Creating new static mesh collision enables collision view (if not already enabled).
Modified the Composite node tooltips to be static when the documentation excerpts are shown.
Renamed text references from TextureGroup to LODGroup in Texture Editor.
Created LOD Group for 2D Pixels, which disables mipmaps and filtering.
Added support for Back and Forward mouse buttons to Tutorials As with the content browser, these buttons only function as back and forward when they are clicked within the bounds of the widget.
Adding asset to open when starting tutorial.
Tutorial content 'Next' button is now green, has text and is customizable.
Tutorials are now restarted when taken if they were previously completed.