Calling @bangnoise (or anyone with info regarding this) for help - please may I ask whether should Render Target example (BP_UESample_TOP_03_RenderTargetIn) in TouchEngine-UE-Samples-1.5.0 work like this?
Based on the tox file and Blueprint, it seems like black screen on the right side should be rather displaying distorted texture.
(Tested both in editor and PIE. No errors were printed into console or screen.)
I haven’t used this feature so far, but I am working on a project where passing Render Target into TouchEngine-UE’s input is needed. I was trying to make this work in my project, but I wasn’t able to get any texture into TouchEngine’s input. Therefore I have jumped into latest samples project to check if it works there, but it seems to have the same problem.
I am using latest build 2023.12230 on Windows 11 24H2, latest nvidia driver 572.60, UE 5.5.3. My GPU is little older (quadro M5000M), but I guess that shouldn’t be the problem here.
I have tested this just now with more modern nvidia GPU and it seems to work. It is weird that my quadro M5000M can’t handle this, but I am happy the feature itself works.
While working with this UE Render Target → TE TOP workflow over past few days, I have noticed that it takes considerable amount of time (about 3ms on modern nvidia GPU) to move the texture to TE’s TOP input. This doesn’t seem to be the case for TE’s TOP outputs, these seem to take only fraction of a millisecond.
Please may I ask if this is expected behavior, or is there a chance this might get faster somehow? In my case the frame budget is 20ms, so 3ms are quite a long time for me Thanks.
I have seen this behavior in project I am currently working on, but when I jump into TouchEngine-UE-Samples-1.5.0 and use the Render Target example there, it seems to be the same. The only thing I have changed within the sample is Render Target size - I have set it to 4096x4096. I have just been looking at frame time while I deactivated parts of BP_UESample_TOP_03_RenderTargetIn. I am using Synchronized sync mode - it lets me easily see frame time difference. Here are the times I observed:
active scene capture + running TE + passing input texture to TE + passing output texture from TE = ~26.5ms
active scene capture + running TE + passing input texture to TE = ~26ms
active scene capture + running TE (no texture being sent in or out) = ~23ms
active just scene capture (TE not running) = ~19ms
running just pure viewport render without anything else = ~8ms
I am not sure if those 3ms to pass input texture to TE are expected here - it just felt a bit more heavier than I was expecting. But maybe I am missing something - I haven’t profiled this setup so far, I guess I should look into that and see if I could gather something from it.
I have now been looking at traces of both scenarios:
TE running, no input texture
TE running, with input texture
Both scenarios were tested in Synchronized sync mode. Trace of the first one shows TouchEngine Component takes ~8ms, while the second one shows TouchEngine Component takes ~11ms.
I have captured traces using the TouchEngine-UE-Samples-1.5.0 with slight modifications. I have disconnected On Frame End from BP_UESample_TOP_03_RenderTargetIn example to get rid of texture output. Also I have bumped up Render Target to 4096x4096.
However when I use smaller resolution of Render Target (like 1920x1080), difference between TouchEngine Component times becomes less obvious - just 1ms.
This makes me think I might have misinterpreted the timing as I thought it is the TE input that adds the time, while it was actually the whole TE processing that added more time (as the texture was bigger it took longer time to cook it internally?).
This brings me to following RFE that could help in these situations.
Did you try Delayed Synchronized and playing with the input buffer size? Or I misunderstand your issue.
I am looking at traces and what I see takes time in BP_UESample_TOP_03_RenderTargetIn is the Scene Capture, which takes more time the larger the texture is, since it’s a render through a virtual camera in some ways.
I am sorry - I feel like I have generated confusion around this topic. I have realized that passing TOP input into TouchEngine-UE doesn’t add any special processing delay - it was just internal cook time of TouchEngine that increased with TOP input (which makes total sense). Please feel free to disregard this “heavy input TOP issue” - it was wrong thinking on my side. Thanks