In Metal, MTLVertexDescriptor + [[stage_in]] is very similar to input layout in DX11, but [[ stage_in ]] does not support packed vector type, why?
The problem is metal::float3 need to be align on 16Byte boundary, while metal::packed_float3 does not.
If i don't use [[ stage_in ]], vertex buffer and constant buffer will be forced to use the same [[ buffer(...) ]] name space, while in DX11 constant has it's own namespace, which means the same cb would have to use different index in DX and metal shader.
Any suggestions? Thank you!