Engine Features Preview 10/31

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
Material Improvements
Materials can now use more than 13 unique textures!

On PC D3D and consoles, materials can use up to 128 unique textures by making use of new ‘shared’ samplers, which are specified on a TextureSample node.


PC OpenGL and Mac OpenGL are still limited to 13, materials exceeding that limit will fail to compile on those platforms.
In the future we’ll probably add a node similar to the FeatureLevel switch that allows the material to compile for both.

This is a really important improvement for layered materials like terrain, and high quality character materials.
We are no longer held back by the lowest common denominator platform.
It also allows us to add more forward shading features in the future (Forward+, translucency surface lighting).

Material parameters supported in functions!

Material Instance parameters are now supported in functions. This brings functions to feature parity with materials, the same node graphs can be used in either.
The only exceptions are the function input and output nodes which are inherently function-only.

Note that parameters within a material are set by name, so if you have two parameters named ‘wetness’ in different functions referenced by that material, they will both be overridden with the same value in the Material Instance. This can be used intentionally but if you don’t want to share the parameter, give it a unique name.

Scalar and Vector Parameter default values are previewed in realtime!

You can change any scalar or vector parameter default value and see the result instantly in the main 3d viewport.
This is especially useful for Material Functions that implement layers, as you can see the results of a tweak to the layer on all the materials in the scene that use that function.

Here is an improved workflow for tweaking constants in material functions:

  1. Right click and convert to parameter

  2. Apply changes to the function

  3. Tweak the parameter defaults until satisfied, getting instant preview in the 3d viewport

  4. Right click and convert back to constant

  5. Apply changes to the function

Note that if the parameter is overridden in the Material Instance chain, changing the default value will have no effect.
Static Lighting on Foliage

Foliage and Instanced StaticMesh Components now support texture lightmaps. This allows efficient rendering with Stationary lights, as all shadowing is precomputed.


The foliage mesh must have valid Lightmap UVs for lighting to be correct.

Texture lightmaps on foliage work well for medium sized levels, but static lighting does not scale to huge levels due to large memory and build time requirements.
Using a high lightmap resolution on the foliage mesh and having many instances will also require a huge amount of memory and increase map size.

Humanoid Rig

A new option has been added to Select Humanoid Rig that is defined within the Engine.



Note: You do not have to have “Show Engine Content” to see this option.
New: Gameplay Debugger Documentation (WIP)! **


Documentation for Gameplay Debugger is now underway!

The Gameplay Debugger is useful for watching real-time data at runtime, even on clients in networked games using replication.
It works in Play In Editor, Simulate In Editor, and standalone game sessions, and all of the data is displayed overlaid on the game viewport.
The system provides a framework that can be extended to enable debugging of game-specific data.

Follow the link below to read through the early documentation:
Coming Soon

**- **Added a curve linear color struct that can be added as a property and edited in details panel.

  • Removed code that explicitly checks for UCurveLinearColor and added functions to curve owner interface so that this struct can display the gradient editor as well.

  • Added BP AI sample content project as we don’t currently have a way to specify navmesh settings without a project. Also added default roam behavior if a pathfind to ‘food’ fails.**Cascade
    **- **Created struct customization for FRawDistributionVector allowing color-related particle modules to have their vector properties visualized as colors.

Awesome, I particularly like the debugging tools! Thanks for the Epic halloween treat!

You need a permission from owner to open this site :slight_smile:

I will like to know how to run this.

I have been looking forward to all of these features, thank you guys! 128 texture samples!!!

Also, this line in particular makes me happy:

It’s good to know it is on your minds as well! :slight_smile:

This makes me happy! Proper opacity maps on a per pixel level for depth sorting is really wanted!

Will the PC OpenGL renderer ever support more than 13 texture samples? In OpenGL, the number of texture samples appears to be limited by hardware rather than an arbitrary limit of 13. The limit appears to be 32 on most cards released in the last few years: GPU hardware info database launchpad

Awesome little update we’ve got here and I am glad to see some headway on the foliage shading/lighting model :smiley:

Debugging tools for the win!

Gameplay Debugger documentation

Link to Gameplay Debugger documentation. It’s early version and definitively it needs love from documentation team to fix language but you can access it right now. This feature is still experimental.

Cheers and have fun with Gameplay Debugger,

IMO the image for the foliage doesn’t show any foliage, don’t you have a before and after shot of foliage this time?

Technically there is no limit of how much textures you can use per single shader.
Amount of Samplers only indicates of how much textures can be processed in single GPU cycle.

The real limitation was/is how much textures you can bind to GPU. The more textures you bind the more draw calls you generate there of your performance start to tank down, because CPU can’t keep up with sending textures to GPU.

With OpenGL and Bindless Resources it’s no longer limiting factor. The same with DX12.

At least as far as I understrand it (;.

Hi there ,

Thank you Epic for this update.

Material Editor too ? or always this grey checkboard map before see the result…

Same here ! Google chooses an old account, when I try to switch on my UnrealEngine mail account , Google chooses again the old account, I don’t know why …

Link to Gameplay Debugger documentation. It’s early version and definitively it needs love from documentation team to fix language but you can access it right now. This feature is still experimental.

Cheers and have fun with Gameplay Debugger,

Thank you Sebastian.Kowalczyk

If that’s the case then why are they sticking with the limitation for PC OGL?

Because Macs are on some ancient version of OpenGL, and on PC (Windows), main API is DirectX.

How about for Linux?

All platforms in UE4 use the same version of OpenGL.

Naa at OS X its stuck at OpenGL 4.1, even with OS X 10.10, and UE4 is specifically tears down features to support that problematic implementation that the inventor of super expensive graphic workstations brought to the table… When used elsewhere the Engine can utilize OpenGL 4.3 and that is more on par with DX11.

I would highly recommend you check out RenderDoc:

In short,
It’s a standalone graphics debugging tool built by Crytek and the community :smiley: