Dx11 version of player

Hello,

I’ve spent about two months with vvvv and I’m in love. Great program which is complemented by a great community.

The project I’ve been working on (VDJ software) is VERY dependent on the player ex9 node (I string together decks of photos to create .gifs on the fly). My current version is fully functional – but it requires an excessive amount of RAM (upwards of 8 gigs when I have 4 picture decks of ~100 pictures loaded) and it occasionally pushes my processor to its limit.

I have a, perhaps misguided, desire continuing to use this picture deck approach (I think it would be more efficient to convert these decks of pictures to some video format?). In this interest I think it would be worth updating the current player node to dx11. However, I don’t know that updating this to dx11 will fix any of these problems.

Does anyone have intuition on this problem? Specifically:

  • Will there be improvements in RAM usage by updating to dx11 nodes?
  • Will there be improvements in CPU demand by updating to dx11 nodes?

I’d also appreciate any nodes/code that would be helpful to reference while working on this project.

Thanks!

Don’t think dx11 would help your use case…

You might use 64bit vvvv if you’re not already. Maybe also look in to compression options eg dds-converter

@everyoneishappy, thanks for the reply.

I’m definitely using 64bit. I’ve never heard of .dds files, thanks for the tip.

So if I were to convert these to .dds files, queue and play them using ex9 player I will get some kind of performance boost? I would think I would at least get a reduction in occupied RAM, but should I also expect decrease in CPU load?

Will there ever be a situation where having an dx11 version of player would be more efficient?

I feel mostly lost when I read these things:ex9.dataflow, dx11-vvvv-pipeline. But, it seems to imply that using a dx11 pipeline would offer some advantage for my setup.

To more completely explain my set-up. I have at least 4 instances of Player (EX9.Texture Timebased) that pass through FullscreenQuad (DX9), are grouped with a Group (EX9) and sent to a renderer Renderer (EX9).

In the future I’d like to include chains of image processors as well - likely dx11 based effects. This dx11-faq implies that by having dx9 and dx11 mixed I might get performance dips. Would this still be true for my case?

Sorry for the very specific questions about my set-up. I’m just lost in the trees and would like to make the most informed decision before moving forward.

Cheers.

Did you experiment with FileTexture (DX11.2d.Pooled)?

@sebl)) I haven’t done much experimenting. I have tried ((node:FileTexture (DX11.2d.Pooled). It works at loading a bunch of pictures simultaneously, but doesn’t really work for moving through those pictures? Unless there is a way to pull specific slices from the array that is generated (I couldn’t find a node that was compatible with it’s output).

Also the load time for FileTexture (DX11.2d.Pooled) is significantly greater and seemingly more computational intensive than a player-(ex9.texture) pre-loading the same number of images.

I overlooked some features of player-(ex9.texture) in my first attempts. For example I didn’t know about I/O threading.

With this in mind I think I’ll be able to make player-(ex9.texture) work. But I’m still worried about mixing dx9 and dx11 renderers in the same patch. Any best practices for this?

@Xminus1 :

for pooled texture version use “No Mips” option, otherwise loader will generate mipmaps which is why it takes more time.

Also using dds will allow almost zero cpu cost (since you can just get image and upload it to gpu without any processing step). Gif/Png or Jpg will cost you cpu time since you need to decrompress to a format that gpu can understand.
So here you trade disk usage for cpu usage.

If you want to reduce dds size, use either dxt1/bc1 (1 bit of alpha, so no alspha ;), or dxt5/bc3 for textures with alpha (technically pretty much all textures nowadays benefit from block compression scheme)

@vux

Thank you for your reply. I now have something that is working as well or better than ex9 player. After it’s polished I’ll be sure to share.

Cheers

Hi,
I’m in the same way to make ex9 player working with Dx11.
Could you give me some details about how you made it working as well or better than ex9 player ? Did you used some specific lodaer like FileTexture (DX11.2d.Pooled) ?
Thanks,

yep… no text …

@aural sorry for not answering this question! I was distracted IRL.

Here is the solution I’m working with right now.

NOTE:
It doesn’t have all of the original functionality
It is not optimized.

I’m especially interested in the optimization side - but I have no idea how to do it.

Let me know if you have any thoughts, or ideas.

dx11_player.zip (38.2 MB)