"SceneKit: error, missing buffer [-1/2]" when trying to pass uniforms to a metal shader

I've attached a SCNProgram to a SceneKit's geometry, and I'm trying to pass uniforms to the fragment shader. In my simple code snippet I just pass the output color to the fragment shader as a uniform, which returns it as an output value.

I've already tested the shaders and they work, in the sense that I can succesfully rotate an object in the vertex shader, or draw an object in a different color in the fragment shader, etc... but the problem is when I pass the uniforms. This is my fragment shader:


struct Uniform
{
     float4 color; 
}; 


fragment float4 myFragment(MyVertexOutput in [[ stage_in ]], 
                           constant Uniforms& uniforms [[buffer(2)]]) 
{ 
     return uniforms.color; 
}



And this is how I try to pass the uniforms in my SceneKit+Swift code:


SCNTransaction.begin()
cube.geometry?.setValue(NSValue(SCNVector4:SCNVector4(0.0,1.0,0.0,1.0)), forKey: "uniforms.color")
SCNTransaction.commit()


But my object (it's a cube) is not even drawn (it's black), and I get this error:

2016-04-01 01:00:34.485 Shaded Cube[30266:12687154] SceneKit: error, missing buffer [-1/0]

Hello Ramy,

Finally, did you find out where was the problem? Because I have the same issue here.

Thanks in advance.

"SceneKit: error, missing buffer [-1/2]" when trying to pass uniforms to a metal shader
 
 
Q