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.
Engine News
New Features
Area Shadows for Stationary Lights
Previously Stationary lights would always generate sharp shadows with uniform penumbra sizes. There’s a new property which allows them to generate area shadows instead. The ‘Light Source Angle’ (or ‘Source Radius’ for a point light) controls how soft these shadows are.
Uniform penumbra
Area shadows (Light Source Angle 1)
Area shadows (Light Source Angle 5)
Uniform penumbra shadows are still better at dealing with low lightmap resolutions, so those stay the default.
Previously the uniform penumbra size was controlled with an obscure project setting, now it is controlled by the ‘Light Source Angle’ property, just like the area shadows are. Double the source angle to get twice as soft shadows, etc.
There’s also a new optimization for maps which only use a single stationary light channel (eg one Stationary Directional light). Their shadowmaps will be packed into a single channel texture instead of a 4 channel texture, for ¼ the memory cost.
UI Depth Layers
Widget Components in screen space now automatically sort based on distance from the viewer, ensuring the closest screen space widget component is always on top of the other components.
There’s now a function in the game layer manager (what UMG uses to put widgets on the viewport), for native code to define new kinds of layers. The Widget Components now define their own shared layer that all widget components added in screenspace add to, instead of adding directly to the viewport.
By doing this, the shared layer widget can properly sort all widget components against one another based on distance to the camera. Previously it was based a manual ZOrder, or whoever was added to the viewport first.
Additionally, many improvements have been made in the area of eliminating visual artifacts in Slate,
- Fixed widespread early clipping of widgets.
- Widget Components / Tooltip contents have a high reduction in ‘jiggle’.
Non-Linear Animation Blending
We now support many different blending functions between animation poses and transitions!
Previously, only linear or cubic blending was supported. Now you can select from many different blending functions:
The “Custom” option requires a “Curve Float” asset. After creating one, you can assign it in the details panel for the relevant nodes:
This will allow you to specify just about any blend you want to perform. The length of the curve will be normalized and scaled down to meet the specified blend time and any values that are outside of the range 0-1 are clamped back to fit (this limitation will hopefully be lifted soon, watch this space). If a custom curve is not specified the system will fall back to a linear blend.
The custom blend used this curve: