Engine News 8/7

Engine News

New Features

Rendering
ScreenSpaceSubsurfaceScattering

An Early version of the ScreenSpaceSubsurface Scattering is now available for use!
Not yet production ready but feedback is welcome. This code is in main (CL 2236498 2236396 2236313).
This is where to enable (if you do not hook up a SubsurfaceProfile asset it uses the HumanSkin default):

img7.jpg&stc=1

Here you can create your own SubsurfaceProfile asset.

&stc=1

This is the settings we expose on the asset:

img9.jpg&stc=1

The SubsurfaceColor is a filter color that define how much goes though the top layer and participates in SSS.
Black means no SSS, using normal diffuse (Lambert) response, White means all goes into Subsurface scattering, in-between values are possible. A color allows to have some colored contribution entering the surface.
The falloff color defines the material color the light travels through once it’s scattering. The whole effects is made for skin (multilayer) and the colors allow to adjust the profile to be non-skin like.
The whole computation is energy conserving so it’s not possible to create more light through scattering (unlike the other Subsurface method).
Opacity can be used to mask the feature (could be grayscale): left: without SSS, middle: mask, right: with SSS

img10.jpg&stc=1

Test Level: top without, bottom: with (Scatter is in world space size, smaller model appears smaller in light response)

&stc=1

Left and right is using the method, middle is Default Lit (notice there is no scattering between the material and that results in a grey outline, I think I need to fix that)
The content here was not tweaked much – especially roughness and specular was not tweaked. The environment is a single point light with a constant ambient.

img12.jpg&stc=1

Not yet done:

  • Optimizations/Scalability (can use lower resolution intermediate, less samples, approximate further, use stencil)
  • Clamp Radius for better performance and to avoid some artifacts
  • Improve quality further e.g. per pixel randomize to get the look of more samples
  • Backscatter (ears case)
  • Thumbnail/Preview for the SubsurfaceProfile asset
  • Fix grey outline when SSS materials are near occluded by non SSS materials
  • Specular is removed from the scattering (as it should be) but this is an approximation, a proper solution is possible but more costly – we might do that if needed.

The method is limited but I am curious to see where we need more.

  • Scattering in the material is assumed to be very diffuse (milky, not like polished colored glass)
  • Getting very near to Mountains having subsurface scattering might never)

The goal is to replace the old Subsurface and Preintegrated skin with that one.

Animation
Importing Custom Curves to Animation

There is now an option available when adding custom attributes for bone objects within a skeleton, and having animated them, they will import as curves.

img1.jpg&stc=1

img2.jpg&stc=1

(Custom attribute in maya for the object b_MF_Root)
Note: The Import Custom Attribute as Curves option is on by Default!

&stc=1

When importing while the option is selected, it will show up as a curve in the animation.

img4.jpg&stc=1

When using vectors, it will appears as “CurveName_ChannelName”

img5.jpg&stc=1

Additional note: if you use the same name in different objects, it will consider as the same curve.

Editor
Force Feedback Improvements

Force feedback is now supported on the PC when using controllers that support it.
Force feedback can be enabled/disabled via a boolean property on the Player Controller.
A latent action has been added that allows the playing and updating of a dynamic force feedback (rather than a pattern defined in the content browser).
It begins playing when Start is called. Calling Update or Stop if the feedback is not active will have no effect.
The Completed output will execute when Stop is called or the duration ends.
When Update is called the Intensity, Duration, and affect Booleans will be updated to the current pin inputs.
The parameters are:

  • Intensity - How strong the feedback should be. Valid values are between 0.0 and 1.0
  • Duration - How long the feedback should play for. If the value is negative it will play until stopped
  • Affects [Left|Right] [Large|Small] - Advanced properties to indicate whether the intensity should be applied to the given servo. By default all servos will be affected.
    As with pattern based force feedback, the actual value for a servo in a given frame is the maximum value between all active force feedback effects.

img6.jpg&stc=1

Misc.
Editor

  • Added an include for Actor.h to NavigationData.h so that it works with “include what you use” (without Engine.h).
  • Disabled code compilation in editor on promoted builds as they don’t have any already-generated code and this causes compilation errors.
  • Folder Rename can now be done in the Content Browser Path View.
  • New and replacement icons for various UMG widges @ 16x. PNG assets only.
  • Added new SKeySelector widget to take care of selecting keys in various situations.

Slate

  • Added support for an image widget that dynamically downloads its image content when first drawn.

Mobile

  • Added support for OSS connect action in blueprint and response handling.- Adds component for blueprint and interface Contains Android implementation only.

Really excited about the SS subsurface scattering! It’s looking really nice, and will be even better when the backscatter is in. That ear case really makes a difference for skin.

I’m curious how new SSSSS will work with foliage.

The custom curve feature is glorious!

Am I the only one who can’t see any difference?

Those JPEGs are certainly unflattering. Any change of higher quality and resolution screenshots?

For the faces, it’s easiest to notice in that the middle one (no SSS) has very hard shadows and bump details, while the others are much softer. It would be a lot better with the back scattering case implemented, though (not having that cue for the ear makes it harder to notice the effect IMO).

I don’t see it also. kkkk

Look at the paw of the red statue. You’ll see the light distribution there. I guess this is something that will be most noticeable in fullscreen / in motion.

That SSSSS (lol) looks great! Keen to give that a try on water… though I may wait for the official build to put any time into that. Nice to see more shading models getting attention though :slight_smile:

Are there any limitations/drawbacks to using SSS in Screen Space rather than the current method?