I want to spill some feedback related to VFX graph.
Everything is based on Unity 2020.3, so if something has been already implemented/fixed in 2021 then just ignore it. Also I excluded from the list most of the things that are already known or planned.
It would be very nice if it was possible to add an empty subgraph without drag and drop from project files. There is an “Empty Operator Subgraph” node, but there is no “Empty Subgraph” with asset selection slot. Currently to add some subgraph I must search the project for it.
ExposedProperty is a small, but very nice and handy addition. In my opinion there should be very similar helper in Mecanim (animator) and shader system. (I think both shaders and vfx uses the same hash method, so it could be part of main package)
Separate inputs/outputs for channels - this is a really great feature that is missing in shader graph. In VFX graph I can easily connect single x, y, z channels or even swizzle them (xxx, zyx), while the shader graph is very bad in this (why???).
Direction attribute is confusing. There is no documentation in Standard Attribute reference, so at the beginning I had no clue such a thing exists. The only mention about direction can be found in docs of nodes Position From Cone, Sphere, etc. It was even more confusing in 2019 when I wanted to set velocity based on the sphere surface. Above node names has no word ‘direction’ in the name, there was no documentation for nodes, so at that time it was magic for me.
For some reason save asterisk (*) shows up in the graph window after opening it for the first time and other time there is none. Sometimes to save the graph I must press Save once, and other time it requires two clicks to get rid of the star. In short, save system behaviour is confusing/strange.
It would be great if gizmos for properties and blocks were correct when space is changed between local and world.
It might be required sometimes to change global VFX speed. There is an option to do so via VFXManager.fixedTimeStep, but it changes the value in project settings unlike Time.timeScale or fixedScale. Maybe there should be additional property for this?
I still don’t know if shader keywords are supported in VFX graph and why Particle Output uses reference property names instead of names set in the shader graph, but improved display of properties would be amazing. Creating a custom property drawer for the shader used in Output Particle XYZ would be really great, but even simple categories/groups of properties would be a nice improvement.
Global VFX properties - It might be useful if there was a way to set global properties for all graphs on scene or application. It sounds like a decent feature, but actually I am not so sure about that, because it can be “hacked” anyway.
Local variables - I mean something like get/set attribute does, but for operator blocks. You can input to some variable and place the output anywhere you like (I think amplify and unreal has it). It would improve readability of more complicated graphs as it allows to avoid connections between operators and systems. The same applies to shader graph.
Better crash debugging and info about errors - I experienced many, many crashes of Unity caused by VFX graph, but except log there is nothing that says what happened (but for me log is hard to read).
I would report many bugs with reproduction steps if I knew what actually caused it. For example It looks like there are some reserved names that should not be used as graph property names - at least this is my conclusion after testing and searching for bug some time ago, but I still don’t know if this is true and there is no way to check it. If there are such things like reserved names it should be mentioned in docs.
There is a missing tool to measure performance or debug particles (profiler). Sometimes I make more complicated operator blocks and I would like to debug if it produces the correct result. Other time it might be useful to see what is particle lifetime, id, rotation or anything else.
VFX batcher - I know this is a planned feature, but I think it’s a very important feature, that’s why I want to mention it here.
Alpha erosion in default shader. I know I can implement whatever I want in a custom shader graph, but I think alpha erosion is super common in VFX, so why not make dropdown to enable alpha erosion instead of default opacity fade?
Recently I found this site https://vfxdoc.readthedocs.io/ made by @ThomasVFX and I think it is a piece of good work. It’s a shame there is so much missing content currently, but despite this there is tons of useful information, so I wanted to say thank you for this initiative and effort you put so far to make it.
The last thing, but very important is about technical support from dev side. I think someone said something similar already, but it would be way more difficult to use VFX graph without your help. Also maybe it’s illusion, maybe they pay you better :p, but I think it is way easier to get answers here, than in other forum section, especially implementation details that only you can know and no one else. This opinion is not even based on my own threads, there are many helpful posts, you even provide images and gifs how to make or fix things.
In short, I just feel like you care and this gives me positive experience. Keep it up and thank you!