shader uniform/input port bug

Steps causing the bug to occur

  1. create new shader
  2. attempt to use input port names as uniforms
  3. shader error

Have you found a workaround?

Asking what the uniforms are on VUO forum.

Other notes

  • Vuo version: 2.3.2
  • macOS version: macOS
  • How severely does this bug affect you? It prevents me from completing a specific task with Vuo.

It is a bug for input ports to be created and not be able to be used as uniform variables.

1 Like

We’ve accepted this as a deficit in Vuo’s documentation.

Well, that’s great.

I do want to take a moment to emphasize something though, a point I believe is cause to consider escalating this as more than a documentation issue. Not to be redundant, but in case I inadequately expressed this…

The uniforms of a shader are the inputs to a shader.

Across many more node systems than just QC, a uniform maps equally to an input. Since a uniform is literally the input of a shader, there is a natural 1:1 mapping. If someone sees an input port that is a float with “width”, and then uses it in code, but it isn’t available…maybe there is something wrong to a level that transcends documentation being a true fix.

The vuo protocol input names on the graph level for this use case could be anything in the world. The ISF uniform names could be anything in the world. One needs to change to match the other for the system overall to actually make sense. (I say that cautiously, but I do believe it transcends the subjective.)

I feel as though even with documentation of this fact in the side panel (which is better than nothing), it is very undiscoverable and arbitrary to have the link between these very different variable names. In addition, resolution in the frag shader is a vec2, really a vec4 via the vertex shader usually with z and w unused in frag. But here we have two floats for width and height. There isn’t even a direct 1:1 mapping of data types, which is even worse than the discrepancy in port names and uniform names.

Now…again, I have to emphasize that overall I really do like this code editor and find it very promising. On many levels, it is a joy as-is. It would be fantastic if it led to something like this working in the normal compositions.

I understand the potential distaste for changing the vuo protocol input port names, and having to mod the ISF framework doesn’t feel like an excellent option either. Maybe there could be a utility glsl file to do the equivalence, that ISF framework loads through a line up top? I haven’t dug into that. I do appreciate that it might feel so weird to change one or the other that it winds up as a dead end. The other thing…I would assume this glsl stuff will still work in vuo after Metal backend conversion through compatibility modes, but if that’s not the plan, spending a ton of time on it could be a drain I guess.  

We improved the documentation in Vuo 2.4.1. We’ll consider defining GLSL uniforms with names matching the protocol ports in the future, if we can do it in a way that won’t break existing compositions.