PDG Services in Unreal

   1497   4   2
User Avatar
Member
27 posts
Joined: Oct. 2018
Offline
Hi,

I was wondering if PDG services are working as expected in UE5 or if I'm doing something wrong?
I just couldn't see any speed increase in UE5, though I did see a massive speed increase in Houdini.

This is a test of generating simple city blocks in PDG, using an HDA Processor (one city block per work item):

Out-of-process (7 cores)
UE5: 6 min
Houdini: 3:30 min

Services (14 cores)
UE5: 6 min
Houdini: 45 sec (10 sec 2nd time)

Thanks!
User Avatar
Member
27 posts
Joined: Oct. 2018
Offline
This seems to be the same issue in UE5.7 and H21 (different test level).

Out-of-process (UE5)
7 cores - 8:20 min
14 cores - 8:30 min

Services (UE5)
7 cores - 8:00 min
14 cores - 9:30 min
7 cores (TCP session) - 7:45 min

Services (Houdini)
14 cores - 30 sec

It looks like the PDG services are being used from within Unreal, I can see the hython processes and mqserver running, but there's no speed increase. I tried different settings for the Session Type and HDA Processor but to no avail. The only tiny difference was using TCP socket session type. Using "Cook Type: In-Process" on the HDA Processor resulted in no work items coming into Unreal at all. Lastly turning on the new "Enable Shared Memory Data Transfer" results in endlessly repeated "Failed to get PDG events, error code: 6" in Unreal's output log (also in Vanilla Unreal with Side-FX binaries).

Is there any way how to configure the plugin to take advantage of the PDG services? It's a bit sad to see that 120 work items can be cooked in 30 seconds in Houdini, but to do it in Unreal it takes 8 minutes. We're talking very low poly, stylized VR here (screenshot)

Attachments:
Muenster_2026_04_21_06_2048.jpg (978.5 KB)

User Avatar
Staff
31 posts
Joined: Jan. 2023
Offline
Hi Tom, those are quite the cook time discrepancies you have there. I was wondering if you could provide a test hda or hip file to see if we can investigate this further? If you are getting those results in Houdini, I don't think it is anything you are doing wrong on your end, but we won't really know for sure until we can repro this on our end. You can message me privately if you want to share the files that way, or you can make a bug report.
User Avatar
Member
27 posts
Joined: Oct. 2018
Offline
Hi Cody,

Thanks for the reply, I made a simplified repro (attached) and I also dug a bit deeper and found some other issues (below). The repro HDA just extrudes a primitive twice, the PDG HDA then takes a mesh as an input and creates a work item out of every triangle to feed to the first HDA.

I tested this both in our compiled project and vanilla Unreal 5.7.4, to repro this:

  • Save the attached HDAs
  • Edit the uvg_test-pdg_services_test.hda in Houdini
  • On the HDA Processor set the "HDA File" to where your uvg_test-extrude_test.hda is
  • Create a new blank level in Unreal and place the uvg_test-pdg_services_test.hda
  • Using Unreal's mesh modelling tools, create a rectangle with 10x10 subdivisions
  • Set the rectangle as an input for the HDA
  • Enable and start the Async Importer
  • Cook Output of the PDG asset
  • Observe that it takes only a few seconds to cook all the work items using the PDG service, then watch each work item appear in Unreal one by one, taking about 2 minutes to do so

These are my times with this setup:

Houdini
14 cores, service, Houdini - 0:07 sec

Unreal
14 cores, out of process - 2:34 min
14 cores, service - 2:37 min
14 cores, service, async - 2:20 min

The Async Importer seems the most promising here, unfortunately I can't start it in our project as the plugin looks for it where it doesn't exist (our exe lives at C:\p4\Integration\ue\YaakDriveSim\Binaries\Win64\YaakDriveSimEditor.exe)

LogWindows: Warning: CreateProc failed: The system cannot find the file specified. (0x00000002)
LogWindows: Warning: URL: C:/p4/Integration/ue/Engine/Binaries/Win64/YaakDriveSimEditor.exe "C:/p4/Integration/ue/YaakDriveSim/YaakDriveSim.uproject" -messaging -run=HoudiniGeoImport -guid=D5F71DB34B4C2440273CB9963539224C -listen=2F36C01A4F280933F81975984F0C635F -managerpid=41540

  • Is there a way to set/configure this path?

Here are other the issues that I think are bugs:

  1. "Enable Shared Memory Data Transfer" in the plugin settings leads to a looping message "LogHoudiniEngine: Error: Failed to get PDG events, error code: 6"when I rebuild the PDG asset
  2. When I set the HDA Processor to "Cook Type: In-Process" no work items are cooking/coming into in Unreal
  3. Setting "Recenter Baked Actors" on the PDG in Unreal doesn't actually recenter the baked actors, they still have their origin at 0/0/0

In closing, I was hoping that the new "Enable Shared Memory Data Transfer" would speed things up but it seems to not work. PDG services seem to work after all, but there is still a big bottleneck when transferring the data back to Unreal, even when it's a tiny amount. Is there any way to overcome or speed this up?

Do you want me to email the above bugs to Side-FX support or will you pass it on?

Thanks!
Edited by TomVee - yesterday 08:23:52

Attachments:
Screenshot_2026-04-29-18-37-27.jpg (1.7 MB)
pdg_services_test.zip (21.2 KB)

User Avatar
Staff
31 posts
Joined: Jan. 2023
Offline
Thank you for the details and steps here. It might be best for you to write up the bug as an RFE, that way the developers can track it a bit better and you can stay up to date on any progress.
  • Quick Links