Epic Games released Unreal Engine 4.5 last Tuesday, and it is one of their largest releases since launch. While most point-releases occur on a four-to-six week schedule, this one took about nine weeks.
The headlining feature from the press release is Ray Traced Distance Field Soft Shadows. In the real world, lights have an actual size. A light bulb is not an infinitesimal point, it fills up your hand when you grab it (when it is off and cooled to roughly room temperature, of course). If a surface can see a light, it is lit by it. If the surface cannot see the light, it is not lit by it, which looks like it is covered in shadow. If a light is big enough that part of it lights a part of a surface, but part of it is blocked, you get "soft shadows".
Ray Traced Distance Field Soft Shadows is a dynamic effect, which means that it can update over time. This is very useful if, for instance, the object that is casting a shadow gets blown up by a rocket launcher or, less entertainingly, the sun sets. The effect is also particularly quick, with scenes rendering in just a couple of milliseconds (you get about 16ms to hit 60 FPS). This is faster than cascaded shadow maps (a method to generate shadows that is optimized for shadows near the camera) in benchmarks listed at Epic's documentation.
Unreal Engine 4.5 has also updated Subsurface Scattering. I am not exactly sure what is different, because Unreal Engine 4 had SSS for quite some time now, but they changed something. This technique is useful to create realistic skin, but is also very useful for oceans, ice, and wax.
Although Ray Traced Distance Field Soft Shadows and Screen-Space Subsurface Scattering are the most interesting feature to write about, I would consider C++ Hot Reload to be the most important feature of this version. To explain it, I will need to first describe how Unreal Engine 4 is designed. When you subscribe, you are given source code access to the engine on GitHub; alternatively, you can download the Unreal Engine Launcher, which allows you to manage canonical builds of Unreal Engine. When a version of the engine is run, it will open a project in Unreal Editor. These projects could be programmed either in C++ or Epic's flowchart-based scripting system, "Blueprints". Complete games could be made in Blueprints, and developers are encouraged to do so, but they are often used for simple objects (lights and elevators), modifications of complex objects, and rapid prototyping.
Rapid prototyping is the key part of my explanation. Remember how there is "engine code" that, when compiled, opens an editor to run "game code" for any given project? Despite the E3 2012 demo, many changes in a project's C++ source require the editor to be shut down and reloaded when game code is compiled. This led people to use Blueprints as a prototyping tool, not because of its logical, visual layout, but because you could manipulate objects several times in just a couple of minutes and without closing the editor. Now C++ is said to be a first-class citizen in this regard (unfortunately I have not had time to test this). As long as you are not modifying the engine's code, just the C++ code associated with your project, your changes should be possible while remaining in editor.
Also updated, and finally supported by default, is Unreal Motion Graphics (UMG). UMG is a UI platform that is built upon Slate, which itself is the main UI platform for Unreal Engine 4 (Unreal Editor, for instance, is created with Slate). Basically, it extends Slate and includes a Flash Professional-like editor for it, complete with styles, animations, and scaling for high-DPI devices.
Because I am not in the DirectX 12 private beta, I am unsure whether that branch has been updated. Microsoft has announced that it was based on Unreal Engine 4.4. They have not said anything publicly since, at least not regarding that.
Unreal Engine 4.5 is available now for subscribers through GitHub or the Unreal Engine Launcher.
If it is true ray tracing, it
If it is true ray tracing, it is cool to know they are making a hybrid engine. If it is, I am sure it is a tiny part of the engine. Still hoping ray tracing comes sooner than later. Not to say what we have now is not amazing.
It is ray tracing… but not
It is ray tracing… but not like you think. It rasterizes triangles and, in the pixel shader, casts rays from that point to each light in the scene. The triangle, itself, is not raytraced though.
It has to be very targeted
It has to be very targeted ray tracing, at the lowest possible ray interaction rates, and rays generated must only be applied to the closest or limited meshes, otherwise you will need all 8, E class, i7 cores and threads, running at 100%, for a single frame per many minutes. Subsurface scattering takes CPU/GPU cycles also. Also what GPU is this done on, Nvidia has some ray features in Its Maxwell, with CUDA, and their Voxel technology. Is this gaming engine using any OpenCL or Cuda to accelerate the ray interaction calculations on the GPU?
From the way you describe the process, it sounds almost like a voxel processing system.
From how it is described, it
From how it is described, it sounds like it is done in the pixel shader. As for their benchmark, it was done on an AMD Radeon HD 7870 (which is weird because they're mostly an NVIDIA shop).
AMD did demo an OpenCL ray
AMD did demo an OpenCL ray tracing renderer at Siggraph 2014, so maybe Unreal engine 4.5 is using OpenCL, and some of the AMD developed libraries, the UE platform is available on Linux based distros, and I’m sure that every gaming engine developer is looking towards Steam OS’s eventual release. AMD appears to be getting more into developing for the open standards, epically since AMD has started on the road to developing a custom ARM, and new x86 cores, for release around 2016. Getting the GPU involved with ray tracing, and the GPUs massive parallelism would be the only way to provide some ray tracing in real time, and as long as the CPU has enough cores, that the gaming engine may not need all of the time, then using both available CPU cycles, and OpenCL GPU acceleration of ray interactions for better and more realistic game lighting may be feasible.
The PowerVR wizard includes ray tracing hardware on the CPU, will there be development tools/libraries in the UE 4.5 SDK for targeting the mobile GPU market, I am hoping that Imagination Tec. could get a design win with the wizard GPU, with some ARM based SOC makers, or even get a MIPS warrior SOC with the PowerVR wizard. So this new UE 4.5 gaming package, does it provide any cross platform development tools, libraries, SDK plugins for cross platform development on mobile GPUs?
I would say the technique
I would say the technique isn’t new if it’s casting from the object to the light source. I have an old graphics textbook from college that talks about it but the technique back then produced poor results.
I’m going to guess they are using the pixel shader to determine if the object is shadowed (through some naive shadowing technique) and then casting rays back to the light source to determine how shadowed it is. In that respect it would certainly be faster as you don’t have to cast rays from the light source first to determine what pixels need to be shadowed.
If you have already explained all of that, then I apologize for redundancy.
Nah. No need to apologize!
Nah. No need to apologize! Thanks for the contribution! : D
Nah. No need to apologize! : 3
Seriously though, it did add a lot to the discussion. Not redundant at all. Even if it was, explaining the same thing multiple ways would at least make it more understandable to a wider audience.
Very excited for this engine
Very excited for this engine and the DX12 support. Win10 and DX12 in combination with this engine in new upcoming games!
The model looks like a bald
The model looks like a bald Ryan Shrout listening to a joke from Morry lol.