NVIDIA GameWorks Integration

Probably means that if you want interaction between, for example, the output of multiple emitters, they have to be in the same grid.

Dependencies for Flow stated on the GameWorks page on the nvidia site are only ’ or '.

Anyone know how can I create endless ocean like that in waveworks_gdc_map (project WaveWorksTester from WV branch)? I created actor blueprint, material and WaveWorks object (by right clicking on content browser and selecting Physics -> WaveWorks). In blueprint I added WaveWorks component and selected WV physics object in “Wave Works Asset” field. But now when I add blueprint to map and try to set material, UE4 editor crashes with “Fatal error” dialog.


Log:



[2017.05.11-12.25.14:324][468]LogWindows:Error: === Critical error: ===
[2017.05.11-12.25.14:324][468]LogWindows:Error: 
[2017.05.11-12.25.14:324][468]LogWindows:Error: Fatal error: [File:D:\Git\UnrealEngine\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp] [Line: 796] 
[2017.05.11-12.25.14:324][468]LogWindows:Error: Rendering thread exception:
[2017.05.11-12.25.14:324][468]LogWindows:Error: Fatal error!
[2017.05.11-12.25.14:324][468]LogWindows:Error: 
[2017.05.11-12.25.14:324][468]LogWindows:Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x00000000
[2017.05.11-12.25.14:324][468]LogWindows:Error: 
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Engine.dll!FWaveWorksSceneProxy::CreateGerstnerWaveUniformBuffer() [d:\git\unrealengine\engine\source\runtime\engine\private\waveworksrender.cpp:177]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Engine.dll!FWaveWorksSceneProxy::GetDynamicMeshElements() [d:\git\unrealengine\engine\source\runtime\engine\private\waveworksrender.cpp:260]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!FSceneRenderer::GatherDynamicMeshElements() [d:\git\unrealengine\engine\source\runtime\renderer\private\scenevisibility.cpp:2017]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!FSceneRenderer::ComputeViewVisibility() [d:\git\unrealengine\engine\source\runtime\renderer\private\scenevisibility.cpp:2705]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!FDeferredShadingSceneRenderer::InitViews() [d:\git\unrealengine\engine\source\runtime\renderer\private\scenevisibility.cpp:2955]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!FDeferredShadingSceneRenderer::Render() [d:\git\unrealengine\engine\source\runtime\renderer\private\deferredshadingrenderer.cpp:621]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!RenderViewFamily_RenderThread() [d:\git\unrealengine\engine\source\runtime\renderer\private\scenerendering.cpp:1745]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Renderer.dll!TGraphTask<`FRendererModule::BeginRenderingViewFamily'::`21'::EURCMacro_FDrawSceneCommand>::ExecuteTask() [d:\git\unrealengine\engine\source\runtime\core\public\async	askgraphinterfaces.h:883]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread() [d:\git\unrealengine\engine\source\runtime\core\private\async	askgraph.cpp:954]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit() [d:\git\unrealengine\engine\source\runtime\core\private\async	askgraph.cpp:701]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-RenderCore.dll!RenderingThreadMain() [d:\git\unrealengine\engine\source\runtime\rendercore\private\renderingthread.cpp:325]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-RenderCore.dll!FRenderingThread::Run() [d:\git\unrealengine\engine\source\runtime\rendercore\private\renderingthread.cpp:459]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Core.dll!FRunnableThreadWin::Run() [d:\git\unrealengine\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:76]
[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Core.dll!FRunnableThreadWin::GuardedRun() [d:\git\unrealengine\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:33]
[2017.05.11-12.25.14:324][468]LogWindows:Error: .DLL!0x0000000027108364
[2017.05.11-12.25.14:324][468]LogWindows:Error: ntdll.dll!0x00000000279370D1
[2017.05.11-12.25.14:324][468]LogWindows:Error: ntdll.dll!0x00000000279370D1
[2017.05.11-12.25.14:324][468]LogWindows:Error: 
[2017.05.11-12.25.14:324][468]LogWindows:Error: 
[2017.05.11-12.25.14:325][468]LogWindows:Error: 
[2017.05.11-12.25.14:325][468]LogWindows:Error: 
[2017.05.11-12.25.14:325][468]LogWindows:Error: Crash in runnable thread RenderThread 2
[2017.05.11-12.25.14:346][468]LogWindows: Windows GetLastError: Operacja ukończona pomyślnie. (0)
[2017.05.11-12.25.14:346][468]LogWindows:Error: HandleError re-entered.
[2017.05.11-12.25.14:346][468]LogWindows: FPlatformMisc::RequestExit(1)
[2017.05.11-12.25.14:346][468]Log file closed, 05/11/17 14:25:14


Is there any documentation for WaveWorks branch, like for FleX?

Edit: I use UE 4.15.1 with HairWorks, WaveWorks, FleX, Flow, VXGI and Volumetric Lighting merged together.

With two overlapping grids, performance would drop assuming both grids are using the Flow collision channel, since the emitter would be applied to both grids. You can avoid by either not allowing the grids to overlap, or you can add a ‘Flow2’ collision channel to your project to allow the second grid to have its own unique collision channel.

Interesting stuff, I didnt know thats how it works, apologies for my incorrect answer.

Your answer was not incorrect. For multiple emitters to fully interact at the simulation and rendering levels, they do currently need to be in the same grid. Using the collision channels I mentioned just prevents the UE4 side emitter from being broadcast to both grids. is most useful for authored at different grid resolutions, that do not require full interaction.

Ah, thanks for the additional clarification.

I had a naive, early stab at seeing how hard it will be to update flow to 4.16. There were a few differences such as the distance field volume being compressed that I fudged my way around but I reached my rather feeble limit when I managed to crash the shader compiler with some gpu particle code. So I shall just have to be patient and focus on something else until a reasonable time after 4.16 final is actually out (was looking to test whether flow-driven gpu particles work as nicely as I imagine they could with the volume material stuff that can influence the volumetric fog/light stuff that is in 4.16)

I made a 4.16 build with VXGI, Flow, Flex, Volumetric lightning working a couple weeks back, but it couldn’t package.
The small space ship viewer i linked a video to, earlier in the thread, was originally made in 4.16 using those tech and i had to remake it in 4.15 as i wasn’t able to package it.

The following video was a ‘work in progress’ recorded on 4.16, featuring the packaging failing :p…

project is showing a couple Star-Ships from the Star Citizen website and was highlighted as player contribution by Cloud Imperium Games last week, got featured front page next to Mark Hamill lol.
So happy about it !

watch?v=kYamBYHd8l4

The models originally come from an embed 3D player and look like , unified mesh, no UVs etc… :
c4b7ba5d7ffbde6d6055a253b369cc628ebe6839.jpeg

Aha! Yes indeed, explains a few things on my end, so thank you! Further reason to stick in some logic to spawn the grids where needed instead of tying them to the emitters directly.

Thanks!

OK I revisited my attempt to get flow working with 4.16 preview and discovered it was a trivial fat finger error of mine in a shader file. Let the fun commence :slight_smile:

Notes for anyone attempting it:

Trivial change required to plugin build cs files (unreal build tools will error and tell you what).
FinishRenderingSceneColor doesnt exist anymore, so I just comment the call to it out.
DistanceFieldVolume now CompressedDistanceFieldVolume and comprises of uint8’s rather than ffloat16’s.
Stuff that used to be in DistanceFieldSurfaceCacheLighting now seems to be in DistanceFieldAmbientOcclusion.

edit - It seems I dont have everything working (SDF issues in places) but it’s enough for my needs for now :slight_smile:

Finally got WaveWorks working, though I can’t find buoyancy anywhere. Was removed since WaveWorks was updated, or am I missing something?

Hi,
I did not get an answer from anybody so deep searching through the forum posts and reading technical document led me to the following results. I post a short description of my results maybe it will be useful for somebody. A big influence on graphic memory usage causes **VxgiMapSize **and VxgiStackLevels. To have a less memory consumption I use **VxgiMapSize = 64 **and VxgiStackLevels = 3. Also if to skip some objects from voxelization ( i skipped small objects like accessories) it gives benefits in memory usage

Anyone having problem merging Volumetric Lighting with Flex? I’ve tried different combinations but always ended up failing to merge VL and Flex.

I think there is some when merging Volumetric Lighting with multiple techs, for example, when I merged it with VXGI it worked, but when I tried to merge Flow or Flex on top of it, I always got compile errors.

I think we’re on the same boat. Too bad I don’t have enough programming expertise to solve it, so I’m settling with VXGI+Hairworks+VL at the moment, **** that sweet god ray thing!

Update: I was able to get around by adding an additional condition to the if statement that runs the CreateGerstnerWaveUniformBuffer function:


	if (WaveWorks != nullptr && WaveWorksResource != nullptr **&& WaveWorks->bUseShoreLine**)
	{
		WaveWorksResource->WaveWorksGerstnerUniformBuffer = CreateGerstnerWaveUniformBuffer();
	}

**line 259 in C:..\UnrealEngine\Engine\Source\Runtime\Engine\Private\WaveWorksRender.cpp
**
I haven’t looked beyond but before the code is looking for a material to calculate the height and width from for the shoreline interaction… but if you don’t have a texture… then is crashes out as per the log


[2017.05.11-12.25.14:324][468]LogWindows:Error: UE4Editor-Engine.dll!FWaveWorksSceneProxy::CreateGerstnerWaveUniformBuffer() [d:\git\unrealengine\engine\source\runtime\engine\private\waveworksrender.cpp:177]

At least with additional condition you can then start using WaveWorks!

I’ll email the devs to see if they have any opinions… but now perhaps someone can comment further.

Cheers!

I got them all working together on 4.15 and flex/flow/vxgi/volum light on 4.16, but VXGI being in part broken on both 4.15 and 4.16, and 4.16 not being able to package any game with flow, kinda defeat the entire purpose.
Especially when VXGI and Flow are the two tech i’m looking after ^^…

Also flow interaction with lighting is quite self contained right now, you need to tune it to the lightning of the scene and therefore not rely too much on dynamic illumination.
You can get away with constraint if you’re using emmisive particles of course (flamethrowers, etc…). Using moving grids it could be .

I love 4.16 volumetric light even if it’s less ‘artist friendly’ than Nvidia solution, think i’ll settle for VXGI+Flow on 4.16, but as of now i’m working without any Nvidia tech.

I’m using these techs for animation production so as long as there’s nothing groundbreaking in 4.16.x, I’m gonna stick with 4.15+Nvidia for at least a few months. It’s great hearing you got VL working with Flex and Flow in 4.15, I’m not tech savvy enough to look into conflict so I’m gonna wait until you have time to share your 4.15 build and grab it in half a second :D. Cheers.

Only trouble with the 4.15 i have is that it’s probably not up to date on the flex libraries, it’s also still on 4.15.1 and there’s personal customization and bought plugins in it. Would need to clean up and update it before sharing .

, thanks a lot for the heads up!

Wow, it works! I did not have time (and to be sincere, knowledge :)) to track it myself and was just about issuing bug on Nvidia’s Github repo (I think I do it anyway).
Thank You!