Features I would want to see

@Arycama @Reanimate_L and anyone else following these feature / usability requests, I have mirrored and detailed some of the same suggestions you have here (string swizzle masks, and per channel output) in a separate thread that started as a report of a UI/UX bug report with the Swizzle node.

Fortunately many of these issues were already solved by VFX Graph’s UI/UX so hopefully some of that will get refactored back into Shader Graph.

The only official word I’ve gotten from anyone at Unity about this being addressed is from Gytis in Customer QA who spoke with the Shader Graph team that said they are resolving the issue (in some way) in an upcoming feature release, though, no indication as to which release exactly.

@amisner2k Thank you and we cannot stress this enough. This seems to be some attempt at value type abstraction / simplification? More confusingly why this isn’t aligned with the new Unity Math library is a still an unsolved mystery.

My open and honest feedback to the teams at Unity: These idiosyncratic VectorN “supertypes” only muddle and complicate usability and consistency across the whole of Unity, under the guise of a “clever” simplification / abstraction that no one is asking for. Please keep simple value types simple by not over-abstracting them like this. Even from the “solution in search of a problem” perspective of justifying these objected-oriented supertypes, a “Vector1” is a categorical oxymoron by any practical definition of “Vector” I’m aware of in practicable today. But if you really believe in these supertypes, at least go all in and put them all over Unity, in the Math library, in Visual Scripting, etc. Consistency is generally more important than a particular style or structure. I reasonably have my doubts that is the exact plan however and I don’t think much beyond the silos of these individual projects has been outlined in roadmap talks?

To that point, what is the larger shared vision for simple value types in these new packages and features going forward? (Including: Unity Math library, Shader Graph, Visual Effect Graph, Visual Scripting Graph, DOTS, and Unity in general.)

There is apparently a disconnect between some of these projects in the approach being taken here. In the case of Shader Graph and VFX Graph the supertype approach isn’t actually helping anyone of any skill/experience level work with simple value types in a consistent way across Unity. This consistency is extremely valuable as it not only allows for a common jargon among teams collaborating (e.g. Technical or VFX artists communicating with Software Engineers) but it also provides a path to transition from node based programming between code based programming in both professional and educational settings.

I understand from experience that directed node graphs and code generation systems require a certain level abstraction to be implemented, but ask that you pursue the virtues of minimal abstraction or at least a sufficient veil of consistent usage in node graph types to their code equivalents. That is to say, to call a Shovel a Shovel, not a GardeningToolBucket1 with some hidden “Shovel, Rake” type selection occurring automagically and/or tucked away in a drop down menu on the blackboard.

Thank you for all your work thus far to make these exciting new features a reality and thank you for consideration / hearing me out in nitpicking these details to serve as feedback for refinement.

+1 to more control over render state. I understand that simplicity is king, but in this particular case it rules out too many things. In our (real-world) project it’s a major obstacle - there is no way to render depth-only materials with meshes deformed in shader.

This still…
Although indeed if there was just more control in the nodes offered it might suffice.
Like there is a “normal from texture” (actually “normal from texture height-map”, poor naming?) which works but I want to pass in a specific texture channel only, maybe an alpha channel for instance, I don’t think I can do this.
I want to copy the node code and make a small change but nope

I agree this custom node “API” very much needs a rehaul to resolve such issues. This seems related to the underlying known issue with how ShaderGraph deals with channels in general, including swizzling, vector casting, constructing, splitting, joining which I linked to previous in this thread. it’s ultimately a very foundational aspect of shader programming or parallel programming of any type. VFX graph has already solved this conundrum quite elegantly and I’ve been told by Unity QA this will be address in ShaderGraph as part of a larger feature update / refactor. I was then assured by Unity developers @theor-unity here on the forums working on Visual Scripting that there will be some sort of greater “unification” of these paradigms / workflows, part of a set of frameworks, APIs, and tools which is now being referred to as “Graph Tools Foundation” that will be shared among all visual node graph tools / workflows in Unity. This is why I suspect that these plans / initiatives are all becoming interrelated, and the solution to your reported issue and mine (and @Arycama , @Reanimate_L 's ) will be resolved in broader strokes as part of this larger plan that has been laid out by @LaurentGibert at Unity.

Current vector channel swizzle/selection workflow usability comparison (Shader Graph vs Visual Effect Graph) https://forum.unity.com/threads/swizzle-node-usability.752291/#post-5726695
More info on Graph Tools Foundation from Laurent Gibert, Sr Product Manager https://discussions.unity.com/t/810492

A followup on this issue --the most indefensible naming convention is being corrected (Vector1 is being renamed Float) in Shader Graph as we can see in this pull request: https://github.com/Unity-Technologies/Graphics/pull/1979
This is curiously noted as being “for better understanding for artists” …which seems to imply this is such an oddity one could only imagine “artists” to benefit? not for better understanding for those in or adjacent to virtually all fields of math and science for which a “vector” is very well defined by 2 or more scalar values. But, whatever. I can’t complain too much when it’s being resolved in any case. Kudos to all at Unity who pushed for this in support of usability and consistency. :smile:

Heh, yea I’d say it more benefits those of us who actually have written HLSL or GLSL code or had to read it. But it’s also as you said, just technically more correct since there is no such thing as a “Vector 1”. :stuck_out_tongue: Every time I saw that in Shader Graph I died a little inside.

Missed this - don’t see why they can’t share Exactly the same components for maths!

what’s the name of that “if” node? branch still uses conditional according to the documentation

+1 to be able to resize the Blackboard contents by Ctrl +/- or Ctrl+Scroll.

I use graph inspector 99.9% of time to edit properties, but default tab is Graph settings. Please make Node settings default tab or make it customizable.