This is a regression introduced in 9.3.2 by an internal change in how DepthRenderer.isReady interacts with scene.isReady(). SelectionOutlineLayer uses the depth renderer under the hood, and it ended up stamping the depth shader onto the main pass’s draw wrapper. With frozen materials, the cached “ready” state then prevented StandardMaterial.isReadyForSubMesh from restoring the correct effect, so the mesh got rendered with the depth shader (i.e. fully black).