Posts

One of the less intuitive things in Unreal World Outliner is the the way how to hide lights or other objects. Disabling them by clicking on the eye in World Outliner results them turning off in the viewport, however reloading a scene will re-enable them causing confusion. Same goes for everything else.

Better way For lights, toggle Affects World to disable/enable it without deleting the actor/component.

For meshes, toggle either Visible (completely hides it) and/or Hidden in Game (hides in game view but not in editor view) to hide it.

This is definitely a head-scratcher. I think better way is to not to use the eye icon at all.

Having splotches in Unreal Engine ray tracing objects with HDRI Environment? Try this console command:

r.raytracing.normalbias 32

Don't forget to uncheck sRGB when using RGB channels as masks

I occasionally come up with materials that are incorrectly setup in Unreal Engine. This often manifests in a way that roughness values seem off, and materials appear too glossy.

When using PBR maps it is necessary to make sure to make them linear space by unchecking sRGB texture settings. This is especially important when using RGB masks such as in the video.

I am showing up a little late to this party, but Nvidia has finally released official version of the Nvidia RTX GI Plugin in the Unreal Engine Marketplace. Well link to external site rather, which leads to Nvidia’s site right here. You will needNVidia account to be able to grab this. But if you are using NVidia card, chances are you already have one.

Unreal Engine 4.7 RTX GI plugin in Unreal Engine Marketplace.
Click the External Link will take to to the page where you can grab the plugin.

Now, the premise of this is fascinating to say at the least. Unlike Lumen in UE5 this is purely hardware based, so it’s fast. It will require capable hardware as expected, but the results should be similar or even more crisp than what we are able to see with UE5. Finally we will be able to get realistic real time GI, colorful surfaces bleeding light to others, emissive light sources, well being actually emissive and so on. This gives us that sweet baked light look but without baking.

Installation

Let’s take a look how to get up and running with this. So head to the Nvidia’s site here, and grab the plugin. You need to login and click to “Agree to the Terms of the NVIDIA RTX SDKs License Agreement. And you should be able to download the RTXGI_UE4_Binary_Plugin_v1.140.zip.

Here you can download Nvidia RTX GI Plugin
Nvidia RTXGI Plugin plugin can be downloaded from NVidia

This will require DXR Capable GPU Windows 10 and such. And Unreal Engine 4.27. Please make sure you have those.

Make sure you have closed Unreal Engine before proceeding. Then go Unzip the archive and copy the complete RTXGI folder to Epic Games\UE_4.27\Engine\Plugins\Runtime\Nvidia.

Now when you open Unreal Engine, you should get popup on the down right about new plugins. Check “Manage Plugins” and make sure the plugin is marked as Enabled. If it is, the plugin should be installed correctly. Before the fun begins, make sure

Now when you open Unreal Engine, you should get popup on the down right about new plugins. Check “Manage Plugins” and make sure the plugin is marked as Enabled. If it is, the plugin should be installed correctly. Before the fun begins, make sure default RHI is set to DirectX 12 and Ray Tracing is enabled. If this is a new project, restart and the sometimes lengthy shader compile is necessary.

Using the Nvidia RTX GI Plugin

Next we need to fire up the console and throw the following commands at it:

r.GlobalIllumination.ExperimentalPlugin 1 to enable global
illumination plugins (this can also be set in .ini files, or in blueprints).

r.RTXGI.DDGI 1 to enable RTXGI (set in .ini files, on the console, or in
blueprints).

It is good to enable log view from the Window / Developer menu, in this way we can confirm if the GI is really enabled.

Now the engine should be ready for some fantastic RTX GI action. Yay!

Placing DDGIVolume to the scene will work a bit similarly as PostProcessVolume. They contain a grid of probe points that RTXGI will update using Ray Tracing. The DDGIVolume contains related settings that can be adjusted.

Here is what I was able to come up with five minutes of playing with it.

Nvidia RTX GI Plugin in action
Nvidia RTX GI Plugin in action.

Neat, I say! I placed a spotlight on the middle, shining the light in middle of the purple and white wall. You can see that the bounce now light casts colored light to the right side floor.

At the furthest point you can see emissive cube casting light, and shadows behaving believably way. Also there are no seams. Really, seriously. No seams between modular walls. There used to be a lot of tweaking required when baking modular walls, to get rid of the seams even when the modules were correctly snapped to grid. I welcome this.

If you used a template with static directional light, sun or skylight, and want to change scene to fully dynamic setup it maybe necessary to build lighting to be able to see the new settings in the scene.

It is worth mentioning that currently RTXGI lighting does not work with UE4’s other ray traced effects (for example, ray traced reflections). So Lumen implementation may have edge here although for what I have seen the reflections are not quite there yet either.

We can adjust the probe counts as well as many more useful settings in DDGIVolume. I am planning to return to this topic.

Nvidia RTX GI Plugin
In this example I increased probe count to 13,13,13 and this helped to remove some of the splotching on corners of the room.

With probe counts it is better to keep the count reasonable, otherwise this will cause instant crash but on the other hand too low probe count can lead to splotches or artifacts in the corners.

I will make more in depth tutorial on DDGIVolume settings in near future. At this point I think there must be very few people who know what each of them means. But let’s keep digging!

The video tutorial is now up in Youtube.

Tutorials

Often we need ability to adjust normal map strength in Unreal after bringing in the maps. Normal map is a special map that contains vectors in color values, so it cannot simply be multiplied by itself to increase strength. This would cause issues.

We need to leave the blue channel unchanged while changing the intensity of R and G. Here is how we can can do this and expose a parameter for ease of use.

Now, I know there is normal flatten node, but in my experience it doesn’t work as well as it tends to also change the blue channel, so I rather do this instead.

Here are the nodes to normal map strength in Unreal
Here are the nodes to normal map strength in Unreal

So drag lines from R and G from the Normal Texture Sample. If you type “mul” you can get to multiply. You can also press m while left clicking to create multiply nodes fast. Make sure the line from R is connected to A of the Multiply node. Then right click B node and choose “promote to parameter”.

You have now made a parameter. Name that to NormalStrength for example. Give this a default value of 1.0.

Then do the same for the green G channel. Next, right click on the empty area to create MakeFloat3. This will combine the RGB values again to be fed into the normal channel. Last, connect MakeFloat3 to the normal input of the material.

Finally, save the material.

Congratulations. You have actually now created a material with a parameter in it. Yay!

Right click the newly created material and select “Create Material Instance”. This will be a child material of the master. You can now see the following Global Scalar Parameter in it.

Here is how to adjust normal map strength in Unreal using material instance.
The newly created Material Instance now has new Global Scaler Parameter values section with newly created parameter to adjust normal strength.

In this way you can adjust the strength of the material anytime, or even create several variations of it.

In next tutorial I will show how to create a material function of this, which helps to clean up the graph and can be reused easily.

Here is useful documentation on creating normal maps.