diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 63082a8995..1c8c89d6db 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -533,10 +533,21 @@ void ModelMeshPartPayload::startFade() { void ModelMeshPartPayload::render(RenderArgs* args) const { PerformanceTimer perfTimer("ModelMeshPartPayload::render"); - if (!_model->_readyWhenAdded || !_model->_isVisible || !_hasStartedFade) { + if (!_model->_readyWhenAdded || !_model->_isVisible) { return; // bail asap } + // If we didn't start the fade in, check if we are ready to now.... + if (!_hasStartedFade && _model->isLoaded() && _model->getGeometry()->areTexturesLoaded()) { + const_cast(*this).startFade(); + } + + // If we still didn't start the fade in, bail + if (!_hasStartedFade) { + return; + } + + // When an individual mesh parts like this finishes its fade, we will mark the Model as // having render items that need updating bool nextIsFading = _isFading ? isStillFading() : false;