I came up with a solution that seems to work pretty well; it’s a sprite, Jim, but not as we know it. Specifically, it’s a circular triangle fan that is aligned to the cameras position, then perturbed in the material to intersect the visible horizon, rising normal to the surface. The net effect is that the corona is always visible and is correctly projected no matter which direction you’re looking or how close you are to the surface (within reason). Here’s a zip that contains the material, an example corona mesh, and an example blueprint, just extract it into your Content folder (I hope that’s how it works).
You can UV map the corona mesh however you want, and how it’s aligned to the camera is up to you. In my example I use the tick event of the blueprint, but it’s possible to do it in the material, I just didn’t bother to figure it out. Note that it has to face the position that the camera is at, not the direction the camera is looking. Also, if you use non-uniform scaling, you’re going to start getting weird stretching. There’s two parameters, the radius of the planet at 1,1,1 scale, and a minimum altitude to stop crazy things happening when you get really close to the surface. The minimum altitude will depend on the thickness of your corona I think, you’ll just have to play around and see what works.
Also, I had an idea that might improve the effect; you could instantiate multiple corona meshes that are fixed in place in world space, and are faded in or out when the angle between where it’s facing and where the camera is gets too large. This would make them seem to be more attached to the sun than the camera. For performance, don’t create a bunch of meshes, just make a few and reuse ones you’ve faded out.