Error exporting project

Thought I’d try a test export for a project I’m working on. I’ve updated visual studio 2019, uninstalled 2017 that was still installed and still fails to export. Any suggestions of anything else to try? This is a code one people, clear the area!

Error.zip (11.3 KB)

Seems like some shader files are conflicting on export. Look at these lines:

Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/Assets/AlphaOverlay_TextureFX.sdsl] with location [Assets/AlphaOverlay_TextureFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/BlueMarbleDataLinesSub.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/Assets/Simulation_ComputeFX.sdsl] with location [Assets/Simulation_ComputeFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/GPU_Sprites.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/Assets/DrawParticles_DrawFX.sdsl] with location [Assets/DrawParticles_DrawFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/GPU_Sprites.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/Assets/TransformTexture_TextureFX.sdsl] with location [Assets/TransformTexture_TextureFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/BlueMarbleDataLinesSub.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/Assets/AdjustNormalMap_TextureFX.sdsl] with location [Assets/AdjustNormalMap_TextureFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/BlueMarbleDataLinesSub.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/Assets/Negative_TextureFX.sdsl] with location [Assets/Negative_TextureFX] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/BlueMarbleDataLinesSub.vl/BlueMarbleDataLinesSub.vl.sdpkg]
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/Assets/ParticleStructPos4Vel4.sdsl] with location [Assets/ParticleStructPos4Vel4] from Package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/Tree5/Tree5.sdpkg] is already loaded from package [C:/Users/Cat/Documents/vvvv/gamma/Exports/src/GPU_Sprites.vl/GPU_Sprites.vl.sdpkg]

How does your project structure / folder structure look like? Do you have multiple folders where you placed shader files?

@Elias yes, I have some subfolders of ‘libraries’ and I guess these may have similar shaders. But you have to put shaders next to the .vl for them to be picked up do you not? I guess I can move everything into one folder and relink. What is the best practice when building projects for export, one source folder no subs?
Another question, how do I deal with external assets I current have them in Assets next to the main vl file.

globally, every shader has to have a unique name. because Stride builds one shader database for an application scope, based on shader file name. the errors seem to indicate that there are multiple files with the same name in scope… if not, it might be an issue with how our build system manages them.

1 Like

Is there any way to share shaders from another folder then, or do I have to rename any offenders just so they are next their .vl file? You can’t drag and drop them like vvvv…

if the shader differs in code and is part of the same project, then you have to rename it.

Say you have a document Foo.vl referencing VL.Stride and a shaders folder beside it with shaders/ATextureFX.sdsl, shaders/BTextureFX.sdsl etc. Since VL.Stride forwards the shader effect node factory the shaders folder will be scanned and all files matching the pattern will be turned into nodes visible from within Foo.vl as well as all other documents referencing Foo.vl
It behaves the same way as if you’d have created a patch inside Foo.vl - it would also be visible from other documents referencing Foo.vl
Therefor sharing should come quite natural as long as the shader file names are unique.

My thinking here was to try and make libs that can be shared with other patches, and so they needed local shaders, and stay in a folder, linked to their local shaders. I guess I’ll just put everything in the root, and all the shaders in one place. Thanks for explaining how I broke it :)

that is what elias said, have a central library document that has the shaders folder next to it. all documents that reference this document should see the shader nodes.

I have several like that… I have put everything into the root, moved all the shaders, linked everything up, and my patch has gone from 60fps to 2fps. No node is showing abnormal load, and deleting all the content patches dont improve the frame rate. Indeed deleting everything bar the renderer, and it is still 2fps. even after a restart. I still dont get an export!

New Text Document.log (97.8 KB)

Ok, fixed the frame rate, as asset that I had repointed to, was still not right for some reason, and the error pink node was in an unrelated patch in a different vl document. Still doesnt export. I’ll go through all the shader I guess and see if anything is odd

I just did a little example project on my own kind of following the layout you describe (Root.vl, LibraryA.vl, shaders/FooBar_TextureFX.sdsl) and the good news is that I get an export error as well:
Exec: : ERROR EXEC(0,0): [AssetCompiler] Assets [C:/Users/elias/Documents/vvvv/gamma/Exports/src/LibraryA.vl/Assets/FooBar_TextureFX.sdsl] with location [Assets/FooBar_TextureFX] from Package [C:/Users/elias/Documents/vvvv/gamma/Exports/src/Root/Root.sdpkg] is already loaded from package [C:/Users/elias/Documents/vvvv/gamma/Exports/src/LibraryA.vl/LibraryA.vl.sdpkg]

So it seems that the export adds the same shader to both of the generated project files. This should be considered a bug.

Trying a different layout now (Root.vl, LibraryA/LibraryA.vl, LibraryA/shaders/FooBar_TextureFX.sdsl) and getting the same error. Again the shader was added to both generated project files. With project files I mean if you inspect the src folder generated by the export. Again, bug on our side.

So before we come up with a fix, workarounds would be

  • Everything goes into the Root.vl file, no libraries
  • Or, after the failed export go to Explore Output -> src -> Root and delete the Assets folder and open and build the solution Root.sln file manually with Visual Studio
1 Like

I’ve created an issue for it: https://github.com/vvvv/VL.Stride/issues/445

Deleting the assets folder and building doesnt help, I’ll move everythign into one file I guess, shouldn’t be too hard, its not that complex. Glad its not just me :D
For model and image assets, I’ve got them in a folder called Assets next the main.vl, is this a problem given that the build is making an assets folder too, or is it ignored until runtime, and I can copy that over?

I think a folder named Assets should be fine. But as you said you’ll need to copy that folder manually and also add some logic into the patch that those paths get resolved correctly at runtime. This is still an issue we didn’t tackle yet at all - how to deal with asset files on export. Ideally the export dialog should have some kind of options where one can define what goes where etc.

Upcoming builds should contain a proper fix. See linked issue for details. Thanks again for the report.

1 Like

I just copied the assets folder next the exe, and it works :) Thanks for the help (everything is in one .vl)

  1. Detected package downgrade: VL.UI.Core from 2021.3.3-0111-gbe21407aa4 to 2021.3.2. Reference the package directly from the project to select a different version. On exporting I get these in the error list, I haven’t used anything newer than 21.3.2 as far as I am aware, so is this released like that, or am I misreading the error?

Download Generating project files (this may take up to a fe.txt (31.17 KB)

( I have added elementa to this project since then, could it be that?)

Adding latest issue from riot

If you get the error as reported by catweasel then please navigate to USERFOLDER\.nuget\packages and delete the VL.Stride folders then try the export again. We had “wrong” packages hosted the last week.

All of those:
image

1 Like

Hi, I found one more failure with custom shaders - preview 48:
I have folder with vl docs (doc1.vl and doc2.vl) and shaders folder inside with two shaders.
doc1.vl loads shader1.sdsl, doc2.vl - shader2.sdsl.
compiler error:

[AssetCompiler] Exception in command Build step list (762 items): System.InvalidOperationException: Commands Import stream D:/_SRC/vl.mixer/Bin/src/doc1.vl/Assets/shader1_TextureFX.sdsl > shaders/shader1_TextureFX.sdsl and Import stream D:/_SRC/vl.mixer/Bin/src/doc2.vl/Assets/shader1_TextureFX.sdsl > shaders/shader1_TextureFX.sdsl are both writing shaders/shader1_TextureFX.sdsl/path at the same time

What is confusing here: dok2.vl is actually not using shader1_TextureFX.sdsl at all.
the solution is to do both effects in one doc - so it’s not that big problem.
just want to mark it down.