[Fix] Fix additional shaders getting processed on WebGPU #5952
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.
On WPU in the LightsBaked example (and others using primitives) we create more shaders compared to WebGL. The reason is that we process the shader for WebGPU, and the hash value used to avoid this by getting a cached shader used VertexFormat.element.offset. This offset depends on the number of vertices of a mesh when non-interleaved vertex format is used. But as the offset does not affect the shader processing, there is no real reason to process the shader again - the result is the same.
Solution - use a newly added processing hash string which contains only data relevant to the shader processing.
Note: The actual difference in vertex format is already handled by the rendering pipeline, which is created per unique vertex format (similarly to how VertexArrayObject is used on WebGL).