The issue here is that `float3` implicitely casts to `float *` which is then passed into the `float4` constructor.