Move GPU mesh collection out of the extract phase, in preparation for bindless textures. #14127
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.
Currently, the
MeshInputUniformdata, which is used to prepareMeshUniformdata for use by the GPU, is constructed during the extraction phase. This poses a problem for bindless materials. With bindless, we need theMeshUniformto contain the index of the material in a buffer, and the material isn't prepared until after extraction, at which point it's too late because theMeshInputUniforms have already been built. By movingcollect_meshes_for_gpu_buildingto the newCollectMeshesphase, which runs after asset preparation but before mesh queuing, we fix this ordering problem.Because an up-to-date
RenderMeshInstancesis no longer available during extraction, the lightmap extraction system has been reworked to fetch the mesh ID directly from the main world instead of going throughRenderMeshInstances.This patch was broken out from the larger forthcoming bindless patch because it has performance benefits on its own. It allows the extraction phase to finish quicker, which allows main world systems to resume faster.