Support gl_InstanceIndex in shaders #1262
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In order to write useful shaders for instanced rendering it's necessary to have access to the gl_InstanceIndex builtin. Bevy's current shader reflection incorrectly identifies gl_InstanceIndex as a vertex attribute, preventing it from being used. This skips gl_InstanceIndex in the reflection code in the same way that gl_VertexIndex is already being skipped.
A more complete solution might be to enumerate all glsl builtins rather than just special casing them as needed but I decided to keep this change minimal because this seemed like code that was likely to be rewritten soon anyway. If someone thinks it's worth expanding to the more general version, I'm happy to do that in this PR.