Fix vertex shader generation for draco-compressed RGB per-vertex color #7581
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.
Fixes #7576.
Draco-compressed models with RGB per-vertex color were causing vertex-shader compilation failure because the existing per-vertex-color shader assumes RGBA (vec4) per-vertex color, but the decoding glsl injected decodes to RGB (vec3).
This PR detects when
COLOR_0
is getting decoded tovec3
and wraps access in the vertex shader in avec4
.There's also a pair of new spec models generated by running BoxVertexColors and a modified variant with vec3 vertex color through
gltf-pipeline
for Draco compression.I tried using draco-compressed versions of the "Vertex Color Test" model, but the
checkVertexColors
test function wouldn't produce the same results, I suspect because of compression artifacts making a difference when rendering at 1x1.