NVIDIA GameWorks Integration

Wow, is amazing news! Didn’t expect these integrations to occur for quite sometime… And incredibly FleX is among the first to be integrated. Exciting!

Sorry, perhaps you missed my reply from the other day:

It might appear like we’re doing all of in a month, but we’ve been working on the integrations for a while. We’re just getting to the roll-out phase now, and some modules will take longer than others.

Sorry, actually not, but I thought it was about waveworks specifically and didn’t look again.

I see. The goal is for all GW modules to be available on all PCs, but the timing and details depend on the specific features. As they roll out we will continue to refine these features, we will measure and improve performance, and study use cases contributed by developers in the field. It is generally more effective to concentrate effort on a single implementation while improving the fundamentals, and later port for broader compatibility, than it is to do it the other way around.

Great to see so much coming from the highly-talented folks at Nvidia! Fingers crossed we’ll eventually see HairWorks sooner, rather than later though!

I fervently hoped that something like would happen - !

FLeX is going to be insane, and is definitely the one to watch - cloth <-> fluid <-> rigid <-> softbody interactions all working together are going to be insane and change things in ways people can’t even imagine yet.

Turf looks excelsior.
Hopefully I won’t be so much of a big noob as to be unable to figure out how to implement it.

Santa? is that you? :eek: is super exciting news! thank you for that :o

Exactly! the way I see it FLEX is basically next gen game physics… it’s a lot more than eye-candy or a rendering like VXGI since can potentially affect gameplay in a major way.
Wish there was more focus on features like !

So I played quite a bit with WaveWorks today :slight_smile: so far I’m very pleased with it and it’s apparently just one node you add in your water material and it generates foam, normal and displacement!

For those interested I uploaded a video showing what I ended up with after a couple of hours in the material editor (should be in 60fps if you use Chrome).

v=qYXqQHEc8ec

Now the question is, are the buoyancy physics implemented? is there an easy way I can add buoyancy to a mesh in C++ or get the Z (height) data? or that still needs work to properly work in UE4?

The buoyancy physics is not yet implemented in UE4, but it should be straightforward to get the height data and calculate the intersection of the height field with, for example, a convex hull. When we get some extra time I hope to publish a boat sample using a rigid body for the boat hull, and a pawn controller that applies buoyancy, drag, propulsion, etc., similar to how the vehicle sample uses a pawn to create a PxVehicle.

Looks a lot different from their official video though.

v=iilqtDkeIBE

Looks pretty nice!

Do you mind sharing your material setup?

What provided was a quick example setup showing how to use WaveWorks, with the video you linked showing what it is capable of. has mentioned already they will be putting together a full sample including ships & bouyancy etc soon, but you can already get the same look with a more advanced material (the one that comes with the demo is a very basic material).

It is a really cool sample, you should try it out! :slight_smile:

Can someone briefed on the tell me which parts of Nvidia’s GameWorks have DXC implementations (i.e. not Cuda-only)?

I’ve been very impressed by EPIC’s push for a GPU vendor independency of UE4 (especially with more complex rendering and simulation stuff like GPU particles coming to the party) and anything that detracts from that is a step back . Don’t get me wrong, it’s always good to have options for those who seek them, but in a form of plugins and third party codebases.

I hope that anything CUDA related stays away from any deeper UE4 integration.

Well that’s because the ocean shader used in the video would need to be re-created in UE4 (currently it includes only a super basic example material setup and no ocean plane, which I had to make) I’m sure that someone with experience could easily make it look like that video, and even better.
Also is early in the works, all I did was play with some colors and adjust the post process really :stuck_out_tongue:

The point is, you just plug WaveWorks to your material and you have realistic wave displacement which has parameters you can adjust (like wind speed etc.) but the rest of the material doesn’t really need to be done by WaveWorks…
WaveWorks makes the simulation, you define the look. :wink:

Sure why not! is the modified project files…
You will need the UE4 branch with WaveWorks posted by . for it to work.
.rar

Sounds good :slight_smile: I would love to see a boat demo project!

is the main reason why it is being integrated into a separate branch of UE4 provided by NVIDIA. Before any of can be integrated into the engine released by Epic, it will need to either work on both GPU’s or use the CPU instead. Just wanted to clarify is not an official integration (at least not yet).

has mentioned they are working on alternate implementations of most of the features, but there is no news yet on how long that will take. I see no problem with them integrating 2 versions into UE4, one that uses an alternate method, and another that can be used with CUDA. It would be great if both versions were GPU based, but I am not sure if that will be possible.

That’s as much as I know at point, will be able to answer in further detail though, so keep an eye out for that. :slight_smile:

I could be wrong, but I guess if nvidia would want to they could implement everything which works in CUDA also in opencl. They just use CUDA because of better marketing against AMD.

WaveWorks started out in CUDA because we used the FFT algorithms developed by our High Performance Computing group, sort of an experiment in taking code developed for scientific research into the games space. Having evaluated the potential of both DXC and OpenCL as alternatives, we are working on a DXC version of WaveWorks because we believe it will be easier to develop, optimize and maintain in DXC than in OpenCL. For our internal teams CUDA offers some real advantages over DXC, because the developers can suggest to the CUDA team that specific features or optimizations should be implemented in the CUDA layer to take better advantage of NV GPU architecture; sometimes these tweaks are not so easily replicated in DXC, so it makes sense for us to figure out the ‘speed of light’ using CUDA before delving too deeply into a DXC port.

Sounds reasonable, but what is “DXC”? Google told me it means “DXCompute” and it seems to be an alternative to CUDA and OpenCL but DXC is only mentioned in context with Nvidia. So is DXC developed by Nvidia? Why is it so hard to find information about DXC? Why do all (or most) programs use either CUDA or OpenCL (or both), but not DXC? Is DXC same “open” als OpenCL and does DXG also runs great on AMD GPUs (same performance as on equal Nvidia GPUs)?

Yes, perhaps I should call it ‘Direct Compute’,or “DC”. I don’t know, I’ve heard it several ways.

://en.wikipedia.org/wiki/DirectCompute

DirectCompute is a more recent arrival than CUDA or OpenCL, appearing in DX10 and, so games with earlier DX versions may have used CUDA or OpenCL for GPU computing. DirectCompute is not ‘developed by NVIDIA’, it is a Microsoft technology supported by NVIDIA through the GeForce driver system.

https://developer.nvidia/directcompute