We’re working on a space sim and are using some creative level streaming trickery in order to make massive scale environments, but one thing we can’t seem to get working is a “Classic” style skybox along the same vein as UT1/2004.
Even dissecting the engine’s base “BP_Sky_Shere” shows that it is merely a large sphere and not actually using a “render last” strategy like we’re used to in classic level design.
I had a theory to attach a camera to the player pawn’s camera component and have it render last, but there will still be objects that are outside of this sphere’s influence that will be culled by the sphere itself.
We’ve been banging our heads against a wall on this one.
TL;DR: We can’t have maximum distance on our skysphere, we need a class skysphere implementation of an infinite distanced skybox rendered behind all objects, the way skyboxes used to be, is this possible?
There’s no way to make an opaque mesh draw last atm. The choices for opaque are what you said - make it so large that it never occludes anything.
Translucency can be made to be infinitely far, you can draw a sphere (of any size) around the camera, set bDisableDepthTest to make it draw over opaque pixels and a low TranslucentSortPriority to make it draw over other translucent meshes. The downside of this approach is that it will be slightly more expensive than an opaque implementation.
Coming back here in 2016. I’m also looking to find a way to let the engine draw the Skybox last (so it does not waste time including it in the depth test).
In 4.11(maybe earlier) there is now a setting in the Mesh detail panel (under “Rendering”) where you can tick “Treat as background for Occlusion”.
I’m guessing this pushes that particular mesh back in the render queue. (?)
I’m trying to do something similar but my problem is rendering the background to infinity so there’s no parallax in the world regardless of player position, does anyone know how to do this?