Welcome to Unreal Engine 4 with Nvidia Gameworks integration repository!
Here are combined all possible Nvidia Gameworks technologies in one Unreal Engine 4 repository.
Blast is a NVIDIA GameWorks destruction library. It was fully integrated in UE4 as a separate plugin.
To give it a try compile UE4, and open Blast UE4 Plugin Sample Project.
For more information and a quick start tutorial go to Blast UE4 Plugin Guide.
Flex is a GPU-based particle simulation library that supports fluids, clothing, solids, ropes, and more. The UE4 integration adds new actors and components to Unreal that can be used add more advanced dynamics to your game.
An example project with test assets and levels is included here:
Documentation and tutorials for the Unreal integration can be found in under:
The latest standalone Flex SDK can be downloaded from NVIDIA's developer zone:
https://developer.nvidia.com/flex
Not all the Flex features are exposed in Unreal yet, but we're continuing work on integration and will be adding features like fluid surface rendering and smoke simulation in upcoming releases.
Flow is a adaptive sparse voxel fluid simulation library for real-time applications.
Here's it's included along with two sample projects. The integration is mostly isolated to a plugin, with minimal code added to the engine. NvFlowPluginSamples provides basic samples to demonstrate different functionality.
NvFlowSamplesVR is configured to use the forward renderer with MSAA, and includes more self shadowed fire and smoke samples.
NVIDIA HairWorks enables advanced simulation and rendering techniques for richer visual appeal and provides a deeply immersive experience. HairWorks is the culmination of over 8 years of R&D and harnessed into creating a versatile pipeline for a variety of character designs.
Please see HairWorks_Ue4_ReleaseNotes.md for more information.
WaveWorks is a library for simulating wind-driven waves on large bodies of water, in real time, using GPU acceleration.
NVIDIA WaveWorks enables developers to deliver a cinematic-quality ocean simulation for interactive applications. The simulation runs in the frequency domain using a spectral wave dispersion model. An inverse FFT step then transforms to the spatial domain ready for rendering. Intuitive real-world parameters such as wind speed and direction can be used to tune the look of the sea surface for a wide variety of conditions - from gentle ripples to a heavy storm-tossed ocean based on the Beaufort scale. Water surface displacement, normals, and foam parameters are accessible inside the shader graph editor to create content-specific appearance of the water.
The Unreal Engine 4 WaveWorks integration offers you the opportunity to explore WaveWorks with the support of the UE4 rendering pipeline and editor system. The WaveWorks library provided in this branch requires a CUDA-capable GPU. For builds supporting CPU and Direct Compute as well as licensing inquiries, please contact us at visualfx-licensing@nvidia.com.
VXGI stands for Voxel Global Illumination, and it's an advanced rendering technique for real-time indirect illumination.
Global illumination (GI) is a way of computing lighting in the scene that includes indirect illumination, i.e. simulating objects that are lit by other objects as well as ideal light sources. Adding GI to the scene greatly improves the realism of the rendered images. Modern real-time rendering engines simulate indirect illumination using different approaches, which include precomputed light maps (offline GI), local light sources placed by artists, and simple ambient light.
Q: I loaded a map but there is no indirect lighting. A: Please make sure that...
- Console variable r.VXGI.DiffuseTracingEnable is set to 1
- Directly lit or emissive materials have "Used with VXGI Voxelization" box checked
- Direct lights are Movable and have "VXGI Indirect Lighting" box checked
- There is an active PostProcessVolume and the camera is inside it (or it's unbounded)
- In the PostProcessVolume, the "Settings/VXGI Diffuse/Enable Diffuse Tracing" box is checked
It is also useful to switch the View mode to "VXGI Opacity Voxels" or "VXGI Emittance Voxels" to make sure that the objects you need are represented as voxels and emit (or reflect) light.
Q: I'm trying to build the engine, and there are some linker errors related to NVAPI.
A: This means Setup.bat has overwritten the NVAPI libraries with older versions. You need to copy the right version (from the original zip file or from GitHub) of this file: Engine\Source\ThirdParty\NVIDIA\nvapi\amd64\nvapi64.lib
Q: There are no specular reflections on translucent objects, how do I add them? A: You need to modify the translucent material and make it trace specular cones. See this forum post for an example.
Q: Can specular reflections be less blurry? A: Usually yes, but there is a limit. The quality of reflections is determined by the size of voxels representing the reflected object(s), so you need to reduce that size. There are several ways to do that:
- Place a "VXGI Anchor" actor near the reflected objects. VXGI's scene representation has a region where it is most detailed, and this actor controls the location of that region.
- Reduce r.VXGI.Range, which will make all voxels smaller, but also obviously reduce the range of VXGI effects.
- Increase r.VXGI.MapSize, but there are only 3 options for that parameter: 64, 128 and 256, and the latter is extremely expensive.
Q: Is it possible to pre-compute lighting with VXGI to use on low-end PCs or mobile devices? A: No, as VXGI was designed as a fully dynamic solution. It is theoretically possible to use VXGI cone tracing to bake light maps, but such feature is not implemented, and it doesn't add enough value compared to traditional light map solutions like Lightmass: the only advantage is that baking will be faster.
Q: Does VXGI support DirectX 12? A: It does, but in a limited and still experimental way. Switching to DX12 is not yet recommended. It will be slower than on DX11.
Q: Can I use VXGI in my own rendering engine, without Unreal Engine? A: Yes. The SDK package is available on NVIDIA GameWorks Developer website.
The VXGI integration was ported from UE 4.12 to 4.13 mostly by Unreal Engine Forums and GitHub user "GalaxyMan2015".
HBAO+ stands for Horizon-Based Ambient Occlusion Plus, and it's a fast and relatively stable screen-space ambient occlusion solution.
-
Install GitHub for Windows then fork and clone our repository. To use Git from the command line, see the Setting up Git and Fork a Repo articles.
If you'd prefer not to use Git, you can get the source with the 'Download ZIP' button on the right. The built-in Windows zip utility will mark the contents of zip files downloaded from the Internet as unsafe to execute, so right-click the zip file and select 'Properties...' and 'Unblock' before decompressing it. Third-party zip utilities don't normally do this.
-
Install Visual Studio 2017. All desktop editions of Visual Studio 2017 can build UE4, including Visual Studio Community 2017, which is free for small teams and individual developers. To install the correct components for UE4 development, check the "Game Development with C++" workload, and the "Unreal Engine Installer" optional component.
-
Open your source folder in Explorer and run Setup.bat. This will download binary content for the engine, as well as installing prerequisites and setting up Unreal file associations. On Windows 8, a warning from SmartScreen may appear. Click "More info", then "Run anyway" to continue.
A clean download of the engine binaries is currently 3-4gb, which may take some time to complete. Subsequent checkouts only require incremental downloads and will be much quicker.
-
Run GenerateProjectFiles.bat to create project files for the engine. It should take less than a minute to complete.
-
Load the project into Visual Studio by double-clicking on the UE4.sln file. Set your solution configuration to Development Editor and your solution platform to Win64, then right click on the UE4 target and select Build. It may take anywhere between 10 and 40 minutes to finish compiling, depending on your system specs.
-
After compiling finishes, you can load the editor from Visual Studio by setting your startup project to UE4 and pressing F5 to debug.
-
Install GitHub for Mac then fork and clone our repository. To use Git from the Terminal, see the Setting up Git and Fork a Repo articles. If you'd rather not use Git, use the 'Download ZIP' button on the right to get the source directly.
-
Install the latest version of Xcode.
-
Open your source folder in Finder and double-click on Setup.command to download binary content for the engine. You can close the Terminal window afterwards.
If you downloaded the source as a .zip file, you may see a warning about it being from an unidentified developer (because .zip files on GitHub aren't digitally signed). To work around it, right-click on Setup.command, select Open, then click the Open button.
-
In the same folder, double-click GenerateProjectFiles.command. It should take less than a minute to complete.
-
Load the project into Xcode by double-clicking on the UE4.xcworkspace file. Select the ShaderCompileWorker for My Mac target in the title bar, then select the 'Product > Build' menu item. When Xcode finishes building, do the same for the UE4 for My Mac target. Compiling may take anywhere between 15 and 40 minutes, depending on your system specs.
-
After compiling finishes, select the 'Product > Run' menu item to load the editor.
-
Set up Git and fork our repository. If you'd prefer not to use Git, use the 'Download ZIP' button on the right to get the source as a zip file.
-
Open your source folder and run Setup.sh to download binary content for the engine.
-
Both cross-compiling and native builds are supported.
Cross-compiling is handy when you are a Windows (Mac support planned too) developer who wants to package your game for Linux with minimal hassle, and it requires a cross-compiler toolchain to be installed (see the Linux cross-compiling page on the wiki).
Native compilation is discussed in a separate README and community wiki page.
Android support will be downloaded by the setup script if you have the Android NDK installed. See the Android getting started guide.
iOS programming requires a Mac. Instructions are in the iOS getting started guide.
HTML5 support will be downloaded by the setup script if you have Emscripten installed. Please see the HTML5 getting started guide.
Playstation 4 or XboxOne development require additional files that can only be provided after your registered developer status is confirmed by Sony or Microsoft. See the announcement blog post for more information.
This repository of UE4 is primarily discussed on the Unreal Engine forums: NVIDIA GameWorks Integration. That forum thread contains many questions and answers, and some NVIDIA engineers also participate in the discussion. For VXGI related questions, comment on that thread, or contact Alexey.Panteleev on the forum, or post an issue on GitHub.
- Interactive Indirect Illumination Using Voxel Cone Tracing - the original paper on voxel cone tracing.
- NVIDIA VXGI: Dynamic Global Illumination for Games - a presentation about VXGI basics and its use in UE4.
- Practical Real-Time Voxel-Based Global Illumination for Current GPUs - a technical presentation about VXGI while it was still work-in-progress.
Please read LICENSE.md