pack geometry shader geometry compute shader dx11
Credits: Super thanks to Vux, for making DX11 pipeline freely available for VVVV.
Alpha 0.4 Tsukemen
Instance Noodles is a modular patching system for Compute & Geometry shaders in DX11/vvvv. Inspired by the fast & pleasant workflow in stock vvvv this lib aims to bring the same visual flow programming approach to GPGPU calculations & procedural geometry manipulation.
In 0.4 there are some new nodes, eg Subdivision (DX11.GeomFX), compute Zips, a nice LineBuffered(DX11.Layer) module (courtesy of Dávid “Microdee” Morass) and some general improvements such as adding a (hidden) thread group size pin and modernizing the default group size to 128 on all compute nodes. +Quite a few other bits & bobs I’m too lazy to list. Note that the pack now depends on ‘happy.fxh’ to be next to it in /packs in order to work.
•vvvv >= 35.7 + Addon Pack •DX11 pack >= 1.1 •https://github.com/everyoneishappy/happy.fxh •a GPU that supports Shader Model 5
To install everything via VPM: https://vvvvpm.github.io/#InstanceNoodles
To install manually just place in /packs folder.
For more frequent updates, bug fixes and issue reporting: https://github.com/everyoneishappy/InstanceNoodles
Substantial amounts of code borrowed from Vux, UNC, Microdee et al. If there is something that should be credited that's not just let me know.
MIT License- feel free to use in your creative & commercial projects. If used in production a credit is very appreciated:
Kyle McLean /http://everyoneishappy.com
I’m also very happy if you are doing something interesting and want to employ me on a project basis.
yeah super contrib !
seems that you can learn a lot from that contrib :)
Thanks for sharing
Great stuff! I shall look forward to diving in...
Thanks chaps, hope it's useful
Thanks Kyle, massive work! Seems like Instanced_Transform(GSFX) is not included.
Ahh that is from an earlier prototype. You can maybe try to replace it with TransformBuffered (DX11.GeomFX). Which patch was it in still?
GetSlice (Transform Buffer) help
Very comprehensible. Very clear girlpower. Thank you.
amazing and inspiring stuff! Several geomfx's were missing from couple of modules like PassThrough. It was simply not there not even a red node. That could have been fixed if geomfx's were put into *pack*/geomfx instead of next to the modules, well this applies to fx's as well (*pack*/dx11).
@microdee haven't been able to replicate, you wouldn't happen to have gsfx files of the same name already elsewhere would you? And you are right of course about proper pack structure, I did it a bit different as I don't want all of these fx files coming up in my nodelist when they are mostly just meant for use in their companion module. Only checked the one you mentioned though.
just a note:
if you disconnect the Geometry from DisplacmentMapping (DX11.GeomFX).v4p
it crash...just add an AvoidNil (spreads) before the Max Elements pin
@circuitb thanks for the tip. I'd been using a max node to prevent a 0 being sent, but a nil would indeed pass through that. I don't get it here, but it might be a card behavior difference. Do you have that same behavior with all of the DX11.GeomFX in this pack? will put the fix in all of them if so.
Hmmm, how to use the framedelay nodes? i figures out that the delay incomming data by one frame but they are not framedelays in a traditional vvvv way and dont allow to patch loops.
@elektromeier afaik it's not possible to make that kind of patched feedback loop with compute shaders in vvvv. You might check this with Vux though. The nodes are just there to provide last frame's data, which is still useful for many algorithms.
for me the crash also occur on my laptop...
so gtx780ti or gtx970m
the bug occur when you don't have a Geometry input feeding this chain
1/ IID (instancer module)
2/ Gsfx without IID output like the VertexNoise (DX11.GeomFX) or DisplacmentMapping (DX11.GeomFX)
3/a final Gsfx pass with IID input like TriFrame or PipeWire
please see patch and report
@circuitb great, will fix for next version, cheers :)
thanks for the contrib!
splinebuffer spline count works only up to number 4, is that intended?
how do i use buffer for a radius then?
also any advices how to make a gradient run throu spline? havent figured that one out yet :3
+ 1 for a per segment radius :)
yap thanks, everything works my bad :3
Is there a possibility to get rid of diagonals in PipeFrame (DX11.GeomFX)?
@matka I think you would have to do that in HLSL in the GS section of the shader in that module. Basically you'd need to compare the sides of each triangle and not emit geometry for the longest. You would probably also have to change the IID output as it may be variable then (eg equilateral triangles)
thanks, i'll try to do my best
Added extra technique to it for next version. Can't really add diagonal suppression as it's own module, as all of these expect and return triangles atm.
+some nice deformers, thanks to UNC for smooth normals trick.
just replaced alpha_0.1 with alpha_0.2 and nothing works anymore :(
I'm on win8.1 x64, GeForce 980m
Latest geomfx that use the smooth normals formula don't works correctly for me. Anyone tested this?
At the moment rest of the pack works good.
@Venkman I guess you should do a clean install of the pack
@aka is there something missing or red nodes? Or do you mean behavior is incorrect/unexpected?
just checked with Catweasel- Deformer (DX11.GeomFX) & SurfaceDistortions (DX11.GeomFX) seem to be fine. Wobble (DX11.GeomFX) had a broken reference to the gsfx file inside though. Will fix for next version.
You can replace the v4p file with this one if you want, should work then: https://www.dropbox.com/s/a72w5wca6qtpt36/Wobble%20%28DX11.GeomFX%29.v4p?dl=0
Having a bit of trouble with the Queue (Value Buffer) Help patch, after switching to my sound input, the non Value Buffer side works fine (bottom Preview), but the top is black. No red nodes, but just doesn't seem to be passing anything on.
@everyoneishappy No red nodes,,, everything works except this behaviour in Deformer (DX11.GeomFX) & SurfaceDistortions (DX11.GeomFX), wobble didnt try,, think could be because of the graphic card. will test in other computer.
That's kind of cool... but obviously not right. Let me know how you go on your other card. Funny it worked for us- are you on Nvidia or AMD?
Yeah at last I have a superglitch genomfx jejeje. I getting nice stills. Actually tested on an nvidia card in laptop.Thanks for the reply will try amd to check .
thx for the great update! everythingsfine with beta 34.2 64 bit under win 7.
I have superglitch geomfx like Aka-visuals, on win7 geforce GTX 560m.
hmmm, hard to fix without seeing it. From looking at it it seems like the streamout might be offset or misaligned.
Same with this one?
@everyoneishappy This one works,,,at last. whats the thing ??
can you upload same version of the other geomfx?
thanks man !
Just a couple small changes in the hlsl- 'technique10' to 'technique11' and 'SV_Position' to 'Position'. I'm guessing it was the latter.
just figure out this changes...try to fix it,,,thanks!
Nice Glitch :D
SplineBuffered does not work with latest 34.2 64bit.
Sorry it does work on 64bit but in my patch (both 32 and 64) I have to reselect it to make it work.
It seems like that the Control Points Per Spline is not spreadable, is that possible?
And, how to make it draw sharp edges on control points? The only way I ve found is to add a vertex before and after and very close to each incoming vertex but that is not optimal of course.
@io are you feeding it an empty buffer at the start?
You can't use control point binsizing with that shader, you can make it but probably better off as a separate version. If you have a look in the 'compute sources' girlpower you'll find one way of doing it (you'll still need to modify the hlsl quite a bit though).
Ok what about the sharp edges?
just for reference that might help others:
i've had issues installing the pack. many of the patches did not work - either the gsfx files were not loaded or the renderer did not output anything for whatever reason (even though the fx files did load fine, no red nodes).
i could get the whole thing running though after renaming the packs folder from "InstanceNoodles Alpha 0.2.1" just to "InstanceNoodles".
@motzi sorry about that- my bad. Should be right now- was just the 0.2.1 'fix' that had that problem I think.
a zip node for value buffers would be nice!
+1 Indeed! Or is there another way of combining buffers like zip does?
I had a look at adding zip/unzip nodes, seems like a good idea. I think this should be via plugin though & to be honest I had a lot of trouble to get started with DX11 plugins. If anyone can help me get sorted with some VS solution files to start with I'd be happy to take a crack at writing some though.
Thanks for the update man
super useful stuff
Here is a zip (3D buffer) node if anyone want to test it. It only has two inputs but they should be bin sizable.
Hej everyoneishappy, inside the Zip (3D Buffer) that ValueBuildZipIndices Plugin is missing.
@kimiki oops sorry here is the plugin too. Will probably use it for making similar zip nodes for all the other buffer types, unless someone has a suggestion for a better way.
this looks amazing. can't wait to spend some time learning with this.
Cheers Elliot! Feel free to hit me up on skype if you have questions or something is funky...
@moco, thanks I think that and a couple other shaders using the old uv interface are already fixed for next version.
@guest that should be fixed in next release. What other modules are you talking about? Kinect2GS is pretty much what you think it is I guess- get a mesh from your kinect2 textures. Note there is a bug in current DX11 (also fixed for next release) that prevents gsfx from loading properly- in the mean time you might try reloading the patch after hooking it up.
Every time I try to open the "02_DX11.GeomFX_Instancing.v4p" example on to the girlpower folder, my laptop stops working and then I need to force a restart by pressing the start button.
The other patches in the same folder are running ok.
I wonder if I am the only one having this issue, or if it´s just that my laptop is not capable to run it.
the laptop is a 2012 macbook pro, 4 GB Ram and solid disk with native windows 10 (I know is not the best option but it is what I have.)
Any suggestion would be helpful.
Thanks in advantage.
@panki does you Macbook have a discrete graphics card?
Noodles heavily leverages DirectX 11 and your GPU for performance so I hope tis nothing to do with Macbook Pros and their motherboards.
I had a similar issue instancing with an Intel internal gpu machine. It just didn't like instancing. Check if the DX11 girlpower for instancing works okay too.
Hi! and yes definitelly my MB have a very discreet graphics card.
the DX11 girlpower geometry instancing overview works pretty good.
Did you ever code the WireframeNoDiag Effect? Looking at the source code of WireFrame(DX11.Effect), I can see that the Wireframe and WireframeNoDiag method have exactly the same code.
Would really love to use Wireframe with no diagonals.
added some updates & house keeping, details just in the top description.
trying to make a simple tunnel/spiral with the splineBuffered module
but can't find a way to eliminate the mesh twisting
is there a trick to avoid that or is it by design in the gsfx?
@guest I didn't check your patch, but it's a known issue. It's basically because it's using a single up-vector, so that can cause the resulting transform to flip in some cases.
I heard (maybe from @Pedro?) that you can detect and correct for this. Not sure of the matrix math for that though. Happy to implement it if someone knows how that should work.
thanks for your reply,
i guess it's something like the "banking" parameter in c4d
will try to find more info on the subject and keep you posted!
hey guest, had the same problem a week ago.. just change the y and z input.
Thank you! I love this contribution. Makes complex shading accessible for not so code-savvy users like me :-)
@nilsfrid glad you like it :)
@miik @guest indeed you can sometimes avoid the issue by changing the up vector, but there will still be angles that will cause the issue, you're just shifting where that occurs really (which is often enough to get by)
@Alexey please see here:
TLDR: it's on github.
@everyoneishappy Sorry, I have not seen this before. Thanx a lot!
first time i really checked out your pack and i must say its freaking awesome.
all those brilliant help patches are artwork.
thank you for sharing
Hey cool, thanks Chris!
Make sure to also update happy.fxh (or use VPM for install)
Thank you I love it @everyoneishappy
I noticed that very often LinearSpread needs to be removed the first time and then ctr-z to let it work properly. Is this my gpu paranoia? or anything else? thanks
@ddf Can you make a simple example patch that shows the problem? I guess it might be something to do with the binsizing logic, that happens before the actual spreading and should usually be triggered on open, on binsize pin change etc
@ddf those are images, not patches ;)
I think you'll probably find that setting or changing the spreadcount will have the same effect. At a guess I'd say that you might be setting the spreadcount before hooking them up to anything downstream, and maybe it's somehow not calculating binsizes internally since it's not needed at that point.
in this way it works, thanks @everyoneishappy
Is it possible to get a displacement on the Displacement Mapping node that will move vertices along 1 axis in both directions? For example feeding a red/green vector texture, or using a texture as Strength?
@io not sure if I get what you mean? Did you see RGB mode? If that's not what you are after maybe make a forum thread?
Can you give an example for Kinect2GS? I can't seem to understand how to get anything out of it. Thanks
@ZvivZ you need to feed it both a world and a normals texture. You need to convert the world texture to normals with a pixel shader. I think the shader for the normals is not included. I'll try to update it with a help patch + shader soon
Hey there! Firstly, thanks for this great contrib! I have just started digging into it and its very powerful indeed, so it makes me happy as well;)
As I am rather a beginner regarding shaders and particulary instancing (actually i am learning that on the fly from this pack), I am struggling a bit in one particular point:
I am basically trying to build instanced tentacle meshes using SplineBuffered, simillar to the Feedback (Transform Buffer) example / help patch, but build out of actual meshes instead of separate primitive instances.
I have already acheived this successfully, also implemented separate structured buffer for individual spline's up-vectors, but what I am struggling with is the "gsTubeSQ" technique (or rather its respective method) of the geom shader - I am just not able to extend that to use the same radial tube resolution as the standard "gsTube" technique / method. In the original geom shader's gsTubeSQ method the radial resolution ("TUBE_RES_SQ") has a hardcoded value of 4 for a reason, so I linked the it to the standard "TUBE_RES" variable, which works except it just doesn't draw all the splines in their whole - some are just unfinished. Obviously it has to do with themaxvertexcount parameter of the method. I have tested that if I set the whole spline resolution or controls point count to very low values, all splines get drawn completely even with higher tube resolution values.
It seems that the standard gsTube method deals with the vertices count in different way but I just can't wrap my head around it.
Any suggestions pls?
hi, reinstalled vvvv and the package with latest versions and checked other dependencies. renderer does not Show anything beside background in patches like spherical spread (3d buffer) help , sprite buffered etc even though there is no red boxes. also tried modifying spread counts or deleting and readding them as written above, but that didn't work neither. could you suggest any solution so that i can view the outcomes on the renderer?
@pankao seems to be sorted here: https://discourse.vvvv.org/t/splinebuffered-suqared-technique/17038
@idyll does dx11 work for you in general ? and what about compute shaders (can check dx11 girlpower folder for both)
hi @everyoneishappy, thanks for reply. I solved the issue afterwards, it was about the default settings of vvvv about gpu. Making default setting 'high performance NVIDIA..' fixed it.
anonymous user login