I am probably understanding the process wrong because I am just guessing at how it’s done as I can’t find much info, but how do you get the kind of backgrounds that you see in games like Uncharted 4 in which you have what appears to be a highly detailed but 2d painting more or less, and then behind that is the skybox.
Can I have multiple skyboxes? Certainly making huge terrains just for the distant view is too expensive. I want to keep high res textures and have nice backgrounds without sacrificing performance.
Anybody accomplish something like this or know where to find a good resource on how it’s done?
Perhaps it’s just an illusion, but where does the skybox begin? Is that modeled terrain in the mid distance? Maybe I need to go back and play the game, but I think when the player moves those spires and things in the mid distance will change in perspective relative to the player- as if they were one image and the far distance was another. I hope that makes sense.
I don’t think they’re doing anything too special. They are modelled and they use some sort of LOD system, so the real far ones that are not part of the skybox are just some proxy low poly geometry.
I guess the problem I am having is that the player can have a pretty high perspective (bird flight sim) so I can’t just box the map in with trees or mountains like so many FPS or 3PS games do. I mean, some maps I might. But say I am in an open desert, and I want the player to be able to see a good ways and perhaps some mountains in the distance. Shall I just extend a lower res terrain to say, the limit of the cameras view and then fade it somehow to hide the abrupt stop (or customize the skybox to blend into the scenery.)
I guess I kind of understand what I need to do, I just have to learn how to make skyboxes and take the time to draw some out that will relate to each scene specifically.
Welcome to real time rendering, where everything is made with smoke and mirrors, including smoke and mirrors.
GTA V holds up pretty well to being flown over, but they really do just use simple low resolution meshes for the distance and basic flat plane trees in the distance. It’s just when you get close that they switch to better looking models. The trick is doing it when the player doesn’t notice.
Also, for Planetary Annihilation (not a Unity game) the trees, rocks, greeblies, etc. turned into 3 intersecting planes when you zoomed out far enough.
They needed to hold up to any angle since the game plays on a sphere that you can spin around and zoom in out of at any point. The game takes each prop and basically takes a screenshot of it from each axis (actually the relevant gbuffer information; normal, albedo, specular, and depth) and render those out on the planes. The shader additional hid planes when viewed edge on. Kind of basic stuff for impostor trees, just with 3 axis aligned planes rather than just 2.
The vast majority of the time during gameplay most of these surface details are rendered as the impostors. If you know to look for it you can see the pop between them, but most people won’t otherwise. Most members of the dev team didn’t even realize we done this for months after it went in.
The important thing to realize is the color, silhouette, and lighting only needed to mostly match with the real model. If a model was green on one side and red on another it wouldn’t work as well, and was more noticeable on a few props that had significant color differences like that. We used a two 96x32 texture strips for each impostor. I’d originally planned on using a cubemap to handle both sides properly, but it just wasn’t needed.
I can’t think of any, honestly. I learned a lot of these techniques by looking at what other games have done, and coming up with solutions on our own. I vaguely remember reading up on some of these in game developer magazines early on. There might be some out there still, like hidden in some Speed Tree article. But they’re not going to be Unity specific.
I’ll be sure and bookmark this thread then. Lots of good info and resources here. I wish I had the time and opportunity to work as an intern or something for a small development team – some professionals who really know what they are doing. I can pick stuff up pretty fast, but right now a lot of my time is spent finding good resources and learning stuff the slow way by trial and error.