You render the internal object as before, then adjust the transparency of the resulting image by rendering the alpha-textured shell with the blend mode set to glBlendFuncGL_ ZERO, GL_ ONE_MINUS_SRC_ALPHA(GL_ ZERO, GL_ ONE_MINUS_SRC_ALPHA). The alpha values from the shell are used to scale the image of the object internals that have been rendered into the framebuffer. The alpha values themselves are also saved into the alpha buffer.
Now depth buffer update is disabled, and the surface textured shell is rendered, with the blend mode set to glBlendFuncGL_ ONE_MINUS_DST_ALPHA, GL_ ONE(GL_ ONE_MINUS_DST_ALPHA, GL_ ONE). In this way the internal part of the object, which has already been scaled by is summed with the surface textured shell, which is blended by , giving the desired result.