Current compiler implementation performs dependency sorting on the components, giving shader authors the flexibility to define components out-of-order. However this feature is rarely used in practice and the compiler sorting process some times introduces surprises as the component definition order may differ from source code after the sorting. This becomes an issue when the engine assumes the order of input/output components in shader source code, and forces the user to specify layout(location=x) attributes.
Current compiler implementation performs dependency sorting on the components, giving shader authors the flexibility to define components out-of-order. However this feature is rarely used in practice and the compiler sorting process some times introduces surprises as the component definition order may differ from source code after the sorting. This becomes an issue when the engine assumes the order of input/output components in shader source code, and forces the user to specify layout(location=x) attributes.